aboutsummaryrefslogtreecommitdiffstats
path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
2022-12-08fix coding of Network Instance IENeels Janosch Hofmeyr2-4/+6
Network instance names should be coded like in DNS, where each label is preceded by a length byte. Related: SYS#6192 Change-Id: I9d67464ef0f92b0512cfd6e48d203f8828a82a19
2022-11-23PFCP: add Network Instance IE in PDI IENeels Janosch Hofmeyr2-6/+22
So far the optional Network Instance IE in PDI IEs was not coded by libosmo-pfcp. Add it. Test it by adding Network Instance IEs in pfcp_test.c. osmo-upf needs this, because we are about to add support for Network Instance in PDI IEs, to determine which local interface to use for GTP tunnel mapping and encapsulation/decapsulation. Related: SYS#6192 Change-Id: I162299e70b4fb0c3fef8039d693ac7d3fe4df16a
2022-11-22pfcp_test: fix order of dependenciesNeels Janosch Hofmeyr1-1/+1
When LIBOSMOCORE_LIBS comes before locally built libs, for some reason libtool puts system lib/ first in LD_LIBRARY_PATH, leading to ABI breakage in pfcp_test when an older libosmo-pfcp is still installed. Change-Id: I63880c1b4f326687ce9a35584a55742c1016d72b
2022-11-22tests: use 'check_PROGRAMS' instead of 'noinst_PROGRAMS'Vadim Yanitskiy4-4/+4
When using 'check_PROGRAMS', autoconf/automake generates smarter Makefiles, so that the test programs are not being compiled during the normal 'make all', but only during 'make check'. Change-Id: I62a7b4d76c910b3fa90deb0d35a8fc36146d66e6
2022-11-21pfcp_test: add missing 'pdi_present = true'Neels Janosch Hofmeyr2-3/+4
test_enc_dec[8] includes a PDI IE in Update PDR. The PDI is optional here, so it requires setting a presence flag to true. This was missing, hence the PDI part was not being tested at all. Add this presence flag. This was probably a copy-paste error from testing the Create PDR IE, where the PDI is mandatory and has no presence flag. Change-Id: Idc70ae23f15d3af65f98557cc51a111f2e6d75c9
2022-11-21pfcp_test: init logging, for PFCP errorsNeels Janosch Hofmeyr1-0/+19
Initialize logging so that potential errors are shown by the test. Normally, pfcp_test does not cause any logging. However, I encountered a linking problem, which caused error logging from libosmo-pfcp, which was not shown because osmo logging aborted the program first. Change-Id: I32a99d27ff72edceacb2cf4f4cd996650bc10710
2022-11-03Support building with -Werror=strict-prototypes / -Werror=old-style-definitionHarald Welte5-10/+10
Unfortunately "-std=c99" is not sufficient to make gcc ignore code that uses constructs of earlier C standards, which were abandoned in C99. See https://lwn.net/ml/fedora-devel/Y1kvF35WozzGBpc8@redhat.com/ for some related discussion. Change-Id: I79c51b78d1b055361f9ef5434361847353791d0d
2022-08-24gtlv: test repeated IEIs to several struct membersNeels Hofmeyr2-46/+379
Test the behavior fixed by Ie37585178ff27306d425b75d8e407b71f92f1cdc Related: CID#275415 Related: SYS#5599 Change-Id: I994d0fb1f1435d2c27a8630a43fe106652ac6e41
2022-08-24gtlv: check memory bounds 3/3: encoding to strNeels Hofmeyr3-5/+5
See Id8d997c9d5e655ff1842ec69eab6c073875c6330 Related: CID#275417 Related: SYS#5599 Change-Id: I63d52a4f5dba32d3a3887dd9c5e42e1695fb2aa3
2022-08-24gtlv: check memory bounds 2/3: decoding TLVNeels Hofmeyr1-1/+2
See Id8d997c9d5e655ff1842ec69eab6c073875c6330 Related: CID#275417 Related: SYS#5599 Change-Id: I841da89112ccf70fcd0f60eb902445fb1712eb48
2022-08-24gtlv: check memory bounds 1/3: encoding TLVNeels Hofmeyr1-1/+2
Introduce a maximum bound of memory access to the osmo_gtlv API. Properly pass const-ness within the gtlv implementation. This patch adds membof_const(). The following patch will add the non-const membof() equivalent, which is not needed in this patch, yet. Coverity CID#275417 drew my attention to the fact that the gtlv decoding and encoding does not actually guard against access past the end of the decoded struct. We have not yet officially released libosmo-gtlv; also, osmo-upf and osmo-hnbgw so far only use the libosmo-pfcp API, which "hides" the gtlv API. Hence just change the API without a backwards compat shim. Related: CID#275417 Related: SYS#5599 Change-Id: Id8d997c9d5e655ff1842ec69eab6c073875c6330
2022-08-10debian packaging of libosmo-gtlv and libosmo-pfcpNeels Hofmeyr1-1/+1
Fix debian packaging, so far a copy-paste from osmo-upf.git crept in here by accident. Related: SYS#5895 Change-Id: Id7169fc67b4f8f77dfbeff9f199e6557ced67a53
2022-06-17install libosmo-pfcpNeels Hofmeyr1-2/+2
The first user of this is osmo-hnbgw, to implement GTP mapping via a UPF. Related: SYS#5895 Change-Id: If4465095000a898296d69d5b725507f909c87aa3
2022-06-17install libosmo-gtlvNeels Hofmeyr4-7/+7
Related: SYS#5895 Change-Id: I9f4651b6bee457583aba99052dc82bbf675515e6
2022-06-16add pfcp msg testNeels Hofmeyr5-0/+705
Related: SYS#5599 Change-Id: I30bdfc66a8f96c0639513ef406e9b66525dced6d
2022-06-16libosmo-gtlv: add TLIV capabilityNeels Hofmeyr11-117/+774
During code review, it was indicated that some TLV protocols that we will likely deal with in the near future also employ an I, and instance value of a tag. Add TLIV support. A usage example for a manually implemented TLIV structure is found in tests/libosmo-gtlv/gtlv_test.c. A usage example for a generated TLIV protocol is found in tests/libosmo-gtlv/test_tliv/. Related: SYS#5599 Change-Id: I0a076e54dfba6038cc779cb7c8f3967d212226aa
2022-06-16libosmo-gtlv: add C code generator for IE structs and arraysNeels Hofmeyr8-0/+856
Defining a protocol of message types with lists of IEs bears a lot of repetitive, copy-paste-error-prone writing out of data structures. Add a third layer to libosmo-gtlv, which allows helpful code generation. By non-repetitive data structures that briefly describe the protocol's messages and IEs, generate possibly repetitive IE list arrays and decoded-struct definitions automatically, avoiding grunt work errors. I tried C macros for this at first, but it became too convoluted. Generating C code that can be read and grepped makes things easier. A usage example is found in tests/libosmo-gtlv/test_gtlv_gen/. Related: SYS#5599 Change-Id: Ifb3ea54d2797ce060b95834aa117725ec2d6c4cf
2022-06-16libosmo-gtlv: add auto dec/enc to/from structsNeels Hofmeyr4-0/+568
Add osmo_gtlv_coding: describe the value part of a TLV (decode and encode), describe a struct with its members, and get/put readily decoded structs from/to a raw PDU, directly. With osmo_gtlv_coding defined for a protocol's tags, we only deal with encoded PDUs or fully decoded C structs, no TLV related re-implementations clutter up the message handling code. A usage example is given in gtlv_dec_enc_test. The first real use will be the PFCP protocol in osmo-upf.git. With osmo_gtlv_coding, there still is a lot of monkey work involved in describing the decoded structs. A subsequent patch adds a generator for osmo_gtlv_coding and message structs from tag value lists. Related: SYS#5599 Change-Id: I65de793105882a452124ee58adb0e58469e6e796
2022-06-16libosmo-gtlv: add generic TLV de- and encoderNeels Hofmeyr5-0/+806
An all new TLV parser supporting: - Any size of T and L (determined by callback function), - "Grouped IEs", so that an IE payload is a nested IE structure, - optional/mandatory/multi-occurence IEs, - decoding unordered tags (or enforcing strict order). Will be used for PFCP message decoding and encoding, a T16L16V protocol which requires above features. Upcoming patches add - translating PDUs to plain C structs and vice versa - TLV generator to reduce repetition a in protocol definition - TLIV capability Previously, the way we deal with TLVs causes a lot of code re-implementation: the TL decoding is taken care of by the API, but for encoding, we essentially re-implement each protocol and each encoded message in the individual programs. This API is an improvement in that we only once implement the TL coding (or just use osmo_t8l8v_cfg / osmo_t16l16v_cfg), get symmetric de- and encoding of the TL, and only need to deal with the value part of each IE. The common pattern of - store TL preliminarily, - write V data and - update L after V is complete is conveniently done by osmo_gtlv_put_update_tl(). Related: SYS#5599 Change-Id: Ib0fd00d9f288ffe13b7e67701f3e47073587404a
2022-06-16initial osmocom boilerplate source treeNeels Hofmeyr3-0/+51
Related: SYS#5599 Depends: I0a46b147ec6a76d909df28136cfd2b764b2c75ea (libosmocore) Change-Id: I4352dd8738a1a9de6ba2fc250ee8eef69c65ff1e