path: root/include/osmocom
AgeCommit message (Collapse)AuthorFilesLines
2021-02-04make use of OTC_GLOBAL when allocating library-internal contextsHarald Welte1-1/+3
As libosmcore is now managing the global talloc contexts, there's no point in having APIs where the user tells the library about which talloc contexts to use for a given sub-system. However, completely ignoring the talloc contexts passed in by existing applications would unfortunately break LeakSanitizer. It appears to track if any dynamically allocated pointeres are not stored anywhere, and that would be exactly the situation created here. So the new behavior is: Use the context passed in by an application, and fall back to the library-internal OTC_GLOBAL if none is passed in. Change-Id: I48f475efd3ee0d5120b8fc30861e852d1a6920b1
2021-02-04gsm48: add compare function for struct gprs_ra_idPhilipp Maier1-0/+1
Comparing struct gprs_ra_id using memcmp can be error prone, so lets add a compare function to compare two struct gprs_ra_id values reliably. Change-Id: I4d7558c04d9d01761516526086be5104bb2eeada Related: SYS#5103
2021-02-02frame_relay: Add status call-backs for link + DLC status changesHarald Welte1-2/+9
Change-Id: Iec19db4e48642c3fcb0aa11fa7787b8323fd0e5a Related: Os#4999
2021-02-01gsm_7bit_encode_n(): fix integer overflow in gsm_septets2octets()Vadim Yanitskiy1-1/+4
Using 'uint8_t' for the length argument is definitely a bad idea. Because of this, packing more than 255 septets would not work as expected. Deprecate the old function and use 'size_t' instead. Change-Id: Ib1aac538afeb0a5c76a1df472d555139a496e12e
2021-02-01sim: fix gcc 4.9.2 + -std=gnu11 errorOliver Smith1-1/+1
Remove "(const struct osim_card_sw)" infront of OSIM_CARD_SW_LAST, so debian 8's gcc 4.9.2 doesn't fail anymore with the following error each time the macro is used: card_fs_sim.c:105:1: error: initializer element is not constant I verified with docker that there aren't any other build errors with gcc 4.9.2. Fixes: OS#4991 Change-Id: I9d3abbf9812dc09201eff0e9f7542cddedb6848b
2021-02-01ns2: Fix typos in commentsHarald Welte1-5/+5
Change-Id: I155fd697e229621561f7d00204421ac941101d77
2021-01-29gprs_bssgp: agregate RIM related code in gprs_bssgp_rim.cPhilipp Maier2-33/+34
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-29gsm: bts_features: Introduce BTS_FEAT_CCNPau Espin Pedrol1-0/+1
This feature is used by BSC to gain knowledge on whether a given BTS supports GPRS Cell Change Notification (CCN) related procedures on PDCH, and as a result enable or not by default the CCN_ACTIVE bit in SI13 to announce the support it is allowed to use the feature. Related: SYS#4909 Change-Id: I61991266b95d0c13d51b47906cc07846e9cf1390
2021-01-29cosmetic: fix typo in commentPau Espin Pedrol1-1/+1
Change-Id: I787cca5a032c57202a86dab18e1790ef3ad1509a
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-6/+1
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-1/+6
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-6/+1
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-28gprs_ns2: refactor: ensure all enums have GPRS_NS2_Alexander Couzens1-24/+24
All public enum should have the prefix GPRS_NS2_. API change which must be synchronized with osmo-pcu, osmo-gbproxy, osmo-sgsn. Change-Id: I548ff12f7277cbb7e1a630a3dc02b738ce89be72
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-26gprs_bssgp_prim.h: Add missing includesPau Espin Pedrol1-0/+2
Includes for struct gprs_ra_id and osmo_eutran_tai were missing. Change-Id: I1c068b6841561003d4d7722daa6c2abb21363dda
2021-01-22gprs_bssgp_rim: add value strings for enum bssgp_rim_routing_info_discrPhilipp Maier1-0/+6
Change-Id: Idd06d2e3df0d60409a89a474018a9d97f7772090 Related: SYS#5103
2021-01-22gprs_bssgp_rim: add value strings for enum bssgp_ran_inf_app_idPhilipp Maier1-0/+6
Change-Id: I581d1176f82d6657d6136c32daa9c76dffb802a6 Related: SYS#5103
2021-01-22gprs_bssgp_rim: add value strings for enum bssgp_nacc_causePhilipp Maier1-0/+6
Change-Id: I3354699555569c2b0bd1b4313cffd32a0cbeffe9 Related: SYS#5103
2021-01-22gsm: Introduce osmo_{rai,cgi_ps}_cmp() APIsPau Espin Pedrol1-0/+2
Similar to what we already have for other data types, such as osmo_lai_cmp or osmo_cgi_cmp. Change-Id: I00e329bc5be8674b30267dec238e7656ddfc21db
2021-01-20vty/fsm_vty: Add vty_out_fsm2() + vty_out_fsm_inst2() with prefixHarald Welte1-0/+2
Callers other than "show fsm" / "show fsm-instances" may want to indent the output. Change-Id: I10e01ef91116369868cdb878a99634c8681728af
2021-01-19gprs_bssgp: add utilities to send and parse BSSGP rim PDUsPhilipp Maier2-0/+39
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: move bssgp_parse_rim_ri and bssgp_create_rim_ri to gprs_bssgp_rimPhilipp Maier2-31/+30
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-18bssgp_rim: add encoder/decoder for NACC related RIM containersPhilipp Maier1-0/+182
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-13ctrl: ports.h: Add OSMO_CTRL_PORT_BSC_NEIGHPau Espin Pedrol1-0/+1
Hence 4248 becomes the well-known port for osmo-bsc's Neighbor Resolution Service. Related: SYS#4909 Change-Id: Ic77a8cff022c2f939a684ebd1f9f62a82e0de510
2021-01-11Intoduce Packet Switch CGIPau Espin Pedrol3-0/+17
This structure is needed in order to identify a given cell within the BSS during RIM transactions. The naming was made up by myself since I couldn't find any naming reference for this kind of data (RAI + CI). Since LAI + CI = CGI, then RAI + CI = CGI-PS osmo_rai_name2 family of functions get a "2" suffix due to already existing functions handling struct struct gprs_ra_id in gsm48.h Change-Id: If48f412c32e8e5a3e604a78d12b74787a4786374
2021-01-06gsm_08_18: add struct to parse RIM PDU IndicationsPhilipp Maier1-0/+22
3GPP TS 48.018, section 11.3.65 describes an IE to transfer some control flags via a RIM container. The IE is essentially just a bitfield, so it can be parsed by overlaying it with a C-struct. Lets add an appropiate struct to protocol/gsm_08_18.h Change-Id: I781ab838bd02ac1b13d384ce3f4259e26cedb61e Related: SYS#5103
2021-01-06ctrl: Allow handling CTRL get/set replies in user defined codePau Espin Pedrol1-0/+7
Prior to this patch, it was not possible to gather SET/GET reply information when implementing a CTRL client using libosmocontrol. This is specially important when using the GET command, since one wants to receive the queried value. CTRL traps can also be handled this way by extending this patch in the future if needed. Change-Id: Id3c4631cd32c13e78e11b6e8194b8c16307ec4f1
2021-01-06Add inter-thread queueHarald Welte1-0/+62
This adds an inter-thread queue "it_q" to libosmocore. With it_q, one can perform thread-safe enqueing of messages to another thread, who will receive the related messages triggered via an eventfd handled in the usual libosmocore select loop abstraction. Change-Id: Ie7d0c5fec715a2a577fae014b0b8a0e9c38418ef
2021-01-04gprs_bssgp: add handling for BSSGP RIM primitivesPhilipp Maier2-0/+4
Receive and forward RIM messages to bssgp_prim_cb() Change-Id: Idfd0a65872a2cc6089885afd8d31b0b029d85d47 Related: SYS#5103
2021-01-04gsmtap_util: SNR can be negative, use a signed integerVadim Yanitskiy1-4/+4
In 'struct gsmtap_hdr' field 'snr_db' is defined as a signed integer, however all functions that fill this structure accept an unsigned integer. This is wrong, because SNR can be negative. Let's use 'int8_t' instead of 'uint8_t'. Changing from unsigned to signed should be relatively safe compared to the opposite. Most of the callers I am aware of always do pass 0 anyway. Change-Id: I9f432be5c346d563bf518111c14ff04d4a63f592 Related: SYS#5073
2021-01-03gsm_08_58: add flexible array member to 'struct ipac_preproc_ave_cfg'Vadim Yanitskiy1-0/+2
Some averaging methods may have additional parameters, so let's make it easier to access them for the API user. Change-Id: I2f4ed56837dd479dbbd10c0a7df0ed7565d3946a Related: SYS#4918
2020-12-28Declare osmo_ctx_init() in talloc.hDaniel Willmann1-0/+2
This function is called automatically on the main thread, but needs to ba called explicitly in order to run the select loop on another thread. Make it available for applications through talloc.h Change-Id: Ie710ca9ad01d3fadb9f4ff344a55d6c01004727b
2020-12-22gprs_ns2: add new vty2Alexander Couzens2-0/+6
Change-Id: I163279cf57e84198dc8c53e1c109f5a9474670e9
2020-12-21fsm: Add osmo_fsm_inst_broadcast_children()Harald Welte1-0/+11
This is a helper function to broadcast an event to all of the siblings of a specified FSM instance. Change-Id: I2ce398741a8672d7b7c4058d056f46e2fe7353c1
2020-12-19gsm_08_58: fix wrong field order in 'struct ipac_preproc_pc_thresh'Vadim Yanitskiy1-2/+2
Thanks to the CLI of nanoBTS, I noticed that upper and lower RxQual thresholds are sent in wrong order. Only the little-endian variant needs to be fixed, the big-endian one looks good. Change-Id: If6ab2377bae6742f871589b529a349498775552f Related: SYS#4918
2020-12-17GPRS Cell Options (SI13): Add REL-4 CCN_ACTIVE bitPau Espin Pedrol1-1/+2
This is required in order to tell MS that osmo-pcu now supports Network Assisted Cell Change (NACC). Related: SYS#4909 Change-Id: I2aaa8c1107c977f711c2d7530034f57e36e3a237
2020-12-16gprs_bssgp: add IE parser/generator for RIM Routing InformationPhilipp Maier2-0/+43
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: add gprs_ns2_fr_bind_role() to retrieve the fr roleAlexander Couzens1-0/+1
Change-Id: I277b805e588ba68536789b4a64a428ea0b31728a
2020-12-15gprs_ns2: make nsvc argument constAlexander Couzens1-1/+1
The nsvc isn't change. It can be const Change-Id: Ie5052f02781d7fdc639456c6f02515a927cee1f3
2020-12-15gprs_ns2_sns: rework IP-SNS initial remoteAlexander Couzens1-3/+6
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: rework gprs_ns2_fr_connect*()Alexander Couzens1-0/+4
Add gprs_ns2_fr_connect2() and change gprs_ns2_fr_connect() to be similar to gprs_ns2_ip_connect() and gprs_ns2_connect2(). This is an API break but there wasn't yet a release with NS2. Change-Id: I4e1374b0e979b3293302c5ed46a91a58f3a5a916
2020-12-15gprs_ns2: add member name to bindAlexander Couzens1-0/+7
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-5/+12
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-15protocol/gsm_08_58.h: add Osmocom specific EWMA AVG algoVadim Yanitskiy1-1/+3
Change-Id: Ib436fd8b81afdb06c6d936f6839f847a705d00e2 Related: SYS#4918
2020-12-15protocol/gsm_08_58.h: add ip.access Power Control structuresVadim Yanitskiy1-0/+44
Change-Id: I9430bcb79c269efb4f9527f565cf4e12e4444940 Related: SYS#4918
2020-12-09bssgp_bvc_fsm: Add basic BVC flow control rx/tx supportHarald Welte1-0/+5
The FSM doesn't actually implement the flow control logic, it only decodes / dispatches and encodes messages. Related: OS#4891 Change-Id: Ie59be6761177c43456898be9148727f15861a622
2020-12-09bssgp2: Encoding + Decoding functions for BVC and MS flow controlHarald Welte2-0/+47
Change-Id: I9c89bb1c03550930c07aad7ff8f67129ee7a6320 Related: OS#4891
2020-12-09gb: Add beginnings of a new BSSGP implementationHarald Welte2-0/+92
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