summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* 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
* ctrl: Introduce ctrl_cmd_parse3 APIPau Espin Pedrol2018-07-163-1/+22
| | | | | | | | | 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
* coding: Documentation typo fix.Alexander Chemeris2018-07-141-1/+1
| | | | Change-Id: I6ca873b3decaf50e7b79b5ab2269919c862a4fe0
* coding: Fix (E)GPRS BER calculation to correctly account for puncturing.Alexander Chemeris2018-07-141-5/+24
| | | | | | | | Previously we didn't take into account puncturing and BER was always around 30% for GPRS/EDGE bursts because of they use puncturing coding unlike "classical" GSM bursts. Change-Id: I9da22e7051522d06d923fcec3b63cbed8db93910
* gsm0808: Add value_string for encryption algorithmsPau Espin Pedrol2018-07-123-0/+14
| | | | Change-Id: Iadf6460c438d02c53c2eaa9e42d51844ad28859a
* ctrl: Fix parsing of ERROR recvd msgs with id=errPau Espin Pedrol2018-07-121-1/+2
| | | | | | | | | | | Our implementation generates ERROR CTRL messages with ID=error when it is unable to parse a CMD. However, it doesn't account for them when trying to receive and parse this kind of message. As a result, it will return an ERROR message with a different description. This commit fixes the old behaviour to success at parsing and returning the received description to the caller. Change-Id: I564ab1a7e845388f87accda44fbf165e5adc2480
* ctrl: Log CMD TYPE on invalid ID numberPau Espin Pedrol2018-07-121-1/+2
| | | | Change-Id: Ia890d4b841ef02342cc1cf7f5926866b040dc8ab
* gsm_08_08: gsm0808_permitted_speech does not have value stringsPhilipp Maier2018-07-123-0/+19
| | | | | | | 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
* vty: fix use-after-free and memleaks in is_cmd_ambiguous()Neels Hofmeyr2018-07-113-20/+124
| | | | | | | | | | | | | | | | | | | | | | | vty_test: add test against ambiguous cmd causing use-after-free and memory leaks. Add this test along with the fix, because the new test triggers the memory use-after-free and leaks, causing build failures. Add cmd_deopt_with_ctx() to allow passing a specific talloc ctx. is_cmd_ambiguous(): keep all cmd_deopt() allocations until the function exits. Add a comment explaining why. Before this, if a command matched an optional "[arg]" with square brackets, we would keep it in local var 'matched', but we would free the string it points to at the end of that loop iteration; upon encountering another match, we would attempt to strcmp against the freed 'matched'. Instead of adding hard-to-read and -verify free/alloc dances to keep the 'matched' accurately freed/non-freed/..., just keep all cmd_deopt() string allocated until done. Needless to say that this should have been implemented on a lower level upon inventing optional args, but at least this is fixing a program crash. Related: OS#33903390 Change-Id: Ia71ba742108b5ff020997bfb612ad5eb30d04fcd
* vty: cosmetic: cmd_deopt(): use talloc_strndup(), not memcpy()Neels Hofmeyr2018-07-091-8/+1
| | | | Change-Id: Ibf870ae02be706f802482f7cff6589a70cde8320
* vty/command.c: talloc from tall_vty_cmd_ctx, not NULLNeels Hofmeyr2018-07-091-3/+3
| | | | Change-Id: Iaa409b4f63557c8fb028bbb322b5e7253393c05c
* Don't enforce Python 2 for utilitiesVadim Yanitskiy2018-07-025-5/+6
| | | | | | | | | | | 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