aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2019-01-21Merge tag '1.0.1'Harald Welte0-0/+0
Release v1.0.1 on 2019-01-21. Change-Id: I2b92a7cfcdc7ed9d6f835bd17c6b5d2ec939b568
2019-01-21Bump version: 1.0.0 → 1.0.1Harald Welte2-1/+8
Change-Id: I51696a3ace219ab69c294b0e3637371c5460291f
2019-01-21gsm_23_003.h: add GSM23003_IMEI_NUM_DIGITS_NO_CHKOliver Smith1-0/+3
Add new define for the 14 digit IMEI without the Luhn checksum, as it is used in OsmoHLR. Change-Id: I02b54cf01a674a1911c5c897fbec02240f88b521
2019-01-21Bump version: 1.0.0 → 1.0.11.0.1Harald Welte2-1/+8
Change-Id: I51696a3ace219ab69c294b0e3637371c5460291f
2019-01-21Rename msgb_wrap_with_TL()Max2-10/+10
This resolves an issue introduced in 84fb5bb6a09a6a358f98c654c84c3b99a0f24eef when msgb_wrap_with_TL() was introduced as an inline function with *exactly the same name* as in osmo-msc.git and openbsc.git. We *NEVER* do something like this. Functions moved from applications to library *MUST* always be renamed. This has been the case for almost a decade now. With this subsequent change we make sure the libosmocore function has a different name and doesn't clash. After this commit, old openbsc.git and osmo-bsc.git should again build fine. Change-Id: If1e851ac605c8d2fde3da565b0bd674ea6350c2e
2019-01-19Bump version: 0.12.0.128-8dfde → 1.0.01.0.0Harald Welte9-24/+247
Change-Id: I1bd973754b1ebc42283f6a07defa60f58523f5a3
2019-01-19Prevent GCR encoder/decoder functions from being used directlyMax1-2/+2
They only make sense in the context of LCLS so far - let's make sure they're not used by external projects directly instead of gsm0808_*() counterparts. Change-Id: I4ae5a3472a20492d5f76170b722e4e2274a5c433
2019-01-19LCLS: make GCR into static member of osmo_lclsMax3-24/+28
Most of the time we'll have GCR filled anyway so it make sense to have it as static parameter instead of a pointer to separately allocated structure. Update tests to cover both static and dynamic osmo_lcls allocation variants. Change-Id: I905c36d8455911c68c30bc429379b7313dd46aea
2019-01-19LCLS: add status parameter to Assignment Completed messageMax4-11/+43
* add gsm0808_create_ass_compl2() with additional gsm0808_lcls_status parameter and make gsm0808_create_ass_compl() into trivial wrapper around it * update tests accordingly Change-Id: I547c6b8707123aa8c1ef636db88908df112d90a4 Related: OS#2487
2019-01-18gsm29118: fix coverity issuesPhilipp Maier1-1/+6
The function msgb_sgsap_name_put() assignes the return code of osmo_apn_from_str() directly to len. Len is an uint8_t and the return code an int. If osmo_apn_from_str() returns -1. Len would become 0xFF causing a buffer overrun with msgb_tlv_put. Lets use the proper type to catch the return code and check it before using it as length. Change-Id: Ic0bc5114eee47bdcf2300a6e4b0df473d3d1903a Fixes: CID#190405 Fixes: CID#190401 Related: OS#3615
2019-01-17socket: add define for socket name lengthPhilipp Maier2-4/+4
The function osmo_sock_get_name_buf() can be used to write a string representation to a user provided memory. Unfortunately the proper length for the user provided memory is not obvious. To make using osmo_sock_get_name_buf() more practical, add a define constant that defines the length of the required memory. Also use this define in socket.c. Change-Id: If8be8c2c0d4935da17ab13b2c2127b719ceefbcc
2019-01-14LCLS: add GCR comparison helperMax4-19/+27
Change-Id: I9e3b5560a058b976638d03cb819415d237ae9984
2019-01-14LCLS: expand enc/dec testsMax1-0/+12
Change-Id: I8ed87f26216104d34c7bd11c1527b203843760a2
2019-01-14comments: update/fix three 3GPP spec referencesNeels Hofmeyr3-3/+3
Change-Id: I3ab94f362866d752099000afe62922288b3dd118
2019-01-14change GSM48_CMSERV_* to enum type, add namesNeels Hofmeyr3-7/+26
Prepare handling multiple CM Service Requests in osmo-msc: an enum is more clear than an int and #defines for passing around and count CM Service types. Change-Id: I9c2a7adc45ab7a1a7519168e965e7d805e1481ff
2019-01-14gsm23003: add osmo_imei_str_valid()Oliver Smith7-0/+107
Verify 14 digit and 15 digit IMEI strings. OsmoHLR will use the 14 digit version to check IMEIs before writing them to the DB. Place the Luhn checksum code in a dedicated osmo_luhn() function, so it can be used elsewhere. Related: OS#2541 Change-Id: Id2d2a3a93b033bafc74c62e15297034bf4aafe61
2019-01-12port rest octets encoding code from osmo-bscStefan Sperling5-0/+1084
As part of fixing issue OS#3075, we want to migrate support for encoding system information from osmo-bsc to libosmocore. This change ports osmo-bsc code for encoding SI rest octets. The conversion was a bit tricky in some places because some functions receive a 'struct gsm_bts' parameter in osmo-bsc. In this libosmocore version, such functions expect parameters which correspond to the individual fields of 'struct gsm_bts' which are used by these functions. Several structs from osmo-bsc's system_information.h are now also declared in libosmocore headers, with an added osmo_ prefix to avoid collisions with existing definitions in osmo-bsc. Some helpers were ported from osmo-bsc's system_information.c to libosmocore's gsm48_rest_octets.c. Contrary to osmo-bsc's implementation they are now only visible within this file. Unfortunately, this code ported from osmo-bsc lacks unit tests. Change-Id: I47888965ab11bba1186c21987f1365c9270abeab Related: OS#3075
2019-01-12port arfcn range encode support from osmo-bscStefan Sperling7-1/+760
As part of fixing issue OS#3075, we want to migrate support for encoding system information from osmo-bsc to libosmocore. This change ports one of the prerequisites for doing so: osmo-bsc code for range-encoding ARFCNs, including tests. An osmo_gsm48_ prefix has been prepended to public symbols in order to avoid clashes with existing symbols in osmo-bsc code. Change-Id: Ia220764fba451be5e975ae7c5eefb1a25ac2bf2c Related: OS#3075
2019-01-09LCLS: use proper types for value_string wrappersMax1-3/+3
Change-Id: I0f47a610e06ac99bd60a5aad6f50f3658480165e
2019-01-09Cosmetic: GSUP: note "on wire" for imei_resultOliver Smith1-2/+2
Note that OSMO_GSUP_IMEI_RESULT_ACK is 0 on the wire, although the enum value is 1. Same with NACK (1 on wire, enum 2). I had implemented enum osmo_gsup_imei_result after enum osmo_gsup_cancel_type above, where this comment exists as well, and I incorrectly assumed that enum osmo_gsup_cn_domain in the middle was also implemented this way and therefore adding the comments to each enum would be redundant. But for cn_domain, the values on the wire are the same as the enum values. Change-Id: If97c34f117bfaab2232bbb625e9d118c8f390e58
2019-01-09msgb: fix debug printMax1-1/+1
Since osmo_hexdump() use static buffers we can't re-use pointers to it after subsequent osmo_hexdump() calls. Let's print data used for comparison directly instead. Change-Id: I24dc3fad6f64ef788da9b7d790f9d5f689190c42
2019-01-08add osmo_lu_type_names[], osmo_lu_type_name()Neels Hofmeyr3-0/+13
Move lupd_names[] from osmo-msc to libosmo-gsm. Change-Id: Ica25919758ef6cba8348da199b0ae7e0ba628798
2019-01-08add osmo_mi_name(), for MI-to-string like "IMSI-123456"Neels Hofmeyr5-0/+82
We have gsm48_mi_to_string() and osmo_bcd2str(), but still lack a function that conveniently prints both MI type and value in one function call. Related: http://people.osmocom.org/neels/mi_mi_mi.jpg Change-Id: I7798c3ef983c2e333b2b9cbffef6f366f370bd81
2019-01-07LCLS: fix LCLS-CONNECT-CONTROL encoderMax3-10/+16
Previously it could encode both incorrect values as well as incorrect message. Let's fix this by explicitly checking for invalid values and ensuring that at least one of the parameters is valid. This function have no external or internal users so it's better to fix type signature as well to match the rest of gsm0808_create_lcls_*(). Change-Id: I7b33a771acbd391c5f9a494d6450edb18511433f
2019-01-07Automatically disable GnuTLS fallbackMax1-0/+1
Disable GnuTLS fallback if sufficient glibc version detected. Previously GnuTLS fallback was used regardless of getrandom() availability in glibc. Fix this by automatically disabling it when not needed. This does not affect the ability to manually disable it unconditionally. Change-Id: Ibe2117afc050261668a4d5a590044aabcd08aefe
2019-01-07Streamline glibc version checkMax1-7/+11
* use macro for version check * report glibc version upon random.h detection * comment where various #endif belongs to * explicitly check for embedded build (our target toolchain don't use libc so there's no point in checking its version) Change-Id: Ia54f0b7a861f955be65bb0cf06eb10af9372d062
2019-01-05tests/gsup_test.c: drop session IEs from MO-ForwardSM ErrorVadim Yanitskiy2-10/+4
Both session state and session ID IEs were left from the initial version of Ibe325c64ae2d6c626b232533bb4cbc65fc2b5d71. There is no need to use them (as we use SM-RP-MR), so let's clean up. Change-Id: I0d910b87f15ffbc0aeeca9cb4fcbef32bdf3ef88
2019-01-04fix typo in enum BSS_MAP_MSG_TYPE: BSS_MAP_MSG_ASSIGMENT*Neels Hofmeyr1-3/+7
Keep #defines to still support previous wrong spelling. Change-Id: Id4cf812f0bc3cd40f6bfa05166f817a07a647f71
2019-01-04osmo_rat_type: add OSMO_RAT_EUTRAN_SGSNeels Hofmeyr2-0/+2
osmo-msc is about to implement the SGs interface and requires a RAT indicator for that. Change-Id: I00588396bfe03feba38ecb0717d584594f0b2b46
2019-01-03gsm_utils: add enum osmo_rat_type, from osmo-msc enum ran_typeNeels Hofmeyr3-0/+23
In the MSC, we have RAN types GERAN_A and UTRAN_IU, now we need a similar enum in osmo-hlr's GSUP client. Naming: in the MAP specifications, the RAN type is mostly called RAT type, (Radio Access Network vs. Radio Access Technology?). Since GSUP is more about MAP messages, I'm calling the enum osmo_rat_type. Rationale: osmo-msc and osmo-sgsn want to tell the osmo-hlr which RAT a subscriber is calling on. A subsequent patch will extend the GSUP protocol and add a RAT types IE. Change-Id: I659687aef7a4d67ca372a39fef31dee07aed7631
2019-01-03add LOGPFSMSL(), LOGPFSMSLSRC()Neels Hofmeyr1-6/+30
Using an FSM instace's logging context is very useful. Sometimes it makes sense to log something on a different logging category than the FSM definition's default category. For example, an MSC conn has aspects concerning MM, CC, RR, MGCP, ..., and currently all of those log on DMM. This came up in I358cfbaf0f44f25148e8b9bafcb9257b1952b35a, where I want to log an MGCP event using a ran_conn context, and used the conn->fi->id. That of course omits context like the current conn FSM state... I remember at least one other place where I recently added logging using some fi->id as context, so it might turn out useful in various places. Change-Id: I11b182a03f5ecb6df7cd8f260757d3626c8e945d
2019-01-03LOGPFSM*: guard against fi == NULLNeels Hofmeyr1-4/+4
The LOGPFSM macros are in such wide use that they should guard against a NULL fi pointer. In case of NULL, default to subsys = DLGLOBAL, loglevel = LOGL_ERROR and state = "fi=NULL". Change-Id: I9eaf8b7e2cf1e450ae626cb2fc928862008f6233
2019-01-03add API doc for LOGPFSM* macrosNeels Hofmeyr1-0/+31
Change-Id: I3bf6500889aa58195f50a726dec0876c0c2baec3
2018-12-28logging/gsmtap: fix buffer overflow in _gsmtap_raw_output()Vadim Yanitskiy1-0/+6
According to the man page, vsnprintf() returns: - a negative value in case of error; - the number of characters written (excluding '\0'); - the number of characters which *would have been written* if enough space had been available (excluding '\0'). We need to detect if the output was truncated, and properly limit the amount of bytes to be reserved within a msgb. Change-Id: Ifa822edf900ed925ba935c54a28c797c4657358a
2018-12-23LCLS: enc/dec entire parameter set instead of GCRMax5-36/+78
In 3GPP TS 48.008 the Global Call Reference IE is only used in HANDOVER REQUEST (§3.2.1.8) and ASSIGNMENT REQUEST (§3.2.1.1) messages which also include LCLS Config and CSC parameters. Hence, there's no point in using GCR encode/decode functions alone. Introduce gsm0808_dec_lcls() and gsm0808_enc_lcls() as trivial wrappers on top of GCR enc/dec routines which are made static. Adjust tests accordingly. Test output intentionally left unchanged. Change-Id: Icfbb2404e1a1d500243e2071173299b557369335
2018-12-23define LOGPFSM fmt only once, in LOGPFSMLSRCNeels Hofmeyr1-7/+4
Instead of duplicating the fmt and args in LOGPFSML and LOGPFSMLSRC, rather make LOGPFSML invoke LOGPFSMLSRC with __FILE__ and __LINE__. This is a cosmetic preparation for more tweaks coming up. Change-Id: I2f23c57ebfdb5355919c06ac5ded7732e3b17a97
2018-12-23Fix VTY documentation error introduced in "bind" VTY port changeHarald Welte1-1/+2
In 99ae401e490e60fc07bef7eacc478be7bdcc9f5a we introduced the ability to specify the TCP port to which the VTY should bind. However, the VTY dcumentation wasn't extended accordingly, causing virtually all master build jobs to fail. Change-Id: I54fb0ca0d3a884a64a349b22de70f3d9bd1a6d54
2018-12-23vty: Make TCP port configurable and introduce telnet_init_defaultHolger Hans Peter Freyther4-3/+34
Extend the vty_bind_cmd VTY command to allow to optionally specify a port in addition to the IPv4 address. Introduce telnet_init_default to relieve client code from having to query the bind IPv4 address (and now the TCP port). Instead a client only needs to pass the default TCP port to use. Client code should use it like: int rc = telnet_init_default(ctx, priv, OSMO_VTY_PORT_SGSN); Change-Id: Id5fb2faaf4311bd7284ee870526a6f87b7e260f3
2018-12-22vty: The telnet interface is TCP only. Fix the commentsHolger Hans Peter Freyther1-2/+2
Change-Id: I38555c4d4f565ce21dda34fc3857c47b3d802dbd
2018-12-21tests/gsm0808: use new msgb comparison APIVadim Yanitskiy1-12/+4
Since I3bc95f2f5ab6e3f4b502647fb3e0aaaf1f7c4cf5, we have some helpers to compare certain msgb layer to a given buffer. Let's change 'VERIFY' macro to use msgb_eq_l3_data_print(). Change-Id: Ib6be778236eff8f2153f3113f9379ecfbec9052b
2018-12-21GSUP: add CHECK-IMEI messageOliver Smith5-0/+93
Implement necessary messages for Procedure Check_IMEI_VLR (TS 23.018 Chapter 7.1.2.9). This lets the VLR ask the EIR to check if an IMEI is valid. In the Osmocom stack, we don't have an EIR and this request will be handled by the HLR. We will be able to store the IMEI in the HLR as side-effect (OS#2541). This is roughly based on TS 29.002 8.7.1 MAP_CHECK_IMEI service, but only implements the bare minimum required IEs (imei and imei_result). Related: OS#3733 Change-Id: I085819df0ea7f3bfeb0cabebb5fd1942a23c6155
2018-12-21GSUP: add end marker to enum osmo_gsup_ieiOliver Smith2-5/+3
Simplify gsup_test.c by defining an end marker in gsup.h. No need to manually update the last element every time anymore. The C standard guarantees, that the end marker will have the last value plus one: "Each subsequent enumerator with no = defines its enumeration constant as the value of the constant expression obtained by adding 1 to the value of the previous enumeration constant." (From C99: 6.7.2.2 Enumeration specifiers) Change-Id: I2aab7245e209f0ebd2f33a83d4d181dd3339cb17
2018-12-21GSUP: fix missing osmo_gsup_get_err_msg_type()sOliver Smith1-0/+8
Add missing mappings of request to error message types in osmo_gsup_get_error_msg_type(): * PROC_SS_REQUEST * MO_FORWARD_SM_REQUEST * MT_FORWARD_SM_REQUEST * READY_FOR_SM_REQUEST Change-Id: I801a0d6ffe09cfc75b77ab602bd25b3dc40f19c0
2018-12-20TLV: add convenience function for 1-byte valuesMax1-0/+16
Similar to existing 16 and 32 bit value helpers but simpler because we don't have to worry about alingment and endianness. Change-Id: Ic0a148bd04b8860e321f509fdcd913f688c8e920
2018-12-20TLV: fix doc copy-paste errorMax1-1/+1
Change-Id: I8aa79cab7505585de00ee2aaae125462108906e8
2018-12-20Use define for key buffersMax3-6/+9
Add corresponding spec. references and comments where appropriate. Change-Id: If5e2aad86eaecd8eada667b3488ba415d81c6312
2018-12-19rename CELL_IDENT_LAI_AND_LAC to CELL_IDENT_LAIStefan Sperling1-2/+3
The name "LAI AND LAC" makes no sense because a LAC is part of a LAI. Keep the old name available for API backwards compatibility. Change-Id: I2749cf75b7b45de0cd43cf4c696a6b6984f5a065 Related: OS#3124
2018-12-19add/clean big-endian packed structs (struct_endianess.py)Neels Hofmeyr9-45/+647
This is 1:1 the result of doing cd libosmocore ./contrib/struct_endianess.py git commit -a Running struct_endianess.py again should result in no changes. That means we could include such a check in the gerrit verification job now. Change-Id: Ia0b99d76932aeb03e93bd0c62d3bf025dec5f9d2
2018-12-19LCLC: fix doc to match type signatureMax1-2/+1
Change-Id: I8f7b3dca080ef0e632d47a907154f8404b0ec523
2018-12-19Fix typos in SS opcode namesMax1-2/+2
Change-Id: I8fa1961c85b3fd714bc8df56fe4af6be4060c208