summaryrefslogtreecommitdiffstats
path: root/include/osmocom/core
Commit message (Collapse)AuthorAgeFilesLines
* fix some typosNeels Hofmeyr2015-11-021-4/+4
| | | | Sponsored-by: On-Waves ehi
* log: Add new DLSTATS log levelJacob Erlbeck2015-11-021-1/+2
| | | | | | | | This log level is used by the stats subsystem log reporter to report statistics to level INFO. Note that the default level of DLSTATS is NOTICE. Sponsored-by: On-Waves ehf
* stats: Limit reporting by class idJacob Erlbeck2015-11-023-0/+14
| | | | | | | | | | | | | | | This commit adds class_id fields to the rate_ctr and stat_item group descriptions. The stats reporter code is extended to only process groups whose class_id does not exceed a per reporter max_class level. If the class_id is not set, the code assumes 'global' for groups with idx == 0 and 'subscriber' otherwise. The following vty command is added to config-stats: level (global|peer|subscriber) Set the maximum group level Sponsored-by: On-Waves ehf
* stats: Add osmo_ name prefix to identifiersJacob Erlbeck2015-11-022-64/+64
| | | | | | | | | | Since the the stat_item and stats functions and data types are meant to be exported, they get an osmo_ prefix. Sponsored-by: On-Waves ehf [hfreyther: Prepended the enum values too. This was requested by Jacob]
* stats: Add log reporterJacob Erlbeck2015-10-291-0/+3
| | | | | | | This reporter passes the measurement values to the logging subsystem as DSTATS (which is currently DLGLOBAL) level INFO messages. Sponsored-by: On-Waves ehf
* stats: Use function pointers in reporter objectsJacob Erlbeck2015-10-291-0/+14
| | | | | | | | | | | | Currently case statements are used to select the right reporter functions. This makes it difficult to add new reporter types, especially if they are not going to reside in the same file. This commit introduces per reporter function pointer for open, close, send_count, and send_item. They are checked for non-NULL before being called or skipped. Sponsored-by: On-Waves ehf
* stats: Make net config optionalJacob Erlbeck2015-10-291-0/+2
| | | | | | | | To support reporters without network configuration, this commit introduces the have_net_config flag to provide corresponding error messages. Sponsored-by: On-Waves ehf
* stats: Support statsd Multi-Metric PacketsJacob Erlbeck2015-10-291-0/+5
| | | | | | | | | | | | | | | | If the MTU is given, combine several messages into a single UDP packet until the limit is reached. Flush all reporters after the values have been scanned. New vty commands (node config-stats): mtu <100-65535> Enable multi-metric packets and set the maximum packet size (in byte) no mtu Disable multi-metric packets Note that single messages that are longer than the given MTU (minus 28 octets protocol overhead) will be dropped. Sponsored-by: On-Waves ehf
* core: Add difference function to osmo_counterJacob Erlbeck2015-10-291-0/+4
| | | | | | | The osmo_counter_difference returns the counter value difference since the last call of this function with the given counter object. Sponsored-by: On-Waves ehf
* stats: Implement timer based reportingJacob Erlbeck2015-10-291-2/+8
| | | | | | | | This calls stats_flush in regular intervals which polls the statistical values and calls the active reporters when values have changed. Sponsored-by: On-Waves ehf
* stats: Add the reporting frameworkJacob Erlbeck2015-10-291-0/+70
| | | | | | | | This commit provides the stats reporting framework that can manage several types of measurement reporters. Initially support for rate_ctr and the statsd protocol is included. Sponsored-by: On-Waves ehf
* core: Update osmo_counters_for_each docJacob Erlbeck2015-10-281-2/+2
| | | | | | | Fix type and add a note about the semantics of the handler's return code. Sponsored-by: On-Waves ehf
* stats: Add stat_item_for_each functionsJacob Erlbeck2015-10-281-0/+14
| | | | | | | | | | This commit adds the following functions: stat_item_for_each_group Call a handler for each group stat_item_for_each_item Call a handler for each item of a group Sponsored-by: On-Waves ehf
* core: Extend rate_ctr by helper functionsJacob Erlbeck2015-10-281-0/+19
| | | | | | | | | | | | | | | | | | | | | | | For global value reporting, some additional helper functions are needed. The statsd protocol expects differential counter values, which are currently not provided by rate_ctr (except for s/m/h/d intervals). This commit adds several helper functions to rate_ctr: - rate_ctr_difference returns the counter delta since the last call to this function for a given counter - rate_ctr_for_each_counter iterates through each counter of a group - rate_ctr_for_each_group iterates through all globally registered counter groups Note that the rate_ctr_difference function can only be used by a single backend, since it modifies the 'previous' field in the rate_ctr obj. Sponsored-by: On-Waves ehf
* stats: Use a global index for stat item valuesJacob Erlbeck2015-10-281-9/+19
| | | | | | | | | | | | | | | Currently each stat item has a separate index value which basically counts each single value added to the item and which can be used by a reporter to get all new values that have not been reported yet. The drawback is, that such an index must be stored for each stat item. This commit introduces a global index which is incremented for each new stat item value. This index is then stored together with the item value. So a single stored index per reporter is sufficient to make sure that only new values are reported. Sponsored-by: On-Waves ehf
* stats: Add stat_item for value monitoringJacob Erlbeck2015-10-281-0/+104
| | | | | | | | | | | | | | This commit adds instrumentation function to gather measurement and statistical values similar to counter groups. Multiple values can be stored per item, which can be retrieved in FIFO order. Getting values from the item does not modify its state to allow for multiple independant backends (e.g. VTY and statd). When a new value is set, the oldest value gets silently overwritten. Lost values are skipped when getting values from the item. Sponsored-by: On-Waves ehf
* commentsNeels Hofmeyr2015-10-092-3/+4
|
* linuxlist: Remove casting of ptr from container_of macroHolger Hans Peter Freyther2015-05-021-1/+1
| | | | | | | | | | | The cast is not present in the original macro and was added in OpenBSC with commit (be68f6fc6cde1367a4481d2e774a64e2cd657267) to help using the header with C++. Due the recent issue in the bssgp flow control code, let's remove the cast to see wrong pointer usage. In case C++ code doesn't compile anymore we can see how to add a cast back to it. Change was proposed by Michael McTernan
* osmo_static_assert: Put back the typedef in the codeHolger Hans Peter Freyther2015-04-131-1/+1
| | | | | | | | In OSX the int declares linkage and for libosmo-abis we have two static asserts with the same name in two different compilation units. When adding the "unused" attribute I removed the typedef. I verified with a gcc 4.9.2 that no new warnings will be shown when compiling libosmo-abis.
* endian: Be able to detect endian on GNU and BSDHolger Hans Peter Freyther2015-03-221-0/+38
| | | | | | | | | | | | | | | | | | On GNU __BYTE_ORDER and __LITTLE_ENDIAN is defined and the include is "endian.h" on FreeBSD it is "sys/endian.h" and LITTLE_ENDIAN/_LITTLE_ENDIAN and BYTE_ORDER/_BYTE_ORDER is defined. Create a header file that defines OSMO_IS_LITTLE_ENDIAN and OSMO_IS_BIG_ENDIAN and can be used as #if OSMO_IS_LITTLE_ENDIAN do_little_endian #elif OSMO_IS_BIG_ENDIAN do_big_endian #else #error "Unknown endian" #endif
* core/gsmtap: LTE RRC message types and LTE MAC definealtaf2015-01-181-0/+15
| | | | | Submitted-by: altaf <altaf329@gmail.com> Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* bitvec: Fix typo in the csn1 encoding codeHolger Hans Peter Freyther2014-12-281-1/+1
| | | | | We can curse about CSN.1 and 3GPP but I think we want to call it cursor here.
* logging: Make it possible to print category/subsys and timestampsHolger Hans Peter Freyther2014-12-051-0/+6
| | | | | | | | | | | | We want to see from which category/subsystem a certain log message is coming from and use a different timestamp format as well. Add two new bitfields. This doesn't change the size of the structure and on 32bit we still have 27bits left. The extended timestamp will take preference over the current and default timestamp format. Fixes: SYS#602
* gtp: Add a global region for the gtp library of OpenGGSNHolger Hans Peter Freyther2014-12-041-1/+2
| | | | | We want to use libosmocore/libosmovty in the GGSN sourcecode and reserve a global region here.
* sttrb / loggingrb: Use GPLv2+ as license, not AGPLv3+Harald Welte2014-10-262-2/+2
| | | | | according to Holger, using AGPLv3+ at the time was a mistake and the license should always have indicated GPLv2+.
* msgb: make msgb_get() finally work as expectedHarald Welte2014-10-261-1/+1
|
* logging: Add ability to save/print current log filtersHarald Welte2014-08-251-0/+16
| | | | | | This enables the persistent configuration of let's say 'log filter imsi 012345678' for a given log file in the config file.
* Convert recently-introduced header files to #pragma onceHarald Welte2014-08-211-4/+1
|
* libctrl: Add DLCTRL as logging context for the control interfaceHarald Welte2014-08-211-1/+2
| | | | ... and make libctrl code use it
* libctrl: remove reference to bsc_replace_string()Harald Welte2014-08-211-0/+7
| | | | | ... and rather introduce a general osmo_talloc_replace_string() to libosmocore.
* Add osmo_get_macaddr() function to obtain etherent mac addressHarald Welte2014-08-181-0/+1
| | | | | This used to be private in osmo-bts/common/abis.c, where it really didn't belong.
* osmocore: Add function osmo_macaddr_parse() to parse ETH MAC addressHarald Welte2014-08-181-0/+6
|
* core/bitXXgen: Don't do 'return' in functions returning voidSylvain Munaut2014-06-161-2/+2
| | | | | | ISO C forbids 'return' with expression, in function returning void Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* core/bitXXgen: Use explicit cast of void* to uint8_tSylvain Munaut2014-06-161-4/+6
| | | | | | Turns out we use this header in C++ code ... Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* bits: Add left circular shift functionMax2014-06-161-0/+10
| | | | | Submitted-by: Max <max.suraev@fairwaves.co> Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* core: Add generic LE/BE load/store uint type convertors and use them in msgbMax2014-06-163-10/+121
| | | | | Submitted-by: Max <max.suraev@fairwaves.co> Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* include: Switch to #pragma once patternSylvain Munaut2014-06-1632-128/+32
| | | | Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* gsmtap: add LTE defines to GSMTAP v2Max2014-06-151-1/+10
| | | | | Submitted-by: Max <max.suraev@fairwaves.co> Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* src/socket: Adding unix domain socket supportÁlvaro Neira Ayuso2014-03-261-0/+6
| | | | | | Added some function for adding the unix domain socket support. Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
* ladpm: Fix msgb handling and SAPI=3 establishment delayJacob Erlbeck2014-03-101-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently it takes 3s to establish a SAPI 3 SACCH connection with osmo-bts. This is due to the fact, that a broken SABME request is sent first and and is ignored by the MS. Then, after a T200 timeout (2s) the SABME command is sent again (this time correctly) and answered by the MS. The first SABME message is broken (it has a length field of 3 and ends with 3 bytes from the tail of the original RSL message), because of it is expected throughout lapdm.c that msg buffers containing RSL have msg->l2h == msg->data. Some abis input drivers fulfill this but IPA doesn't, thus the 3 bytes of the IPA header are still part of the msg and confuse length computation. Since internal fields of the msg are modified directly, this is difficult to see. This patch adds a new function msgb_pull_to_l3() that explicitely skips over all headers prepending L3 and therefore resets l1h and l2h. This function is then used instead of msgb_pull_l2h() which only worked correctly when msg->l2h == msg->data. In addition, code manipulating msg->tail and msg->len directly has been replaced by calls to msgb_trim(). Note that this patch does not fix all issues of this case in the LADP related code. Ticket: SYS#192 Sponsored-by: On-Waves ehf
* msgb: Add msgb_hexdump() functionJacob Erlbeck2014-03-041-0/+1
| | | | | | | | | | | | This function works like osmo_hexdump() and returns a static buffer containing hex bytes along with markers for the layers. Note that it uses osmo_hexdump() internally, thus a call to msgb_hexdump() invalidates the buffer that has been returned by an earlier call to osmo_hexdump(). In short: don't mix them in a single call printf(). Sponsored-by: On-Waves ehf
* vty: Make vty_event dispatch signals and use it in the testcaseHolger Hans Peter Freyther2013-10-101-0/+1
| | | | | | | | | The testcase didn't work on Ubuntu 12.04 because vty_create will directly call vty_event (e.g. not through the plt). This means that the approach to override vty_event in the testcase failed. Use the signal interface of libosmocore and make the testcase use it. The signals can be generally useful as well.
* core: Remove defined() check for OSMO_DEPRECATEJacob Erlbeck2013-08-151-11/+5
| | | | | | | | This reverts commit bf991bc0f3006eddf45d494ee7e476a75dbaf36e and fixes the bug instead. It's just sufficient to remove the defined() test, since identifiers that aren't macros are just considered as 0 when used with #if. (see cpp info page, section 4.2.2 'If' in cpp-4.6.info)
* core: Fix-up the OSMO_DEPRECATED for older compilersHolger Hans Peter Freyther2013-08-141-3/+9
| | | | | | | The code started to use #if defined(...) but the value was always for GCC/Clang. The only difference was that for older compilers the value of the definition was 0. Conditionally define these macros.
* core: Support clang with OSME_DEPRECATEDJacob Erlbeck2013-08-141-4/+15
| | | | | Separate feature checking from implementation. Supported are clang and gcc.
* core: Move OSMO_DEPRECATED to new core/defs.h fileJacob Erlbeck2013-08-141-0/+39
| | | | | | | | | | Add a new core/defs.h file for definitions that can be used from within header files without including prototypes and extern declarations. It's primarily meant for macro definitions and basic typedefs. Move the definition of OSMO_DEPRECATED there and use compiler version info to avoid compiler errors.
* utils.h: we need to include utils.h for osmo_generate_backtrace()Harald Welte2013-07-061-0/+2
| | | | | this causes compiler warnings in user code ever since commit 55cf02221f0654a3f48888f3b13766b671a120f0
* misc: Fix compiler warnings about the static_assert macro with gcc 4.8Holger Hans Peter Freyther2013-07-011-1/+1
| | | | | | | | | | | | | The modified macro is still working on a gcc 4.7 and gcc 4.8 after the removal of the typedef and addition of the unused attribute. include/osmocom/core/msgb.h: In function ‘msgb_alloc_headroom’: include/osmocom/core/utils.h:40:51: warning: typedef ‘dummyheadroom_bigger’ locally defined but not used [-Wunused-local-typedefs] #define osmo_static_assert(exp, name) typedef int dummy##name [(exp) ? 1 : -1]; ^ include/osmocom/core/msgb.h:386:2: note: in expansion of macro ‘osmo_static_assert’ osmo_static_assert(size > headroom, headroom_bigger); ^
* utils: Use fprintf to print the assertion and generate a backtraceKaterina Barone-Adesi2013-03-251-1/+2
| | | | | | | | | This is changing the semantic of the assert. The regression tests now either need to check the stderr result, the exit status or print a message when all tests are completed. This is not that bad as the osmo_generate_backtrace is printing to the stdout right now.
* logging: add new log_targets_reopen() functionHarald Welte2013-03-181-0/+1
| | | | | This function will re-open all existing log files in the application, praticularly useful for SIGHUP handlers in case of logrotate