summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* 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
* osmo_panic(): Annotate as __attribute__ ((noreturn))Harald Welte2018-06-292-2/+9
| | | | | | | | | | 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-283-5/+5
| | | | | | | | | 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
* jenkins_arch.sh: Exit with error on unknown architectureHarald Welte2018-06-281-0/+1
| | | | | | | | | The jenkins build job used to call this script using an "arch" it doesn't understand. This should have resulted in an error, but it didn't as there was a missing "exit 1" statement :( Related: OS#3360 Change-Id: Ib27c9ebaf2630c432b1923f8e14b36e7772a6033
* jenkins_arch.sh: Accept "arm-none-eabi" as alias for "arm"Harald Welte2018-06-281-1/+1
| | | | | | | | | | The jenkins build job is calling the script using "amd64" and "arm-none-eabi", while the script expects "amd64" and "arm". Let's add "arm-none-eabi" as an alias for "arm". Closes: OS#3360 Change-Id: Idedd4778a63d67cdbf4f4d538bf4a225abb7547a
* jenkins_arm.sh: Don't run 'make check' on embedded buildsHarald Welte2018-06-281-1/+1
| | | | | | | If we're cross-compiling for arm-none-eabi, we cannot execute test programs. Change-Id: I64e88a31091b67c37c308c44013c42d4574d2312
* Fix embedded (arm-none-eabi) buildsHarald Welte2018-06-285-0/+28
| | | | | | | | | Due to OS#3360, build testing for arm-none-eabi was unfortunately skipped for a long time. This is a number of fixes that make the compile test pass again. Related: OS#3360 Change-Id: I88e3c8e1a8786ca2a6a023b0d27c74be200a8588
* return error to sender upon bssgp_tlv_parse() failureStefan Sperling2018-06-251-0/+2
| | | | | | | | | | Return "invalid mandatory information" error status to the sender in case bssgp_tlv_parse() failed. To avoid loops, do not respond with an error status to STATUS PDUs which failed parsing. Change-Id: If73719b75a94d6742bdefc9b6572525cb00a96ee Related: OS#3178
* check bssgp_tlv_parse() return code in bssgp_rcvmsg()Stefan Sperling2018-06-251-0/+5
| | | | | | | | | | | The return code from bssgp_tlv_parse() was not checked for a parsing error. In case of a parsing error the stored return code could have been overwritten later in this function. Explicitly check for a parsing error and log corresponding packets. Change-Id: Id3d7c52ec3df2bcf4efcee0e0b14fe22ef96964e Related: OS#3178
* add and tweak inter-BSC HO APINeels Hofmeyr2018-06-184-2/+129
| | | | | | | | | | | | | | | | | | 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: lapdm.c: Add missing new line char in notice log stringPau Espin Pedrol2018-06-181-1/+1
| | | | Change-Id: I92c78ea01570dc1f4be11b113c07f0aa3b342c8f
* gsm 04.80: Add value_string for component type and op codeHarald Welte2018-06-163-0/+44
| | | | Change-Id: I2615a88db5224d65f37c7cc505e183ec8b196e8a
* gsup: Add value_string for Session State IEHarald Welte2018-06-163-0/+14
| | | | | | | | 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-143-0/+25
| | | | | | 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-113-0/+25
| | | | | | | | 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-115-16/+81
| | | | | | | | | | | | | | 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-115-0/+172
| | | | | | | | 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-092-0/+22
| | | | | | | | | | | | | 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
* vty: Don't dump deprecated commands in XML exportHarald Welte2018-06-091-2/+4
| | | | | | | we don't want to include deprecated commands in our VTY reference manuals. Change-Id: I5e179c9dca297b8c4bdbdf4e0e5b1d69eecc4232
* 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-064-0/+66
| | | | Change-Id: I2b96db6e037e72e92317fec874877e473a1cf909
* Doxygen: gitignore generated files for libosmoctrlVadim Yanitskiy2018-06-051-0/+2
| | | | Change-Id: Ia888d14c6e1f76374addd9b1ee66523f82fc06c9
* 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-023-0/+51
| | | | Change-Id: I18d7a29496929c761aeaba9c0aee847befc13108
* add osmo_fsm_inst_state_chg_keep_timer()Neels Hofmeyr2018-05-314-31/+184
| | | | Change-Id: I3c0e53b846b2208bd201ace99777f2286ea39ae8