summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* coding: Correctly count bits when decoding EDGE bursts with MCS >= 7.Alexander Chemeris2018-09-051-1/+8
| | | | | | They consist of two blocks, so we should count both blocks. Change-Id: I560de192212dae4705054a1665726369b83d213a
* core/utils.h: move includes to the topVadim Yanitskiy2018-09-051-3/+2
| | | | | | | Having all inculdes listed in one place is a common good practice, which prevents one from adding duplicates. Change-Id: I3f52189d5e8f9afafc39525e95385a085f8f850a
* core/utils.h: drop duplicate '<stdbool.h>' includeVadim Yanitskiy2018-09-051-1/+0
| | | | Change-Id: I0979ddda91c4c0aa080b714cf2a698d7634f5091
* Add RSPRO support to IPA and logging definitionsHarald Welte2018-09-032-1/+3
| | | | Change-Id: Iee79f5273f32cb9ce4bd7a984e7f0625542e776f
* Add CC_CAUSE value_string arrayKeith2018-09-023-0/+59
| | | | | | | Adds a value_string array for GSM 04.08 Call Control cause values Change-Id: I296f208581ce2550805f9d96e20f7319e1199023
* osmo-release.sh: Add checks to help avoid libversion debian major mismatchPau Espin Pedrol2018-08-301-2/+39
| | | | Change-Id: Ie0f6a2f9d60908b36f90921bfba3fc31606e5027
* osmo-release.sh: Allow forcing release without LIBVERSION bumpPau Espin Pedrol2018-08-301-2/+5
| | | | | | | | | Sometimes a fix release may be required which only contains fixes to parts not related to a shared library, for instance a fix in the build system. Thus allow releasing without bumping LIBVERSION, but only through env var setting for people who know what they are doing. Change-Id: I91e186d47638038bc2968ea0178879365ffc9512
* osmo-release.sh: Add quotes to string to fix shellcheck warningPau Espin Pedrol2018-08-301-1/+1
| | | | Change-Id: I40376c99d44552d9b8023fca8d319a9312b0fbb0
* Properly deal with sockaddr_un socket path length limitations.Stefan Sperling2018-08-291-4/+11
| | | | | | | | | In osmo_sock_unix_init(), add support for non-NUL-terminated unix socket paths and return an error if the supplied socket path exceeds the maximum socket path length supported by the operating system. Change-Id: I19d935e5e3dd7928e6e153c6f5ad7044de726016 Related: OS#2673
* properly handle mandatory cli param of gsm0808_create_paging2Stefan Sperling2018-08-291-5/+4
| | | | | | | | | | | The cell identifier list parameter is mandatory. Document it as such, and tweak code which treated it like an optional parameter. No functional change. The existing code already asserts that a non-NULL value is passed for this parameter. Change-Id: I3716f9d5b210e0a7e6f45c9fe3fc34024e5234ad Related: OS#3021
* gsm0808: inter-bsc HO messages: add missing BSSMAP header, x4Neels Hofmeyr2018-08-281-0/+12
| | | | Change-Id: I9e128ba775227de5e4010f024338a78584f777ea
* log: add 'last' option to 'logging print file'Neels Hofmeyr2018-08-273-8/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow printing the source file information *after* the log information. Add target->print_filename_pos, log_set_print_filename_pos() and enum log_filename_pos, and the optional 'last' keyword to the 'logging print file' vty command. (An enum in case we want to add other positions later.) Rationale: on log lines, the logging context is usually printed first in the logging text. Without the source file information, this logging context pretty much aligns in an easily readable way. When adding the source file information, each line's logging context info is shifted right by a pretty much random amount and it is hard to spot recurring logging contexts. One solution is to switch off source file info, of course, but that's not an option when actively hacking on bugs and new features. For example, it is unnecessarily hard to spot lchan FSM related log lines in this osmo-bsc log snippet: DRSL NOTICE mgw_endpoint_fsm.c:603 mgw-endpoint(conn0){WAIT_MGW_RESPONSE}: Freeing instance DRSL NOTICE fsm.c:381 mgw-endpoint(conn0){WAIT_MGW_RESPONSE}: Deallocated DMSC NOTICE mgw_endpoint_fsm.c:603 SUBSCR_CONN(conn0){CLEARING}: Received Event FORGET_MGW_ENDPOINT DCHAN DEBUG lchan_rtp_fsm.c:741 lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: Received Event LCHAN_EV_RTP_RELEASED DCHAN DEBUG lchan_rtp_fsm.c:520 lchan_rtp(0-0-1-TCH_F-0){ROLLBACK}: Freeing instance DCHAN DEBUG fsm.c:381 lchan_rtp(0-0-1-TCH_F-0){ROLLBACK}: Deallocated DCHAN DEBUG lchan_rtp_fsm.c:520 lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: Received Event LCHAN_EV_RTP_RELEASED DCHAN DEBUG lchan_fsm.c:1232 lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: state_chg to WAIT_RF_RELEASE_ACK DRSL NOTICE handover_fsm.c:762 handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Terminating (cause = OSMO_FSM_TERM_REGULAR) DRSL NOTICE handover_fsm.c:762 handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Freeing instance DRSL NOTICE fsm.c:381 handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Deallocated DCHAN DEBUG lchan_fsm.c:1196 lchan(0-0-1-TCH_F-0){WAIT_RF_RELEASE_ACK}: state_chg to BORKEN DCHAN DEBUG lchan_fsm.c:354 lchan(0-0-1-TCH_F-0){BORKEN}: (type=TCH_F) Clearing lchan state DLMGCP DEBUG mgcp_client.c:741 Tx MGCP msg to MGCP GW: 'DLCX 3 2@mgw MGCP 1.0' DLMGCP DEBUG mgcp_client.c:743 Sending msg to MGCP GW size: 66 DRLL NOTICE mgcp_client_fsm.c:422 MGCP_CONN(to-BTS){ST_DLCX_RESP}: Received Event EV_DLCX_RESP Placing the source file info behind the log text makes it much easier to follow, while the source file info is still available: DRSL NOTICE mgw-endpoint(conn0){WAIT_MGW_RESPONSE}: Freeing instance (mgw_endpoint_fsm.c:603) DRSL NOTICE mgw-endpoint(conn0){WAIT_MGW_RESPONSE}: Deallocated (fsm.c:381) DMSC NOTICE SUBSCR_CONN(conn0){CLEARING}: Received Event FORGET_MGW_ENDPOINT (mgw_endpoint_fsm.c:603) DCHAN DEBUG lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: Received Event LCHAN_EV_RTP_RELEASED (lchan_rtp_fsm.c:741) DCHAN DEBUG lchan_rtp(0-0-1-TCH_F-0){ROLLBACK}: Freeing instance (lchan_rtp_fsm.c:520) DCHAN DEBUG lchan_rtp(0-0-1-TCH_F-0){ROLLBACK}: Deallocated (fsm.c:381) DCHAN DEBUG lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: Received Event LCHAN_EV_RTP_RELEASED (lchan_rtp_fsm.c:520) DCHAN DEBUG lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: state_chg to WAIT_RF_RELEASE_ACK (lchan_fsm.c:1232) DRSL NOTICE handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Terminating (cause = OSMO_FSM_TERM_REGULAR) (handover_fsm.c:745) DRSL NOTICE handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Freeing instance (handover_fsm.c:745) DRSL NOTICE handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Deallocated (fsm.c:381) DCHAN DEBUG lchan(0-0-1-TCH_F-0){WAIT_RF_RELEASE_ACK}: state_chg to BORKEN (lchan_fsm.c:1196) DCHAN DEBUG lchan(0-0-1-TCH_F-0){BORKEN}: (type=TCH_F) Clearing lchan state (lchan_fsm.c:354) DLMGCP DEBUG Tx MGCP msg to MGCP GW: 'DLCX 3 12@mgw MGCP 1.0' (mgcp_client.c:741) DLMGCP DEBUG Sending msg to MGCP GW size: 67 (mgcp_client.c:743) DRLL NOTICE MGCP_CONN(to-BTS){ST_DLCX_RESP}: Received Event EV_DLCX_RESP (mgcp_client_fsm.c:422) Implementation: for 'last', insert source file info only when an '\n' is found at the end of the log line composition buffer, so that LOGP()...LOGPC() constructs also print source file info only when a log line actually ends. Change-Id: I393907b3c9e0cc1145e102328adad0a83ee13a9f
* gsmtap_util: make sure SO_REUSEADDR is applied for GSMTAPPhilipp Maier2018-08-241-1/+3
| | | | | | | | | | | | | | When gsmtap adding a new sink it does not supply OSMO_SOCK_F_UDP_REUSEADDR in order to have SO_REUSEADDR applied. In most cases, the gsmtap sink is just receiving packets to toss them immediately, so having one of them is sufficient. However, in other use cases - particularly virt_phy - we actually want to receve and process GSMTAP messages via multicast Applying SO_REUSEADDR (like we did before disabling it globally for UDP in I4a8ffb8d598aca88801a4a0322944d7cdd8d4047 on August 1st) resolves the issue. Change-Id: I1399a428467ca12f1564a14eb8ffb294d4f59874 Related: OS#3497
* socket: add flag to enforce SO_REUSEADDR on UDP socketsPhilipp Maier2018-08-232-3/+5
| | | | | | | | | | | | | | | | | | | When IPPROTO_UDP is used then SO_REUSEADDR omitted since UDP is connection less we do not have to wait until lingering connections time out. There were also negative effects such as that two applicatications could use the same UDP port, normally one of the two applications would get an error, but with SO_REUSEADDR this is supressed. However, there are applications (UDP MULTICAST) where two applications must be able to use the same port. In the osmocom project those are osmo-bts-virtual, virtphy and gsmtap in general. Lets introduce a flag that the API user can supply in order to have SO_REUSEADDR applied. - Add new flag OSMO_SOCK_F_UDP_REUSEADDR Change-Id: I94aaf6d5224ab23bde5ea5c4a83569b6145ab32b Related: OS#3497
* ipa: Document ipa_msg_recv* functionsPau Espin Pedrol2018-08-221-0/+22
| | | | Change-Id: Ie81e9dd9f9936a414e7cebb2bccffa6f42a302a7
* use __FILE__, not __BASE_FILE__Neels Hofmeyr2018-08-205-15/+15
| | | | | | | | | | | | | | | The intention was to use the file's basename, but __BASE_FILE__ means "the root file that is being parsed and contains #include statements". If we had a function using __BASE_FILE__ and that was defined in an #included file, __BASE_FILE__ would indicate the first file where the #include is, and not the file where the function is defined. __BASE_FILE__ works for us because we don't ever include function definitions that log something, so __BASE_FILE__ always coincides with __FILE__ for our logging; but still __BASE_FILE__ is semantically the wrong constant. Related: OS#2740 Change-Id: Ibc1d3746f1876ac42d6b1faf0e5f83bd2283cdcc
* vty: Makefile: Fix LIBVERSION typo introduced in 0.12.0 releasePau Espin Pedrol2018-08-201-1/+1
| | | | | | | Setting age to 5 is cleary an error, it should be increment by one instead as APIs were added 0.11->0.12 and none modified or removed. Change-Id: I3b3bc808349bc2f949ef9eef64f39e7202ddf946
* msgb: Introduce msgb_{de,en}queue_count APIsPau Espin Pedrol2018-08-171-0/+34
| | | | | | | | | | It's a common pattern having a list of msgb and having to maintain its size (for instance, to limit the maximum size of the list). Having the counter updated at the same time that the msgb is enqueued or dequeued helps avoiding introducing new bugs by forgetting to update the size counter at the right places. Change-Id: I33b501e89a8f29e4aa121696bcbb13d4b83db40f
* signal: Introduce API osmo_signal_talloc_ctx_initPau Espin Pedrol2018-08-162-0/+10
| | | | | | | | | | | | Otherwise applications need to use "extern void* tall_sigh_ctx" and set it manually (that symbol is not exported in any header file) or end up allocating struct signal_handler into the NULL talloc ctx. API created in a similar way as already existing msgb_talloc_ctx_init(), but without the pool_size because it's not considered necessary in this case. Change-Id: Id58ca18eb826b8f4183a7cf0dbb2b38cba702a09
* bssgp: introduce flush queue functionsAlexander Couzens2018-08-103-0/+33
| | | | | | | | | | | | 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
* debian/rules: Don't overwrite .tarball-versionHarald Welte2018-08-061-4/+0
| | | | | | | | | | | The .tarball-version file should contain the *source version* uniquely identifying the git commit, and not the Debian package name. With https://gerrit.osmocom.org/#/c/osmo-ci/+/10343/ there is a correct .tarball-version file in the .tar.xz of the nightly source packages. Change-Id: Ibeb6d273e2d26f37a36cbde4a948ce95395491f8 Related: OS#3449
* libosmogsm: (re)introduce gsm48_push_l3hdr()Vadim Yanitskiy2018-08-057-24/+49
| | | | | | | | | | | | | There was gsm0480_l3hdr_push() declared in a header file, but not exposed in 'libosmogsm.map'. Furthermore, for some reason it was a part of GSM 04.80 API, what is not actually correct. Let's rename this symbol, and properly expose it as a part of the GSM 04.08 API. Also, let's introduce an auxiliary wrapper for messages, where the transaction identifier is required (see GSM 04.07, section 11.2.3.1.2). Change-Id: I8a045efe8335d83fcbe8d43eb180972e3b1d9dda
* gsm/gsm0480.c: use the local msgb allocatorVadim Yanitskiy2018-08-051-3/+3
| | | | Change-Id: I23b4b0e1c237b9b27c1db1c9a824b5329d41a38b
* gsm/gsm0480.c: prevent NULL-pointer dereferenceVadim Yanitskiy2018-08-051-2/+10
| | | | Change-Id: I444d95941837458b46e581298f76f3a9926c8552
* vty/vty.c: fix bug in vty_config_writeMykola Shchetinin2018-08-051-0/+2
| | | | | | | | | | | the vty_config_write function should write: line vty login to the configuration file when the login is enabled. Otherwise after saving the configuration the next login will be performed without password checking (password_check variable will be 0 though it must be 1) Change-Id: I39050b6bf617dac10d3fccc3106f67bdcca1d05a
* comp128v23 (minor): update original code site and authorKévin Redon2018-08-041-2/+4
| | | | | | | I was contacted by the (previously unknown) author who provided the new location of the original code. Change-Id: I2dabab20ad018ce473817986bdb250131c010bf1
* socket: do not set SO_REUSEADDR for IPPROTO_UDPPhilipp Maier2018-08-021-25/+33
| | | | | | | | | | | | | When UDP is used as protocol (proto=IPPROTO_DUP), then we should not set SO_REUSEADDR in the socket option. Because if we do, we allow two processes to bind on the same UDP port. The errornous situation will be undetectable to both applications. So lets only set SO_REUSEADDR when we do not use UDP. - Add check if we use UDP, if yes do not set SO_REUSEADDR Change-Id: I4a8ffb8d598aca88801a4a0322944d7cdd8d4047 Related: OS#3441
* socket: check return code of setsockoptPhilipp Maier2018-08-021-1/+8
| | | | | | | | | | the return code of the last setsockopt() call in osmo_sock_init() is not checked. Since all other calls to setsockopt are checked, lets check this one as well. - check return code of setsockopt() and close the socket on failure Change-Id: I96dbccc3bcff35bf39979dbe0c44aadc8ce20c83
* re-introduce ipa_ccm_idtag_parse_off()Harald Welte2018-08-013-6/+16
| | | | | | | | | 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
* jenkins_arm.sh: Use same Werror related options as on other buildsHarald Welte2018-08-011-1/+5
| | | | Change-Id: I45ab11b461a35923853f38b5bedd5025f53cc5b5
* Deprecate ipa_ccm_idtag_parse() with ipa_ccm_id_{get,resp}_parse()Harald Welte2018-08-015-15/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* cosmetic: More context / naming / comment for test_idtag_parsing()Harald Welte2018-07-311-2/+3
| | | | Change-Id: I1ebeba2067549e0dd1541fa84715d44321ff3b43
* import oap_client_test from osmo-sgsnHarald Welte2018-07-306-39/+322
| | | | | | | As oap_client has moved from osmo-sgsn to libosmogsm, it is only fair that the related unit test shall also be moved here. Change-Id: I9d64e10b4bacac9b530cf077841bad762fc6d558
* oap_client: Rename symbols with osmo_ prefixHarald Welte2018-07-303-41/+41
| | | | | | | | 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-305-1/+369
| | | | | | | | | 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
* vty/vty.c: remove dead unused tall_bsc_ctxVadim Yanitskiy2018-07-301-2/+0
| | | | Change-Id: I160728544c0effe45757df22f1ff2314fcb13dd1
* 04.80: New gsm0480_gen_{reject,return_error}() functionsHarald Welte2018-07-293-0/+68
| | | | | | | 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-293-1/+24
| | | | | | | | | | 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-293-1/+9
| | | | Change-Id: If25b467481023eadaaf3f78157eceff4b81d24d2
* ctrl/vty: fsm: use correct element when iterating over fsm->proc.childrenAlexander Couzens2018-07-292-2/+2
| | | | | | | Fixes crashes when using vty `show fsm-instances all` when fsm children are present. Change-Id: I4ae0bee7f7f57ec6675cfb52ca6cf0d523d15362
* cosmetic: osmo-sim-test.c: use memcpy instead of strncpyNeels Hofmeyr2018-07-271-1/+2
| | | | | | | gcc 8.1.0 complains that the terminating \0 is not copied by strncpy, while this code intends to do exactly that. Use memcpy instead. Change-Id: I8d66fa22502c04d11ae153b9856d7e54f3492dd6
* fix strncpy bugs in socket.cNeels Hofmeyr2018-07-271-2/+1
| | | | Change-Id: Iddf36d26b23dcef4f9b291fd7ead1907e38c3486
* fix strncpy bugs in gsm/ipa.cNeels Hofmeyr2018-07-271-7/+6
| | | | Change-Id: I423a24c55c9b9aa6fc8f501df94fe54c71ee2b2b
* 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
* Bump version: 0.11.0.91-9d4a3-dirty → 0.12.0Pau Espin Pedrol2018-07-2712-18/+131
| | | | Change-Id: I7e66432f37e13fd4c31389e3d89593fa0981e58f
* logging.c: Fix whitespace typoPau Espin Pedrol2018-07-261-1/+1
| | | | Change-Id: I943763e175dca6f3078923a494b052319b78574d
* logging_vty: Simplify code in config_write_log_singlePau Espin Pedrol2018-07-251-7/+1
| | | | | | | | | Since we ignore "logging level CAT everything" in logging_level_cmd, we can never run into the case in which we have loglevel==EVERYTHING, so we can simplify this code and make it esier for later removal of everything keyword. Change-Id: I4e76c65a11cc22616c6dfc632435617ebb861c03
* logging: log_vty_command_string: Fix undercount of buf alloc sizePau Espin Pedrol2018-07-251-1/+1
| | | | Change-Id: I7aca0ce3d2981001e8081f7cee0dea3e2aaf8f7c
* stats_statsd: sanitize statsd nameAlexander Couzens2018-07-251-1/+22
| | | | | | | | The statsd protocol use ':' as seperator between name and value. It's not allowed to use the seperator in a name. Replace ':' with '.' before sending the packet to the statsd server. Change-Id: Ib46d08481e8ca04afd97cb9ae241e4e39c91ad66
* stats_vty: Add asciidoc sections between the different countersDaniel Willmann2018-07-241-0/+3
| | | | Change-Id: Ie37be744abd8c47211d64877bcd17f94465bd423