summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* 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
* gprs_ns.h: Declare gprs_ns_cause_str() which already existed in c fileHarald Welte2018-07-221-0/+1
| | | | Change-Id: Ia95f0cc8d110f95814173bb5a1c11bd85d8cd533
* rate_ctr: Improve loggingPau Espin Pedrol2018-07-211-15/+20
| | | | | | | Previous logic regarding logging of verification and mangling of rate_ctr groups made it difficult to debug when an issue occurrs. Change-Id: I992d165cab5ee6ca9b5b7e4a2210a0951954bd34
* tests: codec: ecu_fr: Add buffer with unequal XMAXC valuesPau Espin Pedrol2018-07-212-17/+47
| | | | | | | This buffer verifies that all XMAXC fields must be zero before the entire buffer is considered as silent by osmo_ecu_fr_conceal(). Change-Id: I14a192d001b5e167437cedbe76a1a3dd84dde35c
* tests: codec: ecu_fr: Print XMAXC fieldsPau Espin Pedrol2018-07-212-25/+54
| | | | | | | This makes it easy to debug how XMAXC fields are decreased every iteration in osmo_ecu_fr_conceal(). Change-Id: I678d4be5e0b15b05873b0d3bf5ea5bbee7bef839
* libosmocodec: FR err concealment: Fix too many silent frames generatedPau Espin Pedrol2018-07-211-10/+6
| | | | | | | | | | | | | As stated in its own documentation, reduce_xmaxcr_all() should only return true when ALL XMAXC fields return true. However, previous implementation returned true when at least one of them returned true. As a result, if any of the sections is silent (for instance because one of the bursts was lost), the whole frame is silenced, returning a zeroed buffer. Related: OS#2700 Fixes: 40def49ac4b8babbd1b17c232137ce50a428706b ("libosmocodec: implement ECU (Error Concealment Unit) for FR") Change-Id: I1624b7c6574f53d0593a61645d4fdc5d56cabe96
* vty: initialize termios before using itAlexander Couzens2018-07-201-1/+1
| | | | | | | valgrind complains about using unitialised bytes in syscalls. I could imagine this happens when tcgetattr fails to set termios. Change-Id: I9d165911fa3127afa8f836fa5c5c2e14a949474a
* add osmo_sockaddr_to_str_and_uint()Neels Hofmeyr2018-07-204-0/+148
| | | | | | | | | 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
* utils_test: check stderr to catch sanitizer issuesNeels Hofmeyr2018-07-203-2/+3
| | | | | | | Recent OS#3407 shows that we should verify stderr to catch sanitizer failures. (They might not always be ignorable like that one.) Change-Id: Ic9e437a1cc96ae081e0fd6a9b6e3156987e14c0c
* utils_test: fix isqrt_test calculation rangeNeels Hofmeyr2018-07-201-1/+1
| | | | | | | | | | | | | | | | Multiplying the uint16_t x by itself seems to default to be calculated in int32_t range, while it obviously needs uint32_t. This causes sporadic sanitizer barfs: Testing integer square-root utils_test.c:445:18: runtime error: signed integer overflow: 60369 * 60369 cannot be represented in type 'int' The final result is still correct, because it is in fact interpreted as uint32_t. Cast to uint32_t to make sure the sanitizer doesn't complain. Related: OS#3407 Change-Id: I83c14e38deaa466d977ee43c9420534ed90f090d
* libosmocoding: clarify return values for TCH decoding functionsPau Espin Pedrol2018-07-191-4/+8
| | | | Change-Id: I7d6c61e6a1b5d1fae26f385b420ff55246c4b62f
* tests: ctrl: Test received ERROR messages are handled correctlyPau Espin Pedrol2018-07-162-2/+55
| | | | Change-Id: I3c8e95aaa1ca222d4cd1395e548f8461bf9d4cd6
* ctrl: ctrl_handle_msg: Avoid sending back received ERROR msgsPau Espin Pedrol2018-07-161-2/+3
| | | | Change-Id: I396fd1e7548beea31b2b7aa9f764edb765b02941