Age | Commit message (Collapse) | Author | Files | Lines |
|
Closes: OS#2422
Change-Id: Ie658a7f161103bb6f631ab0508e45e55fb42a442
|
|
Change-Id: I9afc36e2304f1060615219e88dd28821fb74e300
|
|
Functions not exported in gtp.h should be static.
There's no need to mark functions as extern in the .c file.
Change-Id: Ie61d5c6e0ae45ef3885911cedf71c826ed1705d0
|
|
Change-Id: I0d7493404ea05ce2e795958041bbb6cb75a04d31
|
|
If the version received is not known, pdp is then uninitalized so we
should not be using it. Let's return an error to inform the caller.
Change-Id: Ib3e23b61a3521bd3c9002d3165ca8eff4361a35e
|
|
Change-Id: I99b73f7a6d4100789fa92021c6ec9117869c881b
|
|
Change-Id: I00db99ba8de3f3d90e85bf593ed31555eedb439b
|
|
Change-Id: I1bc65ef9af1144779ee91a2c9b9887233ad15671
|
|
Change-Id: Idbc6e4c912b958bde5916b87ec53c3c4db70bee0
|
|
Change-Id: I843071a090e877fd529e1e0b799df3585bf836d8
|
|
Change-Id: I636c81d0c0ff53c97e6aedbc00f90c1325a3d607
|
|
Change-Id: I65eb80db4bcdc6da4d267bef3b907d3f98942a2e
|
|
Before this commit, when an MS requested an ipv4v6 context osmo-ggsn
returned an error stating the type was unknown, and this text was
printed in the log:
Processing create PDP context request for APN 'ims'
Cannot decode EUA from MS/SGSN: f1 8d
This patch has been tested with an MS running the 3 types of addresses:
- IPv4 and IPv6: no regressions observed, the context is activated and
packets are sent to the ggsn.
- IPv4v6: Wireshark correctly parses request and reponse, and then
ICMPv6 traffic from both sides. Finally I see the MS using the IPv4 and
IPv6 DNS addresses advertised and TCP traffic over IPv4 (because
probably my IPv6 network setup is not correct). I also checked I can
disable/enable data (pdp ctx delete and activate) several times without
any issue.
Change-Id: Ic820759167fd3bdf329cb11d4b942e903fe50af5
|
|
Change-Id: I09e37e25fd118ac0a54ab788304d3f5083463050
Fixes: Coverity CID#174335
|
|
The string buffer allocated for the IMSI must be sized for a length
twice the number of input bytes (each byte has two nibbles) plus 1
byte for NUL. We missed the "twice" part :/
Change-Id: I1ecaa811815ae522af71feabc5d0c1ea8b4edde9
Fixes: Coverity CID#174336
|
|
gtpie_decaps() always had this right, but the encapsulation functions
treated it as 8-byte fixed length IE.
I hope we had a chance to convert all of this to the normal libosmogsm
tlv_parser one day. This would have one description table for all TLV
types which then is used from encoder and decoder.
Change-Id: I48471f2735511806ac424b5ffc1929e85bb156f3
|
|
Change-Id: I6ab7bfb31f93f52f9f6b1b5880dcb2c232bba794
|
|
extended from https://github.com/osmocom/openggsn/pull/2
Change-Id: I31b3e4b378e74bb5a0a2f54af6d2a15b629876cf
|
|
Change-Id: Id69d957d0860ee49e7f0db5c64ab8ba976f8c8d6
|
|
Change-Id: Ia048abcd80f29581c6ac02cd7f534f2617005671
|
|
libgtp should have proper API documentation, let's start with the
gtpie.[ch] parts.
Change-Id: I97df5bd3c8dcc5c97a114c8c6abadabf33147b05
|
|
Change-Id: Ide487e34884c8356694246f43c3f1f562357304c
|
|
Change-Id: I33f65e404217e717bd795e5229c8d9456a7b3739
|
|
It might be useful for any user of libgtp who uses libosmocore so let's
make generalized version of it available as part of installable header.
Change-Id: I79aba10ef989384a28f059c30899e65c771ae5e1
Related: SYS#3610
|
|
GTP sequence numbers on GTP-U are optional for G-PDU type messages (i.e.
user-ip messages). Let's allow the user to specify this behavior by
a new pdu_t.tx_gpdu_seq flag. The flag is enabled by default to stay
compatible with the prior behaviour.
Related: OS#2519
Change-Id: Icf22a2ddd5c4a968ef5bda7c202b921d93fb49e6
|
|
Let's introduce a couple of #defines that make the code much more
readable.
Change-Id: I3635d679fd54507274b46e99a02bdbbe41d7684e
|
|
Adresses two "TODO Should be avoided" comments about an extra memcpy()
before sendto() that can be replaced by a single sendmsg() call with an
iovec array: 1 record for the GTP header + 1 record for the user payload.
Change-Id: Ie332a6b15972330fcf540753898eb84ecb84fe24
|
|
in Change-Id I68ae49a765828fa681054c68bf7f5e74dbe48ad2 we introduced
a new struct member that breks ABI and API.
Change-Id: Ie631880155513b1b78d1e9dd473dc5dc50e05943
|
|
Osmocom has maintained this program since about 7 years now, while
the original author / copyright holder has completely disappeared.
With the introduction of Osmocom-style CTRL and VTY interfaces,
the way how the program is used and configured has substantially
changed. In order to avoid confusion in terms of configuration file
format etc, let's rename it to OsmoGGSN.
Change-Id: I2da30f7d4828e185bfac1a4e2d8414b01cbe4f9d
|
|
This is required once one wants to support multiple GSNs in a single
application.
WARNING: This breaks ABI compatibility, LIBVERSION must be adjusted
Change-Id: I68ae49a765828fa681054c68bf7f5e74dbe48ad2
|
|
The control interface handle never belonged into libgtp in the first
place. Commit 727417dd28813c697b4820aef9f54f249e30c4b8 should not
have added this to the shared library (used by sgsnemu, osmo-sgsn, ...),
but to some private state of the GGSN.
Introducing a private context pointer at the same location will keep
ABI compatibilty.
Change-Id: I4f17516dae3e04114564828a3e5f6e2ea54212a5
|
|
* print destination address on sendto error
* print address length on conversion error
* log listening address
* log GTP version on PDP context errors
* fix incorrect logging message for unknown GSN peer
Related: SYS#3610
Change-Id: I0f8ad8687acb7f6f0eeeb962f007e87cca0c4c27
|
|
When a peer GSN receives a GPDU for an unknown PDP context, it sends
a GTP Error Indication. This Error Indication should be used to
delete the offending PDP context locally.
In GTPv1, the Error Indication contains some mandatory IEs using
which we can look up the PDP context and delete it.
The existing code only dealt with GTPv0 Error Indications which lack
those IEs and use the TEI in the header instead.
Change-Id: I3e843f9ef1d6fd7868cc992e083c0891d16b6da9
Closes: OS#2426
|
|
Change-Id: Iadd1fe3de7c476576a4409f22f5e84e9eade6b6e
|
|
For some reason Max' commits introducing the CTRL/trap interface
about one year ago didn't convert the IMSI to its actual textual
representation before usign it in the CTRL interface.
Let's clean that up by properly interpreting the IMSI.
Change-Id: I8b20d2e47a29de266d93a7ddd5e6877f7e346a63
|
|
* propagate error code from gtp_new() to caller instead of always
returning -1
* on socket-related failures log explicitly which kind of socket caused
error
* log expected GTP version for unexpected packets
Change-Id: Ie07f1e4246eb178838b7df21946a08a1f60f2084
related: SYS#3610
|
|
get_seq() is called also from contexts where GTP-U is used, and GTP-U
doesn't have sequence numbers. Thus, it is perfectly normal if no
sequence number and/or no S flag in the header is present.
Change-Id: Ie19b95bbb4427e547843a019f5213a231a9f83da
|
|
The gsn_t changed the size with the addition of the ctrl pointer.
Bump the SO version to not break osmo-sgsn/ggsn on upgrade.
Call the -dev package libgtp-dev to follow the rest of Osmocom and
to ease making releases here.
Change-Id: Iac4d6d2effde1a6b2f60b1e1b49c91513d5ca8c3
|
|
* as there are muptiple flags in the field, use plural
* print the flags as hex value, not decimal. Hex is customary for bitfields.
Change-Id: Ib23d80fae32b4e9fa146d82d8f5a1dada1a3cb2b
|
|
An fopen("w") error used to omit the umask() call to reinstate the previous
umask. Also an fopen("r") at the top will never create a file and hence does
not need a umask set.
Instead, wrap the umask change and change-back tightly around the single
fopen("w") call.
Change-Id: If7d948e2f2ba47ecebba5614f18235a53b273d14
|
|
Fix errors during gsn_restart file path composition:
- possible buffer overflow because the wrong remaining length was fed to
strncat().
- missing path separator: put restart file in dir/gsn_restart instead of
../dirgsn_restart.
This assumes that the path separator is '/'.
Use talloc_asprintf() to fix all filename length problems and shorten the code.
In order to free the allocated path, add a free_filename label, and jump there
instead of returning from the fopen("w") failure branch. Also don't return from
"fclose failed" branch in order to free the path, remove the if {} braces.
Change-Id: Idf0a64ff45720aa818f2f9de1e8ba2fe2c82631b
|
|
Only generation of TRAP messages over Control Interface is supported so
far.
Note: requires corresponding version of libosmoctrl.
Change-Id: Ia76f841d2c9cd14394e9316fcd39f4060e23c898
Related: OS#1646
|
|
Change-Id: Iff0f1499660b12a47277b16a435efecb42fab038
|
|
This IE is known to be sent by a Cisco GGSN, and was added in
ETSI TS 129 060 V7.17.0 (2011-10) /
3GPP TS 29.060 version 7.17.0 Release 7
See https://lists.osmocom.org/pipermail/osmocom-net-gprs/2016-September/000711.html
Subject "sgsnemu failing to create PDP context with Cisco GGSN"
Tue Sep 13 08:00:37 UTC 2016
Tweaked-by: Neels Hofmeyr <nhofmeyr@sysmocom.de>
|
|
Fix an apparent typo that prevented queue iteration to find the correct item to
be removed. Instead, the first item was always returned. Calling code has been
analyzed to find that mostly this fault is not visible, since usually, the
first item is indeed the correct item to be returned. See mail thread
http://lists.osmocom.org/pipermail/osmocom-net-gprs/2016-June/000618.html
Date: Wed Jun 1 11:51:38 UTC 2016
Subject: "[PATCH] gtp/queue/queue_seqdel(): fix element check which always was true"
|
|
CC gtpie.lo
gtpie.c: In function 'gtpie_encaps':
gtpie.c:437:22: warning: variable 'm' set but not used [-Wunused-but-set-variable]
union gtpie_member *m;
^
gtpie.c: In function 'gtpie_encaps2':
gtpie.c:537:22: warning: variable 'm' set but not used [-Wunused-but-set-variable]
union gtpie_member *m;
^
lookup.c: In function ‘lookup’:
lookup.c:40:24: warning: typedef ‘ub1’ locally defined but not used [-Wunused-local-typedefs]
typedef unsigned char ub1; /* unsigned 1-byte quantities */
^
Still one compilation warning left in cmdline.c, but that code
is autogenerated.
|
|
Coverity complains about a 'Dereference before null check' on *queue.
So, push the NULL check further up.
Though I doubt that 'return EOF' is the proper way to handle allocation
failure, this patch is only about the NULL dereference.
Fixes: CID#57918
|
|
libgtp cannot understand its own update pdp request (in gtp v1)
Only require the conditional and mandatory fields for gtpv1 and not
others.
Refer to 3GPP TS 29.060 Ch. 7.3.4
|
|
pdp_getgtp1(&pdp, get_tei(pack)) works like pdp_getgtp0 for gtp0
connections.
Using get_hlen() for gtpie_decaps is used in other places to decode ies
for both version 0 and 1.
|
|
With no pdp parameter gtp_req() will send the packet to TEID 0 which is
not what we want. When trying to modify an established pdp context the
correct TEID of that context must be used.
|