aboutsummaryrefslogtreecommitdiffstats
path: root/gtp
AgeCommit message (Collapse)AuthorFilesLines
2015-10-19gtpie_gettlv(): fix return value on specific error.neels/refactorNeels Hofmeyr1-7/+8
Make gtpie_gettlv() return an error if gtpie_getie() returned an error. Previously, openggsn would fail to complain about certain missing elements. Technically, a missing IE could be detectable from the *length value, but the code in gtp.c relies on the return value to detect missing elements, which did not work prior to this commit. For example: if (gtpie_gettlv(ie, GTPIE_EUA, 0, &pdp->eua.l, &pdp->eua.v, sizeof(pdp->eua.v))) { gsn->missing++; GTP_LOGPKG(LOGL_ERROR, peer, pack, len, "Missing mandatory information field\n"); return gtp_create_pdp_resp(gsn, version, pdp, GTPCAUSE_MAN_IE_MISSING); } If an EUA were missing in this code path, openggsn would fail to issue an error message. Since pdp and hence pdp->eua.l is initialized as all-zero, it would probably not do much harm besides failing to issue an error. I haven't checked all callers though.
2015-10-19cosmetic: gtpie_gettv0(): flow readabilityNeels Hofmeyr1-3/+2
2015-10-19comments: add/replace.Neels Hofmeyr1-9/+26
Sponsored-by: On-Waves ehi
2015-10-19comments: fix spelling/punctuation.Neels Hofmeyr2-10/+10
Fix spelling/punctuation and one numbering in comments. Remove an opening brace from a comment to not mix up cindent in vim. Sponsored-by: On-Waves ehi
2015-10-19rename gtp_dublicate (static func).Neels Hofmeyr1-11/+11
Fix spelling dublicate -> duplicate in comments and in (apparently only statically used) gtp_dublicate(). Sponsored-by: On-Waves ehi
2015-10-12gtp.c: fix an error log.Neels Hofmeyr1-2/+2
Fix: the code handles fd1u but prints fd1c.
2015-10-12gtp.h: rename gsn_t.dublicate to duplicate.Neels Hofmeyr1-1/+1
Fix spelling dublicate -> duplicate. This is potentially breaking API compat, but currently, no users of gsn_t.dublicate are known.
2015-10-12gtp.c: improve 3 error logs.Neels Hofmeyr1-12/+14
It would print the memory location of the address buffer. Instead, print the human readable host address and port. The current code base supports only IPv4, and thread safety is apparently not required, hence just use inet_ntoa(). (The IPv6 and thread capable version is 4 times longer and harder to read.)
2014-12-04gtp: Make these regions runtime debuggableHolger Hans Peter Freyther4-62/+43
2014-12-04gtp: Kill unused and non public methodHolger Hans Peter Freyther1-33/+0
2014-12-04gtp: Move to using LOGP for logging GTP packagesHolger Hans Peter Freyther2-307/+272
Make libgtp depend on libosmocore and use the generic logging infrastructure for it.
2014-04-04gtp: Speculative FreeBSD compile fix for htobe64Holger Hans Peter Freyther1-0/+4
2014-03-24gtp: add pdp_set_imsi_nsapiPablo Neira Ayuso3-9/+12
Encapsulate code to handle the teid with GTPv0.
2014-03-20gtp: fix endianness in teid field of GTPv0 headerPablo Neira Ayuso1-20/+17
This field needs to be in network byte order as well.
2014-03-20gtp: fix wrong binary layout for struct gtp0_header in x86_64Pablo Neira Ayuso1-3/+3
struct gtp0_header needs __attribute__((packed)) to make sure that gcc doesn't add a hole of 4 bytes to align the 64-bits teid, resulting in 24 bytes instead of 20 bytes. This was breaking gtpv0 in my gprs testbed with my x86_64 laptop. While at it, add also attribute packed to other headers just to make sure that gcc doesn't pad the structures with holes.
2013-07-27gtp: Use struct ul16_t/struct ul66_t to avoid compiler warnings in OsmoSGSNHolger Hans Peter Freyther1-0/+3
This is fixing various compiler warnings: In file included from sgsn_libgtp.c:49:0: include/gtp.h:397:48: warning: ‘struct ul66_t’ declared inside parameter list [enabled by default] include/gtp.h:397:48: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default] include/gtp.h:398:49: warning: ‘struct ul66_t’ declared inside parameter list [enabled by default] include/gtp.h:399:53: warning: ‘struct ul16_t’ declared inside parameter list [enabled by default] include/gtp.h:400:53: warning: ‘struct ul16_t’ declared inside parameter list [enabled by default] include/gtp.h:397:48: warning: ‘struct ul66_t’ declared inside parameter list [enabled by default] include/gtp.h:397:48: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default] include/gtp.h:398:49: warning: ‘struct ul66_t’ declared inside parameter list [enabled by default] include/gtp.h:399:53: warning: ‘struct ul16_t’ declared inside parameter list [enabled by default] include/gtp.h:400:53: warning: ‘struct ul16_t’ declared inside parameter list [enabled by default]
2012-11-06pdp: Mark the data as static as only pdp.c should access this dataHolger Hans Peter Freyther1-2/+2
2011-11-02GTP: don't use magic numbers for T3-REQUESTS and N3-REQUESTHarald Welte1-3/+10
2011-11-02queue: fix copy+paste mistake in debug statementsHarald Welte1-2/+2
2011-11-02queue: Add some more comments throughout the code (doxygen style)Harald Welte1-3/+27
2011-11-02queue: mark non-public functions as staticHarald Welte1-5/+5
This makes it a bit more explicit about what is the 'user API' of the code and what is just used internally.
2011-11-02queue: use %p format string when printing a pointerHarald Welte1-1/+1
2011-11-02GTP: use socklen_t where appropriateHarald Welte1-3/+3
this fixes some compiler warnings
2011-11-02Convert all code to Linux coding styleHarald Welte10-4073/+4431
After so many years of silence, we don't expect the original author to return to the project. To make things a bit simpler for us, we convert the coding style to what we are used to (Linux style). The conversion was made using the 'Lindent' script which is part of the Linux kernel.
2011-10-07optionally do not send recovery with sgsnemuHarald Welte2-1/+3
According to 3GPP TS 29.060 recovery is optional, add command line option --norecovery to remove this field in sgsnemu Signed-off-by: Yann BONNAMY <yann_bonnamy@yahoo.fr> Signed-off-by: Harald Welte <laforge@gnumonks.org>
2011-10-07Add optional RAI FieldHarald Welte2-0/+8
Routing Area Information is an optional Field described in 3GPP TS 29.060 7.7.3 it can be added with command line option rai, in the dot separated format MCC.MNC.LAC.RAC example : --rai 208.10.65535.255 Signed-off-by: Yann BONNAMY <yann_bonnamy@yahoo.fr> Signed-off-by: Harald Welte <laforge@gnumonks.org>
2011-10-07RAI fixYann BONNAMY1-3/+11
fix ggsn handling of create pdp context when RAI is included and Recovery field is absent Signed-off-by: Yann BONNAMY <yann_bonnamy@yahoo.fr>
2011-07-29GTP: Fix bug in update PDP context procedureIsabelle Kraemer1-1/+1
I use OpenGGSN to create/update/delete PDP context and I found a bug in the implementation: when the sgsnemu sends an "update PDP context" request, it receives back a "create PDP context" response. Below is the correction I made, I hope it helps.
2010-12-24libgtp: introduce cb_recovery() callbackHarald Welte2-4/+16
The cb_recovery() callback enables the user application to detect a change in the restart counter and thus start the appropriate recovery procedures.
2010-10-29Add support for GTP IE's from 3GPP R7Yann BONNAMY4-0/+33
This adds support for the followng new GTP Information Elements: RAT_TYPE, USER_LOC, MS_TZ, IMEI_SV Furthermore, it allows to specify those fields as sgsnemu command line arguments.
2010-10-20Fix warning on unused fscanf return codeEmmanuel Bretelle1-2/+6
Relevant output of make: gtp.c: In function ‘log_restart’: gtp.c:697: warning: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result Signed-off-by: Emmanuel Bretelle <chantra@debuntu.org>
2010-06-03Extend 'struct pdp_t' with a void *priv pointer for application useHarald Welte1-1/+2
2010-05-16[libgtp] Fix GTPIE parsing segfault on 64bit architecturesHarald Welte1-1/+1
Pointers are not always 4 bytes in size...
2010-05-15[libgtp] add comments with references to the GTP specification sectionsHarald Welte1-2/+19
2010-05-04sgsnemu: delete pdp context - teardown must be before NSAPIHarald Welte1-3/+3
in front of Cisco and Alcatel GGSN's, we meet the following error : 5 packets transmitted Disconnecting PDP context #0 openggsn[24940]: gtp.c: 2417: Unexpected cause value received: 193. Packet from 172.29.5.130:2123, length: 14, content: 32 15 00 06 00 00 00 01 04 02 00 00 01 c1 it is because in the sgsnemu requests packet, the teardown field is after the NSAPI field : No. Time Source Destination Protocol Info 24 10.940094 172.21.5.1 172.29.5.130 GTP Delete PDP context request Frame 24 (58 bytes on wire, 58 bytes captured) Ethernet II, Src: HewlettP_55:23:8d (00:11:0a:55:23:8d), Dst: Alcatel-_f6:8e:32 (00:d0:95:f6:8e:32) Internet Protocol, Src: 172.21.5.1 (172.21.5.1), Dst: 172.29.5.130 (172.29.5.130) User Datagram Protocol, Src Port: gtp-control (2123), Dst Port: gtp-control (2123) GPRS Tunneling Protocol Flags: 0x32 Message Type: Delete PDP context request (0x14) Length: 8 TEID: 0x00000739 Sequence number: 0xbc02 N-PDU Number: 0x00 Next extension header type: No more extension headers (0x00) [--- end of GTP header, beginning of extension headers ---] NSAPI: 0 Teardown Indicator: True [Response In: 25] Taken from http://sourceforge.net/tracker/index.php?func=detail&aid=2865662&group_id=68956&atid=522957
2010-05-04Fix various compiler warnings throughout the codeHarald Welte4-42/+42
Mostly signed/unsigned and typecasting issues Taken from http://sourceforge.net/tracker/index.php?func=detail&aid=1811517&group_id=68956&atid=522957
2010-05-04[SECURITY] Fix GTPIE parsing DoSHarald Welte1-1/+5
This is taken from http://sourceforge.net/tracker/index.php?func=detail&aid=1811511&group_id=68956&atid=522957 and http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg402969.html and addresses a DoS: The problem lies in the parsing of information elements in GTP messages, which is implemented in the gtpie_decaps function of gtp/gtpie.c file. The implementation has a bug that does not check if there are too many information elements in the message thus causing the software to loop infinitely in the while-loop. In addition, handling routine for the error situation had to be implemented outside the while-loop.
2010-05-04remove autotools-generated filesHarald Welte1-487/+0
All those will be re-generated by "autoreconf -i" anyway, so there's no point in keeping them in the repository. Also, the 'bootstrap' script is no longer working with recent autotools versions anyway.
2005-03-14Added new version of autotoolsjjako2-146/+249
2004-12-300.84 releasejjako1-0/+1
2004-09-17qos length bugfix and apple support plus header cleanupjjako8-55/+35
2004-09-10Improved configure script under Solarisjjako1-0/+4
2004-05-27Charging characteristics made optionaljjako1-4/+4
2004-02-05Added IP address alias capability for FreeBSDjjako1-7/+9
2004-01-28Added FreeBSD route capabilityjjako2-3/+3
2004-01-26 Fixed long constant warning on FreeBSDjjako1-5/+5
2004-01-19FreeBSD porting and IMSI bugfixjjako1-0/+16
2004-01-09Fix NSAPI bug in create pdp contextjjako1-8/+8
2004-01-09Removed NSAPI from version 0 create pdp context requestjjako1-5/+3
2004-01-09Removed stdint.h includejjako1-1/+1