aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2022-06-17install libosmo-pfcpNeels Hofmeyr5-5/+24
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 Hofmeyr9-11/+34
Related: SYS#5895 Change-Id: I9f4651b6bee457583aba99052dc82bbf675515e6
2022-06-16add pfcp_endpointNeels Hofmeyr5-0/+585
Related: SYS#5599 Change-Id: Ic8d42e201b63064a71b40ca45a5a40e29941e8ac
2022-06-16add initial FSM design chartsNeels Hofmeyr10-0/+207
Related: SYS#5599 Change-Id: I55474daa6bb204a0fe7da0a3bf888bb7d1c46677
2022-06-16add pfcp msg testNeels Hofmeyr6-0/+706
Related: SYS#5599 Change-Id: I30bdfc66a8f96c0639513ef406e9b66525dced6d
2022-06-16libosmo-pfcp: implement PFCP header and msg handlingNeels Hofmeyr5-1/+741
Related: SYS#5599 Change-Id: I3f85ea052a6b7c064244a8093777e53a47c8c61e
2022-06-16api: add osmo_pfcp_ie_node_id_to_str_c()Neels Hofmeyr2-2/+14
So far we had only osmo_pfcp_enc_to_str_node_id(), used for PFCP message to string conversion. It behaves like a common _to_str_buf() function, but has an inconvenient void* arg (for use with libosmo-tlv). Implement the string conversion as common _to_str_buf() and _to_str_c() functions, and call that from osmo_pfcp_enc_to_str_node_id(). That's useful for log messages coming up in a subsequent patch. Related: SYS#5599 Change-Id: I5c580bc510afce58a03dea0861db9630b063b2ae
2022-06-16pfcp ie: tweak CP Function FeaturesNeels Hofmeyr1-1/+1
The spec indicates three bytes of CP Function Features, but both wireshark and ttcn3 expect only one byte. This makes sense because only eight CP F.F. flags are defined. Drop those two always-zero bytes, hence pass the wireshark dissector and ttcn3 parsing without warnings. Related: SYS#5599 Change-Id: Icda891a2f3401e58f142f229465403d5dc8befe5
2022-06-16pfcp/Makefile.am: add missing pfcp_ies_auto.h entryNeels Hofmeyr1-0/+1
Even though it is a generated header, it must still be listed in pfcp_HEADERS. Related: SYS#5599 Change-Id: I6fbfe1fcd084f2d16334bb3e44d9891d9485d59f
2022-06-16libosmo-pfcp: implement/generate TLV and IE value codingNeels Hofmeyr5-0/+1565
Related: SYS#5599 Change-Id: I3069045b2d42dac88d955c636230adc64a7a4aa7
2022-06-16libosmo-pfcp: add pfcp_proto.h pfcp_strs.hNeels Hofmeyr5-0/+1148
Related: SYS#5599 Change-Id: I568b821e89007ed52eeefcdbcb6edd8052a8b5be
2022-06-16contrib: add PFCP cause and IEI string mapsNeels Hofmeyr2-0/+290
These help to build enums and value_strings using regexes. They are a verbatim copy from 3GPP TS 29.244 version 16.6.0 Release 16, paired with C-compatible and possibly abbreviated name strings. Related: SYS#5599 Change-Id: I7f37efd3cfc4c7b0ae49740ac15e461c52fae6e8
2022-06-16libosmo-gtlv: add TLIV capabilityNeels Hofmeyr18-173/+939
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 Hofmeyr13-0/+1442
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 Hofmeyr8-0/+1288
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 Hofmeyr12-0/+1258
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 Hofmeyr27-0/+707
Related: SYS#5599 Depends: I0a46b147ec6a76d909df28136cfd2b764b2c75ea (libosmocore) Change-Id: I4352dd8738a1a9de6ba2fc250ee8eef69c65ff1e
2022-06-11Initial empty repositoryneels0-0/+0