Commit Graph

17 Commits

Author SHA1 Message Date
Philipp Maier 3c577269c8 gprs_bssgp_rim: add decoder for RIM ROUTING ADDRESS
We have a decoder for RIM ROUTING INFORMATION (bssgp_parse_rim_ri),
let's also have a decoder for RIM ROUTING ADDRESS (bssgp_parse_rim_ra.

Related: OS#6095
Change-Id: Ibca1f08906c4ffeecdae80d4e91c6c7b05fe4f8a
2023-08-10 12:01:25 +02:00
Philipp Maier 9e75544137 gprs_bssgp_rim: allow sending of encoded RIM messages
The API function bssgp_tx_rim() accepts decoded RIM PDU structs, encodes
them and eventually sends them. However, there may be cases where the
RIM PCU already exists in its encoded form. (This is in particular the
case when the RIM PDU is forwarded from GTP to BSSGP)

Lets add an API function bssgp_tx_rim_encoded to allow sending of
already encoded RIM PDUs

Related: OS#6095
Change-Id: Id4a793bbaf32d7b9d894dcc5be3faaf2f2d91d82
2023-08-10 10:17:03 +02:00
Philipp Maier a0d84832be gprs_bssgp_rim: also print NSEI when sending RIM messages
In bssgp_tx_rim we print source and destination address of the RIM
message we send, but we do not print the NSEI, even though this is also
an important address parameter.

Related: OS#6095
Change-Id: I2595abff28fc1d89c1409a2ca0194fedc6f15313
2023-08-10 08:16:05 +00:00
Vadim Yanitskiy 0578c288ec gb: fix uninitialized ptr access in bssgp_encode_rim_pdu()
Jumping to label 'error' before allocating memory and storing an
address to pointer 'rim_cont_buf' would result in passing garbage
to talloc_free().  Found with clang 14.

Change-Id: I9420615b64d3755fd9131e8561c516c39f83a15b
2022-07-04 20:50:17 +07:00
Pau Espin adef546ff9 Revert "gb: Fix naming and export symbol bssgp_enc_rim_pdu"
This reverts commit 43ad616e4b.

 _enc_ functions are for some ies while the _encode_ and _decode_ are
for the full pdu.  so the old name is correct.

Change-Id: Ib0b4a6fd7f8c96e4647a373541e3cccb324c6a11
2021-05-06 18:28:12 +00:00
Pau Espin 43ad616e4b gb: Fix naming and export symbol bssgp_enc_rim_pdu
The symbol was not in the list of exported symbols.
Take the chance that it was not used anywhere outside libosmocore to
rename it in order to follow similar naming as other existing APIs.

Change-Id: I534db7d8bc5ceb19a2a6866f07d5f5c70e456c5c
2021-05-06 17:56:47 +02:00
Philipp Maier 4d40047c50 gprs_bssgp: agregate RIM related code in gprs_bssgp_rim.c
gprs_bssgp and gprs_bssgp_util.c also contains code related to send and
receive RIM PDUs via BSSGP and also code to encode and decode RAN
INFORMATION PDUs. Lets move this to gprs_bssgp_rim.c

Change-Id: Icda279452962b06e552cb1361d2a27b7dc8a6b04
Related: SYS#5103
2021-01-29 21:27:18 +00:00
Philipp Maier 0a7e85ae81 gprs_bssgp_rim: cosmetic: connect routing identifier strings with "-"
The bssgp_rim_routing_info_discr_strs string list contains whitespaces,
when the whitespaces are replaced with a "-" the log output looks better

Change-Id: I26facd3dc160603da89dcd787cccf78b19a20f02
Related: SYS#5103
2021-01-26 16:36:53 +01:00
Philipp Maier c08a3fd30e gprs_bssgp_rim: add functions to convert a RIM-RI to a string
RIM routing formation structs can contain different variants of address
identifiers, so it is difficult for an API user to pick the _name()
function to generate a human readable string. Lets add
bssgp_rim_ri_name() and bssgp_rim_ri_name_buf() to make printing a
routing identifier easier.

Change-Id: Idca6bdccffe663aea71a0183ca3ea5bb5b59e702
Related: SYS#5103
2021-01-26 16:36:53 +01:00
Philipp Maier cf11411ebb gprs_bssgp_rim: add value strings for enum bssgp_rim_routing_info_discr
Change-Id: Idd06d2e3df0d60409a89a474018a9d97f7772090
Related: SYS#5103
2021-01-22 19:59:31 +00:00
Philipp Maier 8b19d06643 gprs_bssgp_rim: add value strings for enum bssgp_ran_inf_app_id
Change-Id: I581d1176f82d6657d6136c32daa9c76dffb802a6
Related: SYS#5103
2021-01-22 19:59:31 +00:00
Philipp Maier 139c4ae003 gprs_bssgp_rim: add value strings for enum bssgp_nacc_cause
Change-Id: I3354699555569c2b0bd1b4313cffd32a0cbeffe9
Related: SYS#5103
2021-01-22 19:59:31 +00:00
Philipp Maier 2b11fa9b3e gprs_bssgp_rim: fix bug in dub_tlvp_header()
When the length field is written the function writes the lower and the
higher half of the length at the same position, so the higher half is
overwritten with the lower half, this is wrong.

Change-Id: I3cce0b2796793554a421fd3ce8e749c52d22eaea
Related: CID#216670
Related: SYS#5103
2021-01-20 16:10:18 +00:00
Philipp Maier 836c6dac65 gprs_bssgp_rim: Return with EOPNOTSUPP on unsupported containers
The current version of libosmocore only supports NACC related RIM
application containers. If the parser detects a different application
container it returns with EINVAL. Unfortunately this means that the
caller can not distinguish if there is a lack of support or a real
parsing error.

Change-Id: Ib5ada3554c04259764352888cf95bc4460cb2a54
Related: SYS#5103
2021-01-20 16:09:00 +00:00
Philipp Maier 7741bc320c gprs_bssgp: add utilities to send and parse BSSGP rim PDUs
At the moment libosmogb offers no convinient way to send RIM PDUs. Also
parsing an incoming RIM messages into destination, source routing
info and RIM container is not available.

Change-Id: I18134fd9938040d2facb6beee3732628b167ce8c
Related: SYS#5103
2021-01-19 18:04:13 +01:00
Philipp Maier 7450f77f57 bssgp_rim: move bssgp_parse_rim_ri and bssgp_create_rim_ri to gprs_bssgp_rim
The function bssgp_parse_rim_ri() and bssgp_create_rim_ri() are located
in gprs_bssgp.c, since there is now a gprs_bssgp_rim.c module it makes
more sense to put them there. Also adjust the code a bit so that its
more intuitive to read.

Change-Id: Icd667f41d5735de56cd9fb257670337c679dd258
Related: SYS#5103
2021-01-18 21:11:44 +01:00
Philipp Maier 9828d28fc3 bssgp_rim: add encoder/decoder for NACC related RIM containers
BSSGP RIM uses a number of nested containers to signal RIM application
specific payload information in a generic way. Lets add the container
structurs required for NACC.

Depends: libosmocore If48f412c32e8e5a3e604a78d12b74787a4786374
Change-Id: Ibbc7fd67658e3040c12abb5706fe9d1f31894352
Related: SYS#5103
2021-01-18 21:11:44 +01:00