summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* memleak: _gsmtap_raw_output(): free msg in case of vsnprintf failureNeels Hofmeyr2018-02-161-1/+3
| | | | | | Don't just return, free the allocated msg first. Change-Id: I51431ae7baca33ce5bab085cc3efe25f1a10b6d1
* memleak: fix all libosmocore callers of gsmtap_sendmsg() to free on failureNeels Hofmeyr2018-02-162-2/+8
| | | | | | | gsmtap_sendmsg() does not free the msgb if it returns a failure rc, so the callers must check the rc and free the msg. Change-Id: I7cf64ed9b14247298ed8b4ab8735627f8235a499
* memleak: gsmtap_sendmsg(): don't return 0 when no data was writtenNeels Hofmeyr2018-02-161-1/+1
| | | | | | | | | | | | If less than the msgb size was written by write(), we want to return -EIO. Hence do not return zero when write() wrote zero bytes, return -EIO in that case as well. Previously, if write() returned zero, gsmtap_sendmsg() would return zero *without* freeing the msg, hence neither would the (ideal) caller. So this fixes a corner-case memleak. Change-Id: I099ae1c663c018da5db884f7e9d52c45af3ed817
* gsmtap_sendmsg(): clarify API doc concerning msgb ownershipNeels Hofmeyr2018-02-161-0/+3
| | | | | | | | | | | | Not freeing on error does enable callers to try to re-send as well, so it is a kind of useful feature, even though I find it likely for callers to either forget about freeing the msg on error or double-free by accident... I considered changing gsmtap_sendmsg() to always free, but since it is public API, I chose to keep and document its current behavior properly instead. We don't know what callers may exist out there. Change-Id: Id3266ce36442024f16eaf6afa3f516d201930c41
* fsm: Add a function to change the FSM instance ID laterDaniel Willmann2018-02-152-6/+27
| | | | | | | Sometimes we want to create an FSM instance before we know its name. In that case we should be able to update the id later. Change-Id: Ic216e5b11d4440f8e106a297714f4f06c1152945
* Add function to encode classmarkMax2018-02-153-0/+18
| | | | | | The code is based on Osmocom-BB implementation. Change-Id: I78f6968edaa3ed535673411fb2a80060a472290f
* Add generic Mobile Identity encoderMax2018-02-153-14/+19
| | | | | | | | Add generic function which allows caller to set Mobile Identity explicitly. This allows to use IMEI or IMEISV for example. Make gsm48_generate_mid_from_imsi() into wrapper around new function. Change-Id: Id79be7abfff75ecd0d248bbeed93e605abeec9b3
* Add test for gsm48_generate_mid_from_imsi()Max2018-02-152-0/+14
| | | | Change-Id: Ibe5c0831268c788ceecd10fd7b22ece6480da817
* talloc_ctx_vty: Fix help strings (missing \n at end of line)Harald Welte2018-02-141-3/+3
| | | | | | | | | | | | | | | | | | | | | | | This was causing build failures in applications using this library feature: Documentation error (missing docs): <command id='show talloc-context (application|all) (full|brief|DEPTH) tree ADDRESS'> <param name='ADDRESS' doc='(null)' /> Documentation error (missing docs): <command id='show talloc-context (application|all) (full|brief|DEPTH) filter REGEXP'> <param name='REGEXP' doc='(null)' /> Documentation error (missing docs): <command id='show talloc-context (application|all) (full|brief|DEPTH) tree ADDRESS'> <param name='ADDRESS' doc='(null)' /> Documentation error (missing docs): <command id='show talloc-context (application|all) (full|brief|DEPTH) filter REGEXP'> <param name='REGEXP' doc='(null)' /> Change-Id: I785c852e3313d20eade79746a7cd485d2d5908ea
* build: Ensure all .pc files are installedMartin Hauke2018-02-141-1/+1
| | | | Change-Id: I824e63087021adfda81bd0f867a3fdb5e9efcf7a
* gsmtap.h: define TETRA DMO mode channelsallesklar22018-02-141-0/+5
| | | | Change-Id: I98976c0ff16a69b2508a79259ed1aeaec51e7549
* Add helper functions for ACC bit flags in rach control IE.Stefan Sperling2018-02-131-2/+43
| | | | | | | | | | Add inline functions to manipulate and query ACC flag bits in the rach_control.t2 and rach_control.t3 octets. These function definitions also serve as documentation of the purpose of rach_control.t2/t3. Change-Id: I8f0a65c2980f86eb5c43f3bebe727f4d4d973163 Related: OS#2591
* Add GSM 04.08 type-of-number / numbering-plan-id definitionsHarald Welte2018-02-091-0/+22
| | | | Change-Id: Idd8d8a7a1c7f0b6cb9318e4f19ebadb415df2ed1
* debian/control: Fix Vcs-Browser URLHarald Welte2018-02-091-1/+1
| | | | Change-Id: I89bff8fcb8e0b7c0a0e415d4eee1636c21b8f8de
* osmo_msgbdump_{l2,l3}(): Proper typecastHarald Welte2018-02-091-2/+2
| | | | | | | | | | | | This avoids compiler warnings like /tmp/work/sysmobts_v2-poky-linux-gnueabi/osmo-pcu/0.4+gitAUTOINC+4c112dc5a6-r1.18/recipe-sysroot/usr/include/osmocom/core/msgb.h: In function 'const char* msgb_hexdump_l2(const msgb*)': error: invalid conversion from 'void*' to 'const unsigned char*' [-fpermissive] return osmo_hexdump(msgb_l2(msg), msgb_l2len(msg)); which we've been getting in osmo-pcu builds on some platforms. Change-Id: I0ec652a1a569ec1507d8411cf1ef87afabcca799
* Revert "fsm: do not terminate child FSMs early"Harald Welte2018-02-091-4/+3
| | | | | | | | This reverts commit 5ec91980ac2224aa1e9bf070a0e382d0d8c2b729. More or less like I expected, it creates fall-out. osmo-msc master builds are failing, as are the open build service builds. The patch has therefor *not* been sufficiently tested. Change-Id: I8d961d7bbd91b6a8d7691f24cb67720c3d001c7e
* Revert "Use python 3 for utilities"Harald Welte2018-02-093-3/+3
| | | | | | This reverts commit 76c6c50405c6cbb1d08bdd7b5d27c657fa5d38b6, which broke the obs builds. I'm really starting to get annoyed by ongoing python related breakage without ever fixing any bugs! Change-Id: I4d76e897d4f746ff9ea4e06f2efc708a12cc2944
* fsm: do not terminate child FSMs earlyPhilipp Maier2018-02-091-3/+4
| | | | | | | | | | | | The function _osmo_fsm_inst_term() terminates all child FSMs befor it calls fi->fsm_cleanup(). This prevnts the cleanup callback to perform last actions on the child FSMs (e.g. osmo_fsm_inst_unlink_parent()). move the function call to _osmo_fsm_inst_term_children() below the call to fi->fsm->cleanup(). Change-Id: Ie89d435417306c6bf897274eabc3ed0a46485c26
* msgb: Add msgb_hexdump_{l2,l3}() to dump l2 or l3 part of message bufferHarald Welte2018-02-091-0/+14
| | | | Change-Id: I98e85397fb541ee0fd711f2e1852f63f3bb87359
* tlv_parser: Report *first* occurrence of repeated IEsHarald Welte2018-02-091-2/+7
| | | | | | | | | | Most GSM related specifications require the receiver to use the *first* occurrence of repeated IEs. The Osmocom TLV parser so far did the opposite: It reported only the *last* occurrence in case of repeated IEs. Let's change our implementation to be more in-line with relevant specs, such as 3GPP TS 24.008 8.6.3. Change-Id: Icde09e075f68c842a7a96cf7160c8e44b77cf82d
* tests: utils_test: Fix test failure when compiling with -O0Pau Espin Pedrol2018-02-081-0/+1
| | | | | | | | | It seems with default flags in_buf was being memzeroed by the compiler. When compiling with -O0, that's not the case anymore and printf prints after first 16 bytes, printing extra garbage which doesn't match the expected output. Change-Id: I736c1e4d625f647d3bb794fa717256e9dbf36e87
* tests: coding_test: Fix compilation with -O0Pau Espin Pedrol2018-02-081-2/+2
| | | | | | | | | | | | | | | | | inline keyword is a hint for the compiler to inline the function, but it's not mandatory. If no static or extern is specified, the definition is only visible in the current unit but the identifier still has external linkage. When running with -O0 it seems the compiler (gcc 7.2.1) decides to use the external linkage but at the same time it seems it's not generating the function symbol. Fix it by explicitly stating that we want to use static linking for this function. coding/coding_test.o: In function `test_xcch': libosmocore/tests/coding/coding_test.c:86: undefined reference to `dump_ubits' libosmocore/tests/coding/coding_test.c:87: undefined reference to `dump_sbits' Change-Id: I18018adec05ce1c2ddbca38653311d74c7454ce8
* Use python 3 for utilitiesMax2018-02-083-3/+3
| | | | | | | | There're no python2-specific code in there so we can switch right away without waiting till 2020 for python 2 deprecation. Related: OS#2819 Change-Id: I8d34aed124b00c5dd2ab1bcc84bbfa8c620282cc
* vty: fix 'logging print file' outputNeels Hofmeyr2018-02-061-8/+11
| | | | | | | | | | | | | | In If1bd79026a3c680ccf7587d545d12f7759a998fc, an erratic logging output crept in for an earlier patch state and was merged by accident; fix 'logging print file (0|1|basename)' output. Add value string to map LOG_FILENAME_* enum to VTY args, use for both command evaluation as well as printing the vty config. The default is 'logging print file 1', hence we could omit an output when '1' is chosen. But for clarity, always output the current setting. Change-Id: I1c931bff1f1723aa82bead9dfe548e4cc5b685e0
* GSUP: change osmo_gsup_encode() return typeMax2018-02-053-6/+13
| | | | | | | | | | * match return type of osmo_gsup_encode() with osmo_gsup_decode() to allow propagating error to caller * check return value of osmo_gsup_encode() in GSUP test * return errors instead of braking app with aseert Change-Id: Idaa1deecb6d9e15329bd51867b4f6a03357461f0 Related: OS#2864
* utils: add helper wrapper for osmo_strlcpy()Max2018-02-052-4/+6
| | | | | | | | | | Add wrapper for osmo_strlcpy() which uses sizeof() to automatically determine buffer's size and use it for GSMTAP logging. This is pretty common use case for osmo_strlcpy() so it's a good idea to save some typing by using generic define. Related: OS#2864 Change-Id: I03d0d3d32a8d572ad573d03c603e14cdc27a3f7b
* gsm48_hdr_msg_type(): SS is in the same group as MM/CCHarald Welte2018-02-031-1/+1
| | | | Change-Id: I1ddadeacced9650885f454b81f3f0df531ea1e5d
* gsm48_hdr_msg_type[_r99]: Fix bit-masksHarald Welte2018-02-031-2/+2
| | | | | | | | | | TS 24.007 is quite clear: The upper two bits of the message type octet are *not* part of the message type in any of the L3 protocols which implement sequence numbers. it doesn't matter if it's R98 or R99, or whether the sequence number is 1bit or 2bits wide. Related: OS#2908 Change-Id: Iec875a77f5458322dfbef174f5abfc0e8c09d464
* gsm_04_08.h: Reduce T310 default to 30s.Harald Welte2018-01-271-1/+1
| | | | | | | | | 3GPP doesn't specify a network-side T310 default, but waiting for 180s (3 minutes!) for the next message after CALL CONFIRMED is clearly way too long and will just use radio resources for no good reason. Change-Id: Ia52f9358bc86b23c72af9c80e2fff5cb0004b57a Related: OS#2884
* gsm_04_08.h: Clearly annotate timers that don't have a 3GPP Default valueHarald Welte2018-01-271-7/+7
| | | | Change-Id: I44fffaec1f7c0d819aa2ebc85e97f19581fc689c
* SMS: Add value_string for TS 04.11 CP and RP stateHarald Welte2018-01-245-0/+27
| | | | Change-Id: I1b2f6fc6f455b0ba2a5732c567a4867bca97c3b0
* gsm48_pdisc_names: Use conscise, short namesHarald Welte2018-01-241-15/+15
| | | | | | | Some times I *really* regret ever having merged OSMO_VALUE_STRING, as it generates completely unusable and way too long strings :( Change-Id: I8de7c01f9ea1d66c384e57449c4140186f5ce6c5
* jenkins: move make invocation into shared functionMax2018-01-243-5/+8
| | | | Change-Id: Ied8c1085b8bee2cc4fa65592e805838b8cdae287
* jenkins: remove obsolete scriptsMax2018-01-242-61/+0
| | | | | | | | | | * jenkins.sh is superseded by jenkins_amd64.sh * jenkins-arm.sh is superseded by jenkins_arm.sh N. B: this requires I76dfc11a05007ae5c6e0554fe8132695b67cccaa in osmo-ci. Change-Id: Ifbd253cff88c3ac18e469c34e79f1501501e1657
* fsm: add functions for unlinking and changing parentsPhilipp Maier2018-01-242-3/+38
| | | | | | | | | | | | | | At the moment it is not possible to unlink a child from from its parent, nor is it possible to assign a new parent to a child FSM. - osmo_fsm_inst_unlink_parent(): Make it possible to unlink childs from a parent. - osmo_fsm_inst_change_parent(): Make it possible to change the parent of a child. Change-Id: I6d18cbd4ada903cf3720b3ad2a89fc643085beef
* libosmocoding: use frame length definitions from codec.hVadim Yanitskiy2018-01-241-7/+0
| | | | | | | | Since commit e094157e125a70b9a384ba3cec01261624f4eb59, TCH frame length definitions were added to libosmocodec. No need to define them again. Change-Id: Id8c6132534e36ea1e368432bb259fd4f3a531f90
* libosmocoding: fix typo in library documentationVadim Yanitskiy2018-01-231-1/+1
| | | | Change-Id: I535d4eba5bad9094a1e9e662f32cd2bfac5b0cef
* socket: use inet_ntop() instead of inet_ntoa() in osmo_sock_local_ip()Philipp Maier2018-01-221-2/+2
| | | | | | | | | | | | | | | The function inet_ntoa() stores its result in a static buffer and returns the pointer. When inet_ntoa() is called subsequently it overwrite the content of its static buffer with the new result. Since we osmo_sock_local_ip() is a library function we should use the more safe variant inet_ntop() in order to prevent unintentionally overwriting data that the caller might still need. Such an error would be hard to find. - Use the more safe inet_ntop() inestead of inet_ntoa() Change-Id: I9852b57736432032542bd96b6fdd4a2f08fc1f64
* GSUP: don't fail test on first errorMax2018-01-222-4/+30
| | | | | | | | | | Instead of forcing test failure via assert on first error encountered, let it run until completion and print detailed error log. This simplifies troubleshooting by letting user to see more errors from single run and more details on each of the errors. Update test output with explicit test results. Change-Id: I016a28fe04f7b194e22c15e936095004c5f079d1
* socket: fix socket leak in osmo_sock_local_ip()Philipp Maier2018-01-221-0/+1
| | | | | | | | | The socket that is opend to probe the correct local ip-address is not closed when the test is done. - Close socket when it is not needed anymore Change-Id: I7f3562a344b58f6298d2068314be1626a96e1b1d
* tests/ussd: prevent uninitialized memory accessVadim Yanitskiy2018-01-221-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously an incorrect length value was passed to both gsm_7bit_decode_n_ussd() and gsm_7bit_encode_n_ussd() functions during test_7bit_ussd() execution, due to: octets_written = strlen(decoded); The problem is that a 7-bit encoded string takes less memory than its 8-bit equivalent. So, here strlen() returns one-byte bigger value, that octets_written is. This then causes the uninitialized memory access. Found using Valgrind: Conditional jump or move depends on uninitialised value(s) at 0x506DCCC: gsm_7bit_decode_n_ussd (gsm_utils.c:248) by 0x40134B: test_7bit_ussd (ussd_test.c:104) by 0x400F5D: main (ussd_test.c:161) Conditional jump or move depends on uninitialised value(s) at 0x506DBB7: gsm_7bit_decode_n_hdr (gsm_utils.c:220) by 0x506DC9E: gsm_7bit_decode_n_ussd (gsm_utils.c:246) by 0x40134B: test_7bit_ussd (ussd_test.c:104) by 0x400F5D: main (ussd_test.c:161) Conditional jump or move depends on uninitialised value(s) at 0x506DBCB: gsm_septet_lookup (gsm_utils.c:153) by 0x506DBCB: gsm_7bit_decode_n_hdr (gsm_utils.c:224) by 0x506DC9E: gsm_7bit_decode_n_ussd (gsm_utils.c:246) by 0x40134B: test_7bit_ussd (ussd_test.c:104) by 0x400F5D: main (ussd_test.c:161) Change-Id: Ic31805b6a5a917dfc6284edba6ffdd21246ac20c
* Embedded: add sercomm stubsMax2018-01-215-8/+15
| | | | | | | The sercomm functions are unavailable in case of embedded build. Add stub and link the tests against it. Change-Id: I9bc5cb2f822b1a3ffdc6ec29f46b6bac8288314e
* Embedded: disable stats testMax2018-01-212-1/+9
| | | | | | | | As of 67bdd80a96bdfc49d1aadbd32cca2b53f123d180 the stats.c is effectively disable so we should disable the corresponding tests as well. Change-Id: I42ff7a6619c0a5926fdc2ec779cf04689c567e15
* MNCC: Add MNCC to string dumperHarald Welte2018-01-194-1/+429
| | | | | | | | As MNCC is rather hard to debug (wireshark cannot trace UNIX domain sockets), let's add our own decoder that we can use from related debug log statements in the respective programs. Change-Id: I216aaf70868ba5f3860a60c4b2442957531a3011
* logging vty: add 'logging print file (0|1|basename)' cmdNeels Hofmeyr2018-01-191-0/+27
| | | | | | | Add a VTY command that allows configuring the output of source filename. So far, this was not configurable by VTY at all. Change-Id: If1bd79026a3c680ccf7587d545d12f7759a998fc
* logging: allow to log only the basename of each sourceNeels Hofmeyr2018-01-192-0/+15
| | | | | | | | | | | In the C API, add another enum log_file_type value, and when set print only the basename of the source file path. Rationale: especially when not building directly in the source dir, the paths to the source files can become rather long. Usually, just the basename of the file is sufficient to identify the source line. Change-Id: If3e4d5fb2066f8bf86e59c82d1752b1a843cf58e
* logging: separate the '<000b>' subsys from filename loggingNeels Hofmeyr2018-01-193-7/+74
| | | | | | | | | | | | | | | | | | | Add a separate flag and API to switch the category-in-hex output: log_set_print_category_hex(). Add log_set_print_filename2() to modify only the print_filename flag. The old log_set_print_filename() function still affects both flags. Explain the rationale in the comment for log_set_print_filename(). There is no need to deprecate log_set_print_filename(); it might cause compiler warnings and break strict builds unnecessarily. Add VTY command 'logging print category-hex (0|1)'. Since there is no VTY command to switch filename output, nothing needs to be adjusted there (a command will be added in a subsequent patch). Change-Id: Iba03a2b7915853c6dccaf6c393c31405320538b4
* jenkins: add dispatcher scriptMax2018-01-183-0/+94
| | | | | | | | | | | | Similar to the way we test osmo-bts, add simple dispatcher script which calls appropriate test depending on a given parameter. This will allow to simplify the job description. While at it, also rename jenkins-arm.sh -> jenkins_arm.sh to match the OsmoBTS. The older scripts are preserved for compatibility and shall be removed once we update job description in osmo-ci. Change-Id: I2955e866bce4f000a53369bd601a346c36c82468
* cosmetic: logging: if color is disabled, don't print ""Neels Hofmeyr2018-01-171-5/+6
| | | | | | | | | | | | If color output is disabled, skip the empty snprintf() to (not) clear the ANSI color. Also, no need to use a format string of "%s", just pass the string constant directly. That is a micro optimisation as well as clarification of the code. Change-Id: Ie7cb06de160830d2f8ee5718246c0fe311f68d49
* fsm: fix double llist_del in osmo_fsm_inst_term()Philipp Maier2018-01-171-2/+3
| | | | | | | | | | | llist_del(&fi->proc.child) is executed always, regardless whether a parent is configured or not. This may lead into a double llist_del when the child has been previously unlinked. - check if fi->proc.parent is set, and only then execute llist_del(&fi->proc.child); Change-Id: I4b33d508c8a11b72fbf30125088a882894d9e6ac