aboutsummaryrefslogtreecommitdiffstats
path: root/src/gb/libosmogb.map
AgeCommit message (Collapse)AuthorFilesLines
2021-02-19gprs_ns2: rework IP-SNS bindsAlexander Couzens1-0/+2
Introduce a `ip-sns-bind BINDID` vty command within a `nse` vty object. The ip-sns-bind defines the binds which will be used by the dynamic configuration with IP-SNS. This is only the first part which only uses the binds when doing a new SNS configuration. The outgoing add procedure will be supported in a later patch when the SNS fsm supports outgoing procedures. This is a behaviour change of the API and must be synchronized with the osmo-pcu. Otherwise SNS won't work with osmo-pcu. Related: SYS#5354 Change-Id: I9ab8092bf286e7d90e92f5702a5404425e959c84
2021-02-12bssgp_bvc_fsm: Consistent namingDaniel Willmann1-3/+3
bssgp_bvc_get_features_* are fsm "methods" and the name should indicate that just lika all other function names in bssgp_bvc_fsm.h Change-Id: I30fbbe36cdabf9635eaf4dfb1e93c8ce0f667b39
2021-02-12bssgp_bvc_fsm: Set/get maximum BSSGP PDU lengthDaniel Willmann1-0/+2
Add functions to get/set the maximum supported BSSGP PDU size by the NS layer. IPv4 and IPv6 should not matter since we can just enable IP fragmentation and send NS PDUs up to 2**16 + bytes. Frame relay does not support fragmentation and this is the reason we need to be aware of the maximum PDU size. Luckily with 1600 bytes the MTU in frame relay can hold a regular IP packet including NS/BSSGP overhead. On the NS layer this corresponds to the size of an NS SDU in NS-UNITDATA (3GPP TS 48.016 Ch. 9.2.10) Change-Id: I9bb82ead27366b7370c9ff968e03ca2113ec11f0 Related: OS#4889
2021-02-12gprs_ns2: add signalling & data weights for UDP bindsAlexander Couzens1-0/+1
Allow to assign a signalling and data weight to UDP binds. Those weights will be used when doing dynamic configuration over IP-SNS. This is only the first part which only uses the assigned weights when doing a new SNS configuration. The outgoing change weight procedure will be supported in a later patch when the SNS fsm supports outgoing procedures. Related: SYS#5354 Change-Id: I5133e4229377d44772a9af28628a2bc420fea34b
2021-01-28gprs_ns2: introduce gprs_ns2_vty_init_reduced() for the PCUAlexander Couzens1-0/+1
The gprs_ns2_vty_init_reduced() call initialized the ns2 vty without configuration nodes (except timeout). The PCU can be only configured by the BTS/BSC. It should not configured by vty. Change-Id: I4437da74bd48ba64d3f16ea67afc26c45b6d3ac9
2021-01-28gprs_ns2: remove api call gprs_ns2_dynamic_create_nseAlexander Couzens1-1/+0
The call was only introduced as workaround for the first implementation of vty. There is no need for this anymore. The configuration can just add "accept-ipaccess" to the bind to allow creation of dynamic ipaccess NSE. Change-Id: Ie924ead6da17657f3da334068c8ada82c8845495
2021-01-28gprs_ns2: drop gprs_ns2_vty, rename vty2 -> vtyAlexander Couzens1-2/+0
Drop the vty(1) code and replace it with vty2. The vty(1) was only used as intermediate to not develop a vty while developing a new code base behind. Users of gprs_ns2_ has to use the new vty code. API change which must be synchronized with osmo-pcu, osmo-gbproxy, osmo-sgsn. Change-Id: Ic2059e75d8ede8e5c29c4fef6be608ed79c8a97c
2021-01-28Revert "gprs_ns2: drop gprs_ns2_vty, rename vty2 -> vty"Pau Espin Pedrol1-0/+2
This reverts commit b306094448564e27bc031b519396f1b0e294b231. It was merged too quickly and patches for projects using related features are not yet prepared. Change-Id: I8a2aaf74a47de8f4f0adb37d16426d199788e3fe
2021-01-28gprs_ns2: drop gprs_ns2_vty, rename vty2 -> vtyAlexander Couzens1-2/+0
Drop the vty(1) code and replace it with vty2. The vty(1) was only used as intermediate to not develop a vty while developing a new code base behind. Users of gprs_ns2_ has to use the new vty code. API change which must be synchronized with osmo-pcu, osmo-gbproxy, osmo-sgsn. Change-Id: I8c3f2afecc74b78f7f914f7dce166cbcb63444eb
2021-01-26gprs_bssgp_rim: add functions to convert a RIM-RI to a stringPhilipp Maier1-0/+2
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-22gprs_bssgp_rim: add value strings for enum bssgp_rim_routing_info_discrPhilipp Maier1-0/+1
Change-Id: Idd06d2e3df0d60409a89a474018a9d97f7772090 Related: SYS#5103
2021-01-22gprs_bssgp_rim: add value strings for enum bssgp_ran_inf_app_idPhilipp Maier1-0/+1
Change-Id: I581d1176f82d6657d6136c32daa9c76dffb802a6 Related: SYS#5103
2021-01-22gprs_bssgp_rim: add value strings for enum bssgp_nacc_causePhilipp Maier1-0/+1
Change-Id: I3354699555569c2b0bd1b4313cffd32a0cbeffe9 Related: SYS#5103
2021-01-19gprs_bssgp: add utilities to send and parse BSSGP rim PDUsPhilipp Maier1-0/+2
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-18bssgp_rim: add encoder/decoder for NACC related RIM containersPhilipp Maier1-0/+16
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
2020-12-22gprs_ns2: add new vty2Alexander Couzens1-0/+1
Change-Id: I163279cf57e84198dc8c53e1c109f5a9474670e9
2020-12-16gprs_bssgp: add IE parser/generator for RIM Routing InformationPhilipp Maier1-0/+2
The RIM Routing Information IE (see also 3GPP TS 48.018, section 11.3.70) is used to control the flow of BSSGP rim messages at the SGSN. Change-Id: I6f88a9aeeb50a612d32e9efd23040c9740bc4f11 Related: SYS#5103
2020-12-15gprs_ns2_sns: rework IP-SNS initial remoteAlexander Couzens1-1/+2
The IP-SNS requires at least one initial remote address of the SGSN. However it should be multiple initial remote address instead of a single in case the interface might fail. Rework the SNS to support multiple initial remote addresses. Change-Id: I71cdbfb53e361e6112fed5e2712236d797ef3ab2
2020-12-15gprs_ns2: add gprs_ns2_free_nsvcs() to free all NS-VC of a NSEAlexander Couzens1-0/+1
Change-Id: I909443b540dbf75146297f1d7f94940690be6c0d
2020-12-15gprs_ns2: add member name to bindAlexander Couzens1-0/+1
Every bind will have a unique name. Add a name argument to all bind creating functions and require them to be unique. This is an API break but there wasn't yet a release with NS2. Change-Id: I8f1d66b7b3b12da12db8b5e6bd08c1beff085b3e
2020-12-15gprs_ns2: introduce NS dialectsAlexander Couzens1-2/+0
A NS dialect describes how the NS Entity interacts with different virtual circuits. E.g. ipaccess use reset/block on udp and is a dynamic connection. A single NS Entity can only support one dialect. This can be later used to protect a NS Entity against dynamic NS virtual circuits of a different type. It further allows a bind to support multiple dialects at the same time. Change-Id: Ia118bb6f994845d84db09de7a94856f5ca573404
2020-12-09bssgp2: Encoding + Decoding functions for BVC and MS flow controlHarald Welte1-0/+6
Change-Id: I9c89bb1c03550930c07aad7ff8f67129ee7a6320 Related: OS#4891
2020-12-09gb: Add beginnings of a new BSSGP implementationHarald Welte1-0/+21
Similar to ns2 superseding ns, we now also intoduce a next generation of BSSGP related code to libosmogb. However, this is not aiming to be a full implementation yet, but simply those parts that we currently need from the revamped osmo-gbproxy. The gprs_bssgp2.[ch] differs in two ways from the old code: * it separates message encoding from message transmission * it supports more recent specs / IEs bssgp_bvc_fsm.c is a genric implementation of the BSSGP BVC RESET/BLOCK/UNBLOCK logic with support for both PTP and signaling, both on the SGSN side and the BSS side. Change-Id: Icbe8e4f03b68fd73b8eae95f6f6cccd4fa9af95a
2020-12-08bssgp: Add osmo_tlv_prot_def for BSSGPHarald Welte1-0/+2
Change-Id: I7e4226463f3c935134b5c2c737696fbfd1dd5815
2020-11-30gprs_ns2: Introduce gprs_ns2_lltype_str() for link layer nameHarald Welte1-0/+1
Change-Id: I4b257c09d9d3c97d6da04240c7a74a95c7c93675
2020-11-24ns2: add support for frame relayAlexander Couzens1-0/+16
Add support for frame relay over dahdi hdlc device. It's supporting lmi by q933 and supports both SGSN and BSS. Change-Id: Id3b49f93d33c271f77cd9c9db03cde6b727a4d30
2020-11-06ns2: Add gprs_ns2_nsvc_state_name() to get the current state of a VCDaniel Willmann1-0/+1
Change-Id: I4c4c5b9142d7240ed452218e263ba12e2b70d1a0 Related: SYS#4998
2020-11-03libosmogb: Add a function to tx BVC RESET by nsei/bvciDaniel Willmann1-0/+1
This is needed for osmo-gbproxy where we need more control over BSSGP. Related: SYS#4998 Change-Id: Ifa769bce920a08cf93553dcb164a3fcf50162517
2020-10-27gprs_ns2: convert gprs_ns2_cause_str into an static inlineAlexander Couzens1-1/+1
Be consistent with other implementation of get_value_string() in libosomocore. Change-Id: Ic79757df8683e0461c04f7ef9279e4fe645eb821
2020-10-27ns2: add value strings for ns2_affecting_cause_prim_str & ns2_prim_strAlexander Couzens1-0/+2
Change-Id: Ibf610fbd929dddc4a4e235152447caff522d4eb2
2020-10-12gprs_ns2: add gprs_ns2_ip_vc_equal()Alexander Couzens1-0/+1
Compare the NS-VC with the given parameter Change-Id: I3a0cd305fd73b3cb9ec70246ec15ac70b83e57f2
2020-10-12gprs_ns2: add gprs_ns2_nse_foreach_nsvc()Alexander Couzens1-0/+1
Allow to loop over all NSVC within a NSE via a callback Change-Id: I5a2bb95d05d06d909347e2fb084a446ead888cb3
2020-10-12gprs_ns2: add gprs_ns2_nse_sns_remote() returns the initial SNS addressAlexander Couzens1-0/+1
Allows the PCU to get the SNS remote address. Change-Id: I54f110acc3acccb362f6e554324d08cc42b7c328
2020-10-12gprs_ns2: add gprs_ns2_ip_vc_local() return the local sockaddrAlexander Couzens1-0/+1
Change-Id: I65a739772596015b90473045d32d4934d924e43f
2020-10-12gprs_ns2: rename gprs_ns2_ip_vc_sockaddr -> gprs_ns2_ip_vc_remoteAlexander Couzens1-1/+1
It's more clear which part of the address is returned. In preparation to add a gprs_ns2_ip_vc_local. Change-Id: I6110ff573362961c713a990da7ef3f3dbedf6c57
2020-10-12gprs_ns2: add gprs_ns2_free_nses() to free all NS-EAlexander Couzens1-0/+1
Allow users to clean up most of the state (e.g. the PCU). Change-Id: Ia00753a64b7622a0864341f51ea49b6963543755
2020-10-12gprs_ns2: add gprs_ns2_free_binds() to free all bindsAlexander Couzens1-0/+1
Allow users to clean up all binds (e.g. the PCU). Change-Id: Ic8f6f8aca10da23a18fab8870be7806065a34b47
2020-10-12gprs_ns2: add gprs_ns2_nse_nsei() to get the nsei of a nseAlexander Couzens1-0/+1
Change-Id: I5f67e6a9bf4cb322bd169061fee0a528012ed54d
2020-10-12gprs_ns2: add gprs_ns2_ip_bind_by_sockaddr() to search for binds by sockaddrAlexander Couzens1-0/+1
Change-Id: I48c3f1a82574eee0a49e6941cf9e1365c2302d3b
2020-09-15Gb: add a second NS implementationAlexander Couzens1-0/+34
Reimplement NS with FSM. Change-Id: I3525beef205588dfab9d3880a34115f1a2676e48
2020-08-04Gb/BSSGP: replace hardcoded Tx into NS library by a callbackAlexander Couzens1-0/+1
Add bssgp_ns_send callback() to set the transmission path into the NS library. This allows to use the Gb implementation with the old NS and the new upcoming NS implementation. Users of the old NS implementation don't have to set the callback as the default is the old NS implementation. Only users of the new NS implementation need to set the callback and the callback data. Change-Id: I3a498e6a0d68b87fed80c64199b22395796761b4
2020-06-26gprs_bssgp: Add bssgp_tx_bvc_reset2()Harald Welte1-0/+1
If a BVC-RESET is sent from SGSN, there must not be a cell ID IE included. See "Note 1" of TS 48.018 Section 10.4.12. Change-Id: I11d4e70d510265b9c09dffccdab10b3f0816715a
2020-06-08NS: replace use of gprs_nsvc_create() with gprs_nsvc_crate2()Harald Welte1-1/+1
Change-Id: I2b10e1707b0976b685d1c14016481d5565888150
2019-11-09GPRS/BSSGP: introduce bssgp_bvc_ctx_free()Vadim Yanitskiy1-0/+1
So far we had a function to allocate a new bssgp_bvc_ctx, but not the opposite one. Let's finally introduce it, so it will be used at least in OsmoPCU. Please note that the new symbol has 'bssgp_' prefix, not 'btsctx_'. Change-Id: Ia78979379dbdccd6e4628c16f00d0c06d9212172
2019-04-10Add _c versions of functions that otherwise return static buffersHarald Welte1-0/+1
We have a habit of returning static buffers from some functions, particularly when generating some kind of string values. This is convenient in terms of memory management, but it comes at the expense of not being thread-safe, and not allowing for two calls of the related function within one printf() statement. Let's introduce _c suffix versions of those functions where the caller passes in a talloc context from which the output buffer shall be allocated. Change-Id: I8481c19b68ff67cfa22abb93c405ebcfcb0ab19b
2019-04-03Add _buf() functions to bypass static string buffersHarald Welte1-0/+1
We have a number of static buffers in use in libosmo*. This means the related functions are not usable in a thread-safe way. While we so far don't have many multi-threaded programs in the osmocom universe, the static buffers also prevent us from calling the same e.g. string-ify function twice within a single printf() call. Let's make sure there's an alternative function in all those cases, where the user can pass in a caller-allocated buffer + size, and make the 'classic' function with the static buffer a wrapper around that _buf() variant. Change-Id: Ibf85f79e93244f53b2684ff6f1095c5b41203e05
2019-02-26NS: Add support for GPRS NS IP Sub-Network-Service (SNS)Harald Welte1-0/+1
The NS implementation part of the Gb implementation libosmogb so far implemented a rather classic dialect of Gb, with lots of heritage to FR (Frame Relay) transports. At least since Release 6 of the NS specification, there's an IP Sub-Network Service (SNS), which * permits for dynamic configuration of IP endpoints and their NS-VCs * abandons the concept of a NSVCI on IP transport * forbids the use of RESET/BLOCK/UNBLOCK procedures on IP transport This commit introduces BSS-side IP-SNS support to libosmogb in a minimally invasive way. It adds a corresponding SNS FSM to each NS instance, and implements the new SIZE/CONFIG/ADD/DELETE/CHANGE_WEIGHT procedures very closely aligned with the spec. In order to use the SNS flavor (rather than the classic one), a BSS implementation should use gprs_ns_nsip_connect_sns() instead of the existing gprs_ns_nsip_connect(). This implementation comes with a set of TTCN-3 tests in PCU_Tests_RAW_SNS.ttcn, see Change-ID I0fe3d4579960bab0494c294ec7ab8032feed4fb2 of osmo-ttcn3-hacks.git Closes: OS#3372 Closes: OS#3617 Change-Id: I84786c3b43a8ae34ef3b3ba84b33c90042d234ea
2018-08-10bssgp: introduce flush queue functionsAlexander Couzens1-0/+2
To reset the state of BSSGP allow to flush the BSSGP queues. When testing (with TTCN3) the test object should be resetted between each test. Introduce the functions: bssgp_fc_flush_queue() - flushs a single flow control object bssgp_flush_all_queues() - flushs queues of all BSSGP connections Change-Id: I29b6ad6742ddf9b0b58b4af37d9a1cf18e019325
2018-06-14Add function gprs_nsvc_state_appendDaniel Willmann1-0/+1
A common function to append the nsvc state from osmo-sgsn or osmo-gbproxy Change-Id: I7f0eaff7329ab98cad792d30b20ab053007aab85
2018-01-08Add function to properly encode RAIMax1-0/+1
Add gsm48_encode_ra() which takes appropriate struct as [out] parameter instead of generic buffer. Using uint8_t buffer instead of proper struct type prooved to be error-prone - see Coverity CID57877, CID57876. Old gsm48_construct_ra() is made into tiny wrapper around new function. The test output is adjusted because of the change in function return value which was constant and hence ignored anyway. Related: OS#1640 Change-Id: I31f9605277f4945f207c2c44ff82e62399f8db74