summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* rate_ctr: Enforce counter (and ctr_group) names are valid identifiersHarald Welte2017-10-244-45/+161
| | | | | | | | | | | | | | As rate counters are automatically exposed on the CTRL interface, we need to make sure they don't contain special characters such as '.' which are not permitted/supported by CTRL. In order to be able to run old versions of osmocom programs with libosmocore versions after this commit, we introduce some special name mangling: Any '.' in the names are replaced with ':' during counter group registration, if valid identifiers can be obtained this way. Change-Id: Ifc6ac824f5dae9a848bb4a5d067c64a69eb40b56
* fsm: Enforce FSM and FSM instance names are valid osmocom identifiersHarald Welte2017-10-241-1/+12
| | | | | | | | | Let's enforce that the names of FSMs and their instances are valid osmocom identifiers. This is important as the FSMs are automatically exported via those names on the CTRL inteface, and we have to make sure CTRL syntax actually permits them. Change-Id: I9ef59432f43a3cdb94e4cbb0c44ac3f9b2aac0f2
* Introduce osmo_identifier_valid() function to check validity of identifierHarald Welte2017-10-242-0/+31
| | | | | | | | | We define the notion of an 'osmocom identifier' which is basically a 7-bit US-ASCII without any special characters beyond "-_:@". We introduce a function to verify if an identifier consists only of the permitted characters. Change-Id: I96a8d345c5a69238a12d040f39b70c485a5c421c
* jenkins: bail early if $MAKE env var is not setNeels Hofmeyr2017-10-241-0/+6
| | | | | | If $MAKE is unset, it produces confusing errors, rather check explicitly. Change-Id: I59b111dfdee4e1edea04155144f01d99f5f72aa1
* fixups for recent "Cleanup jenkins build scripts"Neels Hofmeyr2017-10-243-22/+43
| | | | | | | | | | | | | | | Change I24e500e132f5c8e8133d35548cb7b4e4552331d0 was merged, but IMHO needs improvement. Fix these: - clean the git source tree before each build step, in common prep_build(). - fix indenting inside the build() macros. - change build() arg to be build_dir, to absorb cleanup steps into build(). - in jenkins.sh, use $ENABLE_SANITIZE as global env, not passed as arg. - in jenkins.sh, don't do 'make distcheck' twice. It is not necessary to do it from source tree as well as separately from source tree, since distcheck already moves to a different build dir. Change-Id: I09d306350602f21943d5bd45f7388c83ede9b524
* contrib/fsm-to-dot.py: some tweaks that help with osmo-bsc's new FSMsNeels Hofmeyr2017-10-241-13/+40
| | | | | | | | | | | | | | | | | | | | | | Combine the C source file name and the string name into the fsm's internal name token, and use it in most places instead of the plain struct name: osmo-bsc's new FSMs have identical struct names in each static c context. Output in a file name that includes all of these more detailed name tokens. Also parse '(1 << EVENT)' as event names. Note that besides this patch, there are also some tweaks to the osmo-bsc patch that improve the fsm-to-dot experience... - call fsm-to-dot for single files to avoid name conflicts, or rename each struct as a unique name. - Add comments for the event name a callback is intended for, so that not all transitions are interpreted as TEARDOWN (because it is invoked in common error handling, which causes the script to interpret it as the causing event). (or change the event-checking if into a switch that names the valid event and has a default case for all others.) Change-Id: Ib60df7fd19efc99ba9fe797f14c0e3239c4bea20
* GPRS: check and report local address used for NSEMax2017-10-241-7/+13
| | | | | | | | | | When dumping NSE via vty: * check which local address would be used to communicate with a given NSE and print it * print link layer type last to make output more consistent Change-Id: I6932a29c7899d36bcc275f05dda9670b0e69bef0 Related: SYS#3610
* GPRS: clarify ip/frgre union useMax2017-10-243-9/+22
| | | | | | | | | * add comment about underlying assumption that structs in ip/frgre union members in gprs_nsvc struct have the same memory layout * remove such assumption from gprs_ns_ll_str() * use gprs_ns_ll_str() for NSE dump Change-Id: Idcb912b7b3f7460fd2b058e16650c0bde8f757ee
* GPRS: wrap NS state assignment in macroMax2017-10-241-14/+35
| | | | | | | | This enables logging for every state transition which makes NS troubleshooting easier. Change-Id: I5d6eaef0432d9be810bf93d07e40787b9ca59142 Related: SYS#3610
* GPRS: unify NS state printingMax2017-10-244-67/+72
| | | | | | | | | * introduce defines with NS state names * use them for vty and tests * expand test output to print complete NS state Change-Id: I69f8d536135ae76dbca623c2f1ffba625adcb1e9 Related: SYS#3610
* add osmo_talloc_asprintf() and ctrl_cmd_reply_printf()Neels Hofmeyr2017-10-242-0/+21
| | | | | | | | | | | | | | | | Add macro to append to a CTRL commands' reply string, ctrl_cmd_reply_printf(). The talloc_asprintf() part of it is generic enough to qualify for a separate macro, osmo_talloc_asprintf(). The idea is to not have to decide for each bit added to a string whether the string is already allocated or not, but simply be able to issue printf commands and let the macro worry about initial allocation or reallocation. This originally came from osmo-hlr change I1bd62ae0d4eefde7e1517db15a2155640a1bab58, where it was requested to move this bit to libosmocore. Change-Id: Ic9dba0e4a1eb5a7dc3cee2f181b9024ed4fc7005
* vty: Fix bad use of vector_slot()Pau Espin Pedrol2017-10-241-1/+1
| | | | | | | | | | | | | | | | | | | Fixes the compilation warning below: git/libosmocore/src/vty/command.c: In function ‘cmd_complete_command_real’: git/libosmocore/src/vty/command.c:1953:33: warning: comparison between pointer and zero character const ant [-Wpointer-compare] if (vector_slot(vline, index) == '\0') ^~ git/libosmocore/src/vty/command.c:37:0: git/libosmocore/include/osmocom/vty/vector.h:39:27: note: did you mean to dereference the pointer? #define vector_slot(V,I) ((V)->index[(I)]) ^ git/libosmocore/src/vty/command.c:1953:7: note: in expansion of macro ‘vector_slot’ if (vector_slot(vline, index) == '\0') ^~~~~~~~~~~ Change-Id: Iaba9e3450d68c51e16a7bda2fc0fc370992ca866
* gb: optionally allow nsip packets only from a specific hostPhilipp Maier2017-10-243-3/+28
| | | | | | | | | | | | | | When listening for nsip connections is enabled, then every remote host may send packets. This is useful for an SGSN that serves multiple PCUs, but contraproductive for a PCU that awaits packets from a single SGSN. Add struct members remote_ip, and remote_port to struct gprs_ns_inst, when set, then the listening end uses connect() to ensure that only the expected host may send packets. Related: OS#2401 Change-Id: Ifeb201d9006eec275a46708007ff342cdfc14e45
* Simplify bitvec_write_field()Max2017-10-241-9/+7
| | | | | | | Use existing function instead of copy-pasted loop. Change-Id: I9fe27c06125ac52e02e63dcded056a5f1cf68f41 Related: OS#1526
* Replace bitvec_set_uint() with bitvec_set_u64()Max2017-10-242-9/+28
| | | | | | | | | | | | | | | | | | | Old bitvec_set_uint() uses "unsigned int" as input parameter which length is not guaranteed. It does not allow to specify which bit_value to set and does not check for incorrect length. Overall this makes it harder to re-use and more error-prone. Let's replace it with extended implementation which uses fixed type length parameters and extra checks. The additional parameter allows caller to explicitly indicate the need to use L/H instead of 0/1 for bit vector elements. It's necessary to properly encode some of the messages from 3GPP TS 44.018, for example §10.5.2.16 IA Rest Octets. The old function is left for backward compatibility as a tiny wrapper around new function and will be deprecated in follow-up patches. Change-Id: I1b670dacb55fb3063271d045f9faa10fccba10a6 Related: OS#1526
* Add tests for bitvec_write_field()Max2017-10-244-1/+211
| | | | | | | | | | | | This function is actively used by OsmoPCU but have not been covered by tests so far. The test code is based on Minh-Quang Nguyen <minh-quang.nguyen@nutaq.com> submission with some modifications. The test's FIXME will be addressed in follow-up patches. Change-Id: I2ee544256b8675bc62a42493aab66a8eeee54f90 Related: OS#1526
* ctrl: allow more nodes than those in enum ctrl_node_typeNeels Hofmeyr2017-10-232-14/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | Add ctrl_interface_setup_dynip2() to add a node_count parameter, which can be used to define more ctrl nodes without having to merge a patch to libosmocore. In consequence, also add ctrl_handle_alloc2(), since ctrl_interface_setup_dynip() uses ctrl_handle_alloc() to allocate the node slots, and add node_count param to static ctrl_init(). Passing zero as node_count indicates to use the default of _LAST_CTRL_NODE as before, i.e. to not define more ctrl nodes. Assert that we never allocate less than _LAST_CTRL_NODE slots. The current ctrl_interface_setup_dynip() and ctrl_handle_alloc() become simple wrappers that pass zero as node_count. Their use is still valid and they do not need to be deprecated. The API comment to ctrl_interface_setup_dynip2() explains how to define more node IDs. This patch was verified to work by osmo-hlr.git change I98ee6a06b3aa6a67adb868e0b63b0e04eb42eb50 which adds two node IDs for use by osmo-hlr only. Change-Id: I1bd62ae0d4eefde7e1517db15a2155640a1bab58
* Expand osmo_gettimeofday() docsMax2017-10-231-1/+7
| | | | | Change-Id: I9bc835aea56f5f2fb652bb5ab3405e354ba3b95c Related: OS#2586
* abis_nm: Add abis_nm_admin_name() APIPau Espin Pedrol2017-10-231-0/+7
| | | | | | | | | Similar APIs exist for opstate and availability status. This patch does not break backward compatibility because osmo-bsc still requires direct use of the structure in get_string_value(). Change-Id: Ieace734aaff3f07606113feddde65b75202d96d6
* socket: add function osmo_sock_local_ip() to query local ipPhilipp Maier2017-10-232-0/+55
| | | | | | | | | | In some cases it is required to know the ip-address of the interface through that a given remote IP-Address can be reached. Add function osmo_sock_local_ip() to determine the local ip-address for a given remote ip-address Change-Id: I2988cc52b196fc8476703d1287e24cb4a48491c2
* GPRS: log NS socketMax2017-10-231-0/+1
| | | | | | | Let's log NS UDP socket creation similar to the way we log it for telnet and ctrl interfaces. Change-Id: Ic9d0f94ab2c1bb33f67cd4f1c9236b64108c0bb6
* add function msgb_printf() to print formatted text into msg bufPhilipp Maier2017-10-224-0/+162
| | | | | | | | | | | In ASCII string based protocols it a printf() version that prints directly to the message buffer may be useful. Add function msgb_printf(), make sure that msg buffer bounderies are not exceeded. If the end of the tail buffer is hit, return with an error code. Change-Id: I15e1af68616309555d0ed9ac5da027c9833d42e3
* Make osmo_apn_to_str() more robustMax2017-10-202-0/+10
| | | | | | | Previously it would crash on NULL input. Let's handle it gracefully instead. Corresponding test case is also added. Change-Id: I587153e49d1c92128fac3ae5c124adba9592378e
* Disable doxygen in jenkins for embedded testsMax2017-10-201-0/+1
| | | | | | | There's no point in regenerating documentation with Doxygen in embedded environment. Change-Id: I6504db04445f5e9c1117379c8803e10df5634324
* Cleanup jenkins build scriptsMax2017-10-203-32/+26
| | | | | | | | | * reorder builds to avoid rm -rf invocation * avoid useless double autoreconf * move common parts into shared helper * move common build steps into separate function Change-Id: I24e500e132f5c8e8133d35548cb7b4e4552331d0
* GPRS: print remote state info for NS peerMax2017-10-201-3/+5
| | | | | Change-Id: I1714c68909507eae6ef2933661a085859aca3b54 Related: SYS#3610
* api doc: fix two doxygen group closing bracesNeels Hofmeyr2017-10-172-2/+2
| | | | Change-Id: I6c1f47d13c5b7a9cb2281de9f017df4f1ed88ba7
* [doc] Properly define gsm0800 group and move all related files into itHarald Welte2017-10-174-5/+14
| | | | Change-Id: I91920c69c86d6a1932172becacb76faff2d3eb1e
* [doc] Properly define 'oap' group and add introductory textHarald Welte2017-10-172-4/+12
| | | | Change-Id: I1e875991ae1dd93862f850f85d40b3dac61ece72
* [doc] Define 'gsup' group with proper name, add intro textHarald Welte2017-10-172-4/+20
| | | | Change-Id: Ieee6213dc5aad082a2d439c7418b51f281b80b1a
* [doc] make sure all SMS related code is part of the 'sms' groupHarald Welte2017-10-178-11/+27
| | | | Change-Id: I24c56ccb56d5b39cfb887808f91b715da54c0f8b
* [doc] gea has separate group; A5 is not part of crypto but a5 groupHarald Welte2017-10-174-18/+18
| | | | Change-Id: I2fd24c86f9b52244073ec800a3287e3d38e660d9
* [doc] Provide proper name for 'auth' groupHarald Welte2017-10-171-1/+1
| | | | Change-Id: I5fb1c34475ea9db36c2ec5cddc988074a72a35f7
* [doc] Ensure include/crypt/* is part of libosmogsm documentationHarald Welte2017-10-171-1/+1
| | | | Change-Id: Ic41f807dabb3b0d2d20b9d8963cad639e98f04dd
* [doc] Ensure stats.h is parsed properly for DoxygenHarald Welte2017-10-171-1/+1
| | | | | | | | | stats.h uses a rather crude '#ifdef unix' hack, which means that Doxygen will not scan the body of the file. This patch ensures 'unix' is defined to parse the stats.h body and thus have all relevant information in it is parsed. Change-Id: I65384e5cc01f2ad7783cf6b71ab78b4422902aa1
* [doc] TLV parser has far grown beyond GSM L3Harald Welte2017-10-161-1/+1
| | | | | | Let's hence not call the group "GSM L3 compatible TLV parser" Change-Id: Ic53f9c0d5ee787f994f42cf2aff313c6e131fbe6
* [doc] Rename "RSL" to "A-bis RSL" in documentation.Harald Welte2017-10-161-1/+1
| | | | | | | We also have "A-bis OML" and it's a bit odd to have one with prefix and the other without. Change-Id: Ida325f8a9c40b40c1aeaa4edfd1123ced7cc92b8
* [doc] Don't add libosmovty bits to libosmocore groupsHarald Welte2017-10-164-30/+29
| | | | | | | | Let's not put files of libosmovty into Doxygen groups of libosmocore, as this seems to confuse Doxygen. Also, some minor updates/fixes of libosmovty documentation. Change-Id: I70e612b8d06aabefe634fcd7861641ffb941d974
* [doc] Expand Doxuygen documentation for osmo_primHarald Welte2017-10-162-5/+28
| | | | | | Also, make sure prim.c is actually part of the 'prim' module. Change-Id: I4363e46a5f606eb2114a9cc1d2086007eaa58d31
* [doc] Introductory text on what the logging ring buffer is aboutHarald Welte2017-10-161-0/+7
| | | | Change-Id: I876cd31e03a53ca90e658e353c0c8a839dece8ad
* [doc] Make sure loggingrb.c file is in correct Doxygen group.Harald Welte2017-10-161-1/+1
| | | | | | loggingrb.c, like loggingrb.h should be part of the loggingrb group! Change-Id: I4822a46631b45df1afda202c00038b6ad2c8b5ae
* [doc] Doxygen documentation on osmo_hexdump print buffer sizeHarald Welte2017-10-161-0/+6
| | | | Change-Id: I83ca2a3a555e5b3c1b7f23bf9e463a5063a8006c
* [doc] Put CRC-16 and generic CRC code in one Doxygen moduleHarald Welte2017-10-165-11/+28
| | | | | | .. and add missing API documentation bits Change-Id: I67119894bcbf8c779426a0272bae4c5ce1fbd1ed
* [doc] bits.c: Better / more Doxygen documentationHarald Welte2017-10-162-10/+17
| | | | Change-Id: If824a5c8d8ee6e3dc96a3fddeb105786c0c027c1
* [doc] rate_ctr: Extend Doxygen API documentation with human-readable text on ↵Harald Welte2017-10-161-2/+35
| | | | | | its use Change-Id: If9abd46e1b0ebb6114522418fd3b45c1d802968a
* [doc] src/logging.c: Fix Doxygen syntax to make logging.c show up in logging ↵Harald Welte2017-10-161-1/+1
| | | | | | group Change-Id: I56718e1eca1739a1b0a790f2f3a1b554899a93ab
* [doc] Add Doxygen API documentation for stats.c and stats_statsd.cHarald Welte2017-10-163-22/+145
| | | | Change-Id: I8e49505f5c19beac90290fdba8821714e8eecd97
* [doc] counter.[ch] Add Doxygen API documentationHarald Welte2017-10-162-16/+23
| | | | | | | This adds a more complete set of API documentation for all osmo_counter relatedd functions and definitions. Change-Id: I24283c05620ee86a8beb165af98a85d754549efb
* [doc] stat_item: Complete doxygen documentation for APIHarald Welte2017-10-162-42/+89
| | | | | | | | The stat_item code base had some incomplete doxygen documentation so far. Let's complete it, and at the same time fix some cosmetic as well as copy+paste issues in the existing documentation bits. Change-Id: Ib514c137b40bf7b9791bd74be99af0b65575f2b6
* Rename 'statistics.c' to 'counter.c'Harald Welte2017-10-159-67/+70
| | | | | | | | | With stat_item, stats.c and stats_statsd.c, it is becoming a bit difficult to understand file naming. Also, the 'statistics.c' file actually only contained osmo_counter handling, so let's rename it to counter.c altogether. Change-Id: I2cfb2310543902b7da46cb15a76e2da317eaed7d