summaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* re-introduce ipa_ccm_idtag_parse_off()Harald Welte2018-08-011-3/+2
| | | | | | | | | In the previous commit we deprecated ipa_ccm_idtag_parse() but also removed ipa_ccm_idtag_parse_off(), for which I couldn't find any users. However, legacy openbsc.git still uses this function, so let's re-introiduce it in its original form. Change-Id: Ibfe53b04340eb355c8bfb8453a2af1522a4b6baf
* Deprecate ipa_ccm_idtag_parse() with ipa_ccm_id_{get,resp}_parse()Harald Welte2018-08-011-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the past, the function ipa_ccm_idtag_parse() was used to parse the payload of IPA CCM ID RESP packets. However, the function was based on a possible misunderstanding of the message encoding, and callers actually counted the first (upper) length nibble as part of the header and passed a pointer to the second (lower) length nibble of the first TLV into this function. As such, it was unfixable, and had to be replaced with a new function called ipa_ccm_id_resp_parse(). At the same time, we also add ipa_ccm_id_get_parse() to parse the slightly different format of the IPA CCM ID GET payload. We can never be 100% sure what is "correct", as our understanding of the protocol is entirely based on protocol analysis, without any official documentation available. This patch also introduces unit test coverage for both of the new functions. Revert "ipa: Add libosmogsm.map entry for ipa_ccm_idtag_parse_off" This reverts commit 7f31c90b80c08fbfe2d84d70d397402fdb38b94c. Revert "ipa: Properly parse LV stream of a ID_GET request" This reverts commit f558ed4bb9c0f00997b8f97c2b251a574c1a64c4. It introduced a function/behavior that was not originally intended: The parse of IPA CCM ID GET (8bit length followed by 1 byte tag and variable-length payload) instead of the IPA CCM ID RESP (16bit length followed by 1 byte tag and variable-length payload). Change-Id: I1834d90fbcdbfcb05f5b8cfe39bfe9543737ef8f
* oap_client: Rename symbols with osmo_ prefixHarald Welte2018-07-301-14/+14
| | | | | | | | As we're moving this to a common/shared library now, we need to use the osmo_ namespace prefix for symbol names, struct/type names and constants. Change-Id: Ie36729996abd30b84d1c30a09f62ebc6a9794950
* import oap_client into libosmogsmHarald Welte2018-07-302-0/+83
| | | | | | | | | This imports the code from osmo-msc 6afef893e17bce67e4d4119acd34d480ed03ba77 with minimal changes to make it compile. Symbol renaming to osmo_ prefix is done separately in a follow-up patch to have a as-clean-as-possible import first. Change-Id: I9bc38102318da02d1fe46ef516df3cfd6bf8e3da
* 04.80: New gsm0480_gen_{reject,return_error}() functionsHarald Welte2018-07-291-0/+2
| | | | | | | Add functions to generate TS 04.80 (supplementary services) Reject and ReturnError components. Change-Id: I6e5ee39c3d03364f7833ec717593d5ddb0a4c5f9
* USSD: Introduce gsm0480_gen_ussd_resp_7bit()Harald Welte2018-07-291-0/+1
| | | | | | | | | | Contrary to the existing gsm0480_create_ussd_resp(), the new function only generates the value part of the FACILITY IE, and not the IE Tag/Length or the 04.08 L3 header. This is needed in the context of GSUP-encapsulated USSD, as here we don't work with L3 messages, but only pass on the FACILITY IE value. Change-Id: Ide240279240322f643e142229eb7829f538c6314
* gsm0480: Factor out msgb allocation helper functionHarald Welte2018-07-291-0/+2
| | | | Change-Id: If25b467481023eadaaf3f78157eceff4b81d24d2
* GSMTAP: add SIM sub_typesKévin Redon2018-07-271-1/+13
| | | | | | | | | In SIMtrace 1 the ATR was sent the same way as an APDU. The ATR is not an APDU, and could be mis-interpreted as valid APDU. This change allows to make the difference between actual APDU and the ATR, but also adds sub_types for future SIMtrace 2 use cases. Change-Id: I5bd0dff5a4a90cfe96d9c4f3dec6657e1d85bf7a
* gprs_ns.h: Declare gprs_ns_cause_str() which already existed in c fileHarald Welte2018-07-221-0/+1
| | | | Change-Id: Ia95f0cc8d110f95814173bb5a1c11bd85d8cd533
* add osmo_sockaddr_to_str_and_uint()Neels Hofmeyr2018-07-201-0/+3
| | | | | | | | | This came from osmo-bsc refactoring patch I82e3f918295daa83274a4cf803f046979f284366 https://gerrit.osmocom.org/#/c/osmo-bsc/+/9671/6/src/osmo-bsc/gsm_data.c@1708 Add regression test in utils_test.c. Change-Id: I1f2918418c38918c5ac70acaa51a47adfca12b5e
* ctrl: Introduce ctrl_cmd_parse3 APIPau Espin Pedrol2018-07-161-0/+1
| | | | | | | | | Callers require to know whether the returned ERROR cmd was received or generated locally, in order to send it or do something with it locally. Related: OS#3394 Change-Id: Ide9170e5c31967c353f8fe4e8227e64130b91eae
* gsm0808: Add value_string for encryption algorithmsPau Espin Pedrol2018-07-121-0/+1
| | | | Change-Id: Iadf6460c438d02c53c2eaa9e42d51844ad28859a
* gsm_08_08: gsm0808_permitted_speech does not have value stringsPhilipp Maier2018-07-121-0/+4
| | | | | | | enum gsm0808_permitted_speech does not have any value strings. Lets add value strings to make debugging easier. Change-Id: I5b5612a5df2758b0137a34c17f7c8c2b3f07c806
* gsm_04_08: add function to get value stringPhilipp Maier2018-07-121-0/+2
| | | | | | | The value string table gsm48_chan_mode_names[] lacks a function to get the value string by a value. Lets add one. Change-Id: I0757bcc278c140e18249e35864338e19cdaa3cf7
* Don't enforce Python 2 for utilitiesVadim Yanitskiy2018-07-021-1/+1
| | | | | | | | | | | The conv_gen.py utility was tested against both Python 2 and 3, so there is no need to enforce Python 2. Also, having: #!/usr/local/bin/python{2|3} is a bad idea, because Python may be installed in a different location. Change-Id: I6007d481047b584db13d6eda70fb99f11f9ddaa1
* osmo_panic(): Annotate as __attribute__ ((noreturn))Harald Welte2018-06-291-1/+1
| | | | | | | | | | In Change-Id I5a70eb65952cbc329bf96eacb428b07a9da32433 we redirected all OSMO_ASSERT() via osmo_panic(). However, this caused various applications to have build failures, as OSMO_ASSERT() now appeared to be able to return to the call site. Let's inform the compiler explicitly that there's no return from osmo_panic(). Change-Id: I8adf4c7b0ee6a4581cef8dd4e9f6a1dfde70ee55
* Don't call abort() directly, always use osmo_panic()Harald Welte2018-06-281-3/+2
| | | | | | | | | A loooong time ago, we introduced osmo_panic() as a wrapper around abort(). The advantage is, that this wrapper can be overridden, and that it will also work in embedded (bare iron) targets, where the abort simply translates to an infinite loop. Change-Id: I5a70eb65952cbc329bf96eacb428b07a9da32433
* add and tweak inter-BSC HO APINeels Hofmeyr2018-06-182-0/+42
| | | | | | | | | | | | | | | | | | Add: gsm0808_create_handover_detect() gsm0808_create_handover_complete() gsm0808_create_handover_failure() To existing structs gsm0808_old_bss_to_new_bss_info and gsm0808_handover_required, add a final 'more_items' flag that makes future extensions API and ABI compatible. Fix the msgb string for Handover Request Ack. Extend some API doc comments. Related: OS#2283 (inter-BSC Handover, BSC side, MT) Change-Id: I03ee7ce840ecfa0b6a33358e7385528aabd4873f
* gsm 04.80: Add value_string for component type and op codeHarald Welte2018-06-161-0/+10
| | | | Change-Id: I2615a88db5224d65f37c7cc505e183ec8b196e8a
* gsup: Add value_string for Session State IEHarald Welte2018-06-161-0/+5
| | | | | | | | In Change-Id I1cee271fed0284a134ffed103c0d4bebbcfde2a8 we added support for a new session state IE, but we didn't add any value_string array for string conversion of it. Let's fix this. Change-Id: I3d9f087786dc37c42498fa9a2be07483ec93ba7b
* Add function gprs_nsvc_state_appendDaniel Willmann2018-06-141-0/+2
| | | | | | A common function to append the nsvc state from osmo-sgsn or osmo-gbproxy Change-Id: I7f0eaff7329ab98cad792d30b20ab053007aab85
* gsup: Add osmo_gsup_get_err_msg_type() functionHarald Welte2018-06-111-0/+1
| | | | | | | | This function can be used to resolve the error message type for a given message type. Can be used by generic error handlers that work for any incoming message type. Change-Id: Ic637bec53dd7fe3ec83da99b49b4eae34d5602b2
* gsm/gsm0480: refactor and expose gsm0480_parse_facility_ie()Vadim Yanitskiy2018-06-111-0/+2
| | | | | | | | | | | | | | This function can be used when there is only a part of GSM 04.80 message available - Facility IE, e.g. when a message is carried over GSUP/MAP. Let's expose it. Refactoring includes the following: - adding the 'gsm0480_' prefix; - correcting inverted return value; - cosmetic code style changes. Change-Id: I623c39ffbe6cdee65eade8435a2faa04d0da193e
* gsm/gsm0480.c: introduce gsm0480_extract_ie_by_tag()Vadim Yanitskiy2018-06-111-0/+2
| | | | | | | | In some cases, there is no need to parse the whole message, e.g. during the conversion from DTAP to GSUP/MAP. This function can be used to extract given IE from a message. Change-Id: I3989d061903352473305f80712f1a1560d05df3d
* vty: Add logging_vty_add_deprecated_subsysHarald Welte2018-06-091-0/+1
| | | | | | | | | | | | | This function permits the user to register deprecated log categories, which will ensure that if log categories are removed from a program, old config files will still load. We simply dynamically allocate a cmd_element and install it at CFG_LOG_NODE. Not registering it at VIEW_NODE or ENABLE_NODE ensures that it's not accessible from the interactive VTY, but only from the config file / configure node. Change-Id: I171f62ea2dc565b3a6c3eecd27fb7853e2529598
* fsm: Change semantics of LOGPFSML() log-levelHarald Welte2018-06-081-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The general idea about each osmo_fsm_instance having a separate log-level was to be able to selectively increase/show/enable logging for some FSM instances (e.g. of a particular subscriber) while maintaining normal logging verbosity for all other instances of the same FSM. The introduction of LOGPFSML() in Change-Id If295fdabb3f31a0fd9490d1e0df57794c75ae547 broke that idea, as it would use a compile-time log level, irrespective of the osmo_fsm_inst.log_level setting of the given instance. Let's combine the two: Use the explicit level stated at LOGPFSML(), _unless_ this instance has a higher log_level configured. This way, all FSMs should normally be created with osmo_fsm_inst.log_level == LOGL_DEBUG. At that point LOGPFSM() statements would be rendered at debug level, typically below the threshold of most logging configurations. Code that has explicit higher log levels like LOGPFSML(fi, LOGL_ERROR) would always be printed, as it is an error message. And if we now increase the osmo_fsm_inst.log_level, then even the normal LOGPFSM() statements would suddenly be logged at that higher level, selectively increasing log verbosity - like originally intended. Change-Id: I1820f04d0c6f5d5ff08eb95b8c0e88764534491a
* fix gsm0808_permitted_speech(): don't return HR3 for TCH_F + AMRNeels Hofmeyr2018-06-071-1/+1
| | | | Change-Id: Icca23940791f97fa64dbc3f2734270b99f9550c1
* Add osmo_isqrt32() to compute 32bit integer square rootHarald Welte2018-06-061-0/+2
| | | | Change-Id: I2b96db6e037e72e92317fec874877e473a1cf909
* tlv: Add TLVP_VAL_MINLEN() to obtain value _if_ length is >= minimumHarald Welte2018-06-021-0/+10
| | | | | | This is a combination of TLVP_VAP() and TLVP_GET_MINLEN() Change-Id: Ic5a177941219ebc3a3bceb3f68bdb3b2cacb934b
* gsm0808: Add value_string for LCLS related IEsHarald Welte2018-06-021-0/+15
| | | | Change-Id: I18d7a29496929c761aeaba9c0aee847befc13108
* add osmo_fsm_inst_state_chg_keep_timer()Neels Hofmeyr2018-05-311-0/+15
| | | | Change-Id: I3c0e53b846b2208bd201ace99777f2286ea39ae8
* GSUP: introduce new messages for SS/USSD payloadsVadim Yanitskiy2018-05-311-0/+11
| | | | | | | | | | | | | | | | | In order to be able to transfer SS/USSD messages via GSUP, this change introduces the following new message types: - OSMO_GSUP_MSGT_PROC_SS_*, and the following new IE: - OSMO_GSUP_SS_INFO_IE which represents an ASN.1 encoded MAP payload coming to/from the mobile station 'as is', without any transcoding. Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Related: OS#1597
* GSUP: implement TCAP-like session managementVadim Yanitskiy2018-05-311-0/+21
| | | | | | | | | | | | | | | | | | | | Unlike TCAP/MAP, GSUP is just a transport layer without the dialogue/context. This prevents us from having session based communication, required e.g. for USSD. But we can emulate TCAP dialogue by adding additional IEs, which would allow to relate each message to a particular session. This change introduces the following IEs: - OSMO_GSUP_SESSION_ID_IE, - OSMO_GSUP_SESSION_STATE_IE, which optionally can be used to indicate that the message is related to a session with given ID, and to manage session state, i.e. initiate, continue, and finish. Change-Id: I1cee271fed0284a134ffed103c0d4bebbcfde2a8 Related: OS#1597
* gsm0808: Add encoding functions for LCLS BSSMAP messagesHarald Welte2018-05-301-0/+5
| | | | Change-Id: Ib83143e467df068b7d462a8e51d94b9d961ce18f
* gsm_08_08.h: Add enum for LCLS config, control and statusHarald Welte2018-05-301-0/+28
| | | | Change-Id: I775aba59942fb6f34fb31b71d2f0f2ac5c3ae831
* ports.h: Add ctrl port for osmo-gbproxyDaniel Willmann2018-05-292-1/+2
| | | | Change-Id: I46a1cef3013c9bbf9b5a6d64e83cd84568f2523c
* Add enum gsm48_progress_descKeith2018-05-281-0/+12
| | | | | | | From GSM 04.08 Section 10.5.4.21 / Table 10.5.127 Change-Id: I6574e8808aaf39fad8026290aa2cc657734e18b5
* add gsm0808_create_handover_request_ack()Neels Hofmeyr2018-05-271-0/+4
| | | | | Related: OS#2283 (inter-BSC Handover, BSC side, MT) Change-Id: I692292a06c7d66004404560dc4ed933ca9107f9b
* add support for gsm0808 HANDOVER REQUIRED messageNeels Hofmeyr2018-05-272-0/+59
| | | | | Related: OS#2283 (inter-BSC Handover, BSC side, MO) Change-Id: Idb6dc3eab0282158a17091d97ed77c1e2e3eb3c2
* add gsm0808_cell_id_to_list()Neels Hofmeyr2018-05-271-0/+1
| | | | | | | | The idea is to be able to add a gsm0808_cell_id to a gsm0808_cell_id_list2: first convert it to a list, then re-use gsm0808_cell_id_list_add(). It will be used by osmo-bsc to manage neighbor-BSS cell identifiers from VTY. Change-Id: Ibf746ac60b1b1e920baf494b396658a5ceabd788
* ctrl: Add doxygen API documentation; generate html from itHarald Welte2018-05-261-6/+77
| | | | | Closes: OS#3293 Change-Id: I8dc2f24d4bf557ff7bb0f2f46881f9f8d9d7f86f
* Add enum gsm48_cause_coding from GSM 04.08 Section 10.5.4.11Keith2018-05-261-0/+8
| | | | Change-Id: I3d9c8e117ad19f70a3273650d7c0f8280d7bdb9a
* introduce vty_out_rate_ctr_group_fmt() functionStefan Sperling2018-05-241-0/+2
| | | | | | | | | | | | This new function can be used to print a rate counter group according to a format string. The intention is to generalize and replace manual printing of counters as implemented for the 'show statistics' VTY command of osmo-bsc. Related: OS#3245 Related: osmo-bsc commit 71d524c059c5a5c90e7cb77d8a2134c1c68b9cde (g#9217) Change-Id: Idb3ec12494ff6a3a05efcc8818e78d1baa6546bd
* mncc: properly export osmo_mncc_name()Harald Welte2018-05-241-0/+5
| | | | | | | For some strange reason, the osmo_mncc_name() inline function was not in the mncc.h header, but in the mncc.c file. Let's fix that. Change-Id: I2c3666510c981dffa4ba25bed517fd7ebd1250f5
* fix spellingThorsten Alteholz2018-05-151-2/+2
| | | | Change-Id: I3ac92217f83279d5f987ab34eb18b2e6cb1c7812
* isdnhdlc: Port from kernel to userspaceHarald Welte2018-05-112-23/+26
| | | | | | | | | | | * prefix all symbols/constants with osmo_ * use stdint.h types instead of kernel types * use Doxygen API documentation * use Osmocom CRC16-CCITT functions * use Osmocom bit-reversal functions * integrate with Automake Change-Id: I109085ab3e412c20b19cd42fb7137aa0e4167542
* import isdn4linux HDLC code from linux kernelHarald Welte2018-05-111-0/+82
| | | | | | | I've been importing from 94d7dbf108813ea45a91e27e9a8bd231d5a23fa7 but the isdnhdlc code hasn't seen any changes since 2012 anyway. Change-Id: I3c58f9cb6921c2fdd0f2fcb11f622a0be88c7c63
* Add osmo_timerfd_* functions for osmo_fd-wrapped timerfdHarald Welte2018-05-101-0/+7
| | | | | | | | | | | | | | | Linux offers file descriptor based periodic (interval) timers, which can achieve a higher precision than our userspace based timers and which can be slave'd to CLOCK_MONOTINIC or other clock sources. Let's add some code for osmo_fd wrapped versions that integrate well with our select() abstraction. The code has been used in osmo-bts-trx since June 2017 (change-id I51b19adde14ebb7ef3bb863d45e06243c323e22e), and I'm just renaming and moving it to libosmocore here. After a merge, the osmo-bts implementations can be removed in favor if this one. Change-Id: Ibeffba7c997252c003723bcd5d14122c4ded2fe7
* add gsm0808 channel enum to IE val conversion functionsNeels Hofmeyr2018-05-081-0/+107
| | | | | | | | | | | | | | | | | Add: - gsm0808_current_channel_type_1() - gsm0808_permitted_speech() - gsm0808_chosen_channel() - gsm0808_channel_type_name() gsm0808_permitted_speech() is moved from osmo-bsc's bssap_speech_from_lchan(); gsm0808_chosen_channel() is moved from osmo-bsc's lchan_to_chosen_channel(); Rationale: will be re-used by inter-BSC handover, makes sense to keep with the other gsm0808 utils. Related: OS#2283 (inter-BSC handover, BSC side) Change-Id: I8a3cc5d4548e9a78d945d54c69ccced251edcec9
* define a constant for the max length of called party BCD IEStefan Sperling2018-05-071-0/+1
| | | | | | | | | | | | According to TS 24.008 10.5.4.7 the called party BSC number IE has a maximum length of 43 octets. This length is assumed inside osmo-hlr with a magic number: uint8_t msisdn_enc[43]; /* TODO use constant; TS 24.008 10.5.4.7 */ This change makes libosmocore provide a constant which osmo-hlr can use. Change-Id: Ia0bf6ceadcac38a8c75d166402b54058e5c6c6d4