Commit Graph

1462 Commits

Author SHA1 Message Date
Ruben Undheim 771a58feee gsm_03_41: Fix structure definitions for big-endian machines
this was detected by debian packaging, as the associated gsm_03_41 test
case fails on big endian machines like ppc.
2015-12-09 20:22:42 +01:00
Harald Welte 84c19a9b36 update debian packaging from libosmocore6 to libosmocore7 2015-12-08 14:17:05 +01:00
Harald Welte 49a8f88565 utils: add TALLOC_CFLAGS to build
this is an attempt to fix the FreeBSD build
2015-12-08 14:14:29 +01:00
Jacob Erlbeck ac4ed17dbd stats: Add OSMO prefix to STAT_ITEM_NOVALUE_ID
This symbol is globally visible and therefore should have an OSMO
prefix like the other identifiers exported by stat_item.h.

Sponsored-by: On-Waves ehf
2015-12-08 10:33:15 +01:00
Jacob Erlbeck af5bad5ed0 stat: Explicitly support stat_items without unit
Add OSMO_STAT_ITEM_NO_UNIT for stat items without an unit. The
statsd reporter uses gauges ("g") to report them.

Sponsored-by: On-Waves ehf
2015-12-08 10:33:04 +01:00
Harald Welte 90e614f7cc remove our internal copy of talloc, use system libtalloc
Shipping our own private copy of talloc was a good idea in 2008,
when it was not readily available on most target platforms.  Today,
the situation is quite different, as it is a standard library on
major Linux distributions.
2015-12-05 23:38:18 +01:00
Jacob Erlbeck ee702cd590 stats: Add TODO comment to rate_ctr
Currently the counters are scanned twice, once for interval
computation and once for reporting.

This adds a reminder to move the interval computation code to a
special stats reporter which just shall update the fields.

Sponsored-by: On-Waves ehf
2015-11-26 12:53:12 +01:00
Jacob Erlbeck f13de868be stats/test: Add memory leak check
Adds a rudimentary leak check for the counters and stat items.

Sponsored-by: On-Waves ehf
2015-11-26 12:52:24 +01:00
Jacob Erlbeck 46b703d083 stats/test: Add test for reporting
This tests uses a dedicated test reported to check several aspects of
the value reporting.
  - addition/removal of stats reporter
  - addition/removal of counters/items
  - setting of max_class
  - initial value flush
  - updating single counters/items
  - reporter retrieval
  - enable/disable

Sponsored-by: On-Waves ehf
2015-11-26 12:52:24 +01:00
Jacob Erlbeck 2e8f9ed556 stats: Reorder functions in stats.c
Due to prior refactoring, the functions do not have an sensible order
in the file. This commit tries to improve that a little bit.

Sponsored-by: On-Waves ehf
2015-11-26 12:52:24 +01:00
Jacob Erlbeck b6e6bea4ec stats: Move statsd related code into a separate file
This commit moves the stats specific code parts into stats_statsd.c
while keeping the generic parts in stats.c. The code in stats.c no
longer contains references to statsd symbols.

Note that the VTY code still needs to know about every stats reporter
backend.

Sponsored-by: On-Waves ehf
2015-11-26 12:52:24 +01:00
Harald Welte 5fa0dcc275 configure: It should be --with-system-talloc, not --enable-system-talloc
As we are making a decision whether we should use an existing system
library, we call it --with-system-talloc, rather than
--enable-system-talloc.
2015-11-21 12:49:40 +01:00
Harald Welte d086f21195 configure.ac: Use AS_IF() instead of shell-if for PKG_CONFIG
https://autotools.io/pkgconfig/pkg_check_modules.html

> If you have the first call to PKG_CHECK_MODULES inside a bash
> conditional block, the expansion of PKG_PROG_PKG_CONFIG will also be
> conditional

> You can solve this problem in two ways; you can either explicitly call
> PKG_PROG_PKG_CONFIG outside of any conditional, forcing checking for
> pkg-config as soon as possible; or you can rewrite your conditionals
> to use the proper syntax
2015-11-21 12:49:36 +01:00
Harald Welte a10ef29b47 use system-wide libtalloc with --enable-system-talloc
This introduces a new configure flag by which the libosmocore-internal
talloc code is not compiled, but rather a system-wide libtalloc is used.

When we started openbsc/libosmocore in 2008, libtalloc was not widely
present on systems yet.  This has changed meanwhile, and we should
simply use the system-wide library
2015-11-21 00:50:19 +01:00
Harald Welte b32a19467f stat_item.c: Fix compiler warnings
CC       stat_item.lo
stat_item.c: In function 'osmo_stat_item_group_alloc': stat_item.c:84:28: warning: cast to pointer from integer of different
size [-Wint-to-pointer-cast]
   group->items[item_idx] = (void *)items_size;
                            ^
stat_item.c:98:24: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
    ((uint8_t *)items + (int)group->items[item_idx]);
                        ^
2015-11-20 10:22:14 +01:00
Harald Welte a99d45ac59 vty: Don't call exit() but rather use OSMO_ASSERT()
This was pointed out by Jaroslav Skarvada during fedora packaging,
and he has a valid point...
2015-11-12 13:48:23 +01:00
Jaroslav Škarvada 2b82c1c6c8 fix FSF address in sources/headers
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2015-11-12 13:46:05 +01:00
Holger Hans Peter Freyther abc46af90f debian: Make a new minor release 2015-11-09 21:35:20 +01:00
Jacob Erlbeck 01e8c91df5 stats: Fix not reported stat item values
Currently the global stat item index is being advanced in
osmo_stat_item_group_handler, so that the second and further groups
in the list will skip new item values.

This commit moves the call to osmo_stat_item_discard_all into
osmo_stats_report to a place where all groups have been processed
already.

Sponsored-by: On-Waves ehf
2015-11-09 14:49:52 +01:00
Jacob Erlbeck 8a97cb9111 stats: Fix handling of multiple resporters
Currently the reporter loop is aborted, if the event would be ignored
due to an insufficient max_level. Thus the reporters that happen to
be stored afterwards would be skipped even if their level were
sufficient.

This commit replaces the conditional 'return' statement by a
considtional 'continue' statement to ensure the processing of the
list tail.

Sponsored-by: On-Waves ehf
2015-11-09 14:49:52 +01:00
Jacob Erlbeck aed7c125fd stats: Send all values on reporter update
Currently only counter changes and new item values are being
reported. This makes it cumbersome to configure reporting clients,
since there is nothing like a list of all parameters.

This commit changes this behaviour such that all currently existing
counters and items that would be reported eventually, are passed to
the reporter when it has been reconfigured or enabled. If a counter
has not been incremented, 0 is sent. If a stat item value has not
been added, the last item value (or the default value if there is
none) is resent again.

Note that this will not catch transient counters/items that will be
created later on, e.g. triggered by new peers or subscribers.

To just force this kind of dump on a running reporter, it is
sufficient to invoke the 'enable' command in its configuration node.

Sponsored-by: On-Waves ehf
2015-11-09 14:49:49 +01:00
Jacob Erlbeck 916423ef95 stats: Fix name prefix handling
Currently the having an unset prefix leads to an abort() in the
statsd reporter due to an fprintf format string error. In addition
the prefix cannot be reset to its initial state (NULL) by using 'no
prefix', which just sets the prefix to the empty string, causing a
single leading dot to appear in front of the name.

This commit changes the implemenation to consistly use NULL for
the unset name prefix ('no prefix') and to handle this case correctly
in the statsd reporter.

Sponsored-by: On-Waves ehf
2015-11-09 10:52:19 +01:00
Holger Hans Peter Freyther 834819471a stats: Document the level in show stats level options
Potentially Fixes:

<command id='show stats level (global|peer|subscriber)'>
        <param name='subscriber' doc='(null)' />
2015-11-07 21:11:14 +01:00
Alexander Huemer aab4a2497c osmo-sim-test: add missing include 2015-11-07 12:30:38 +01:00
Holger Hans Peter Freyther eed4695d06 debian: Roll a new release with the GPRS NS counter fix 2015-11-04 14:48:13 +01:00
Holger Hans Peter Freyther 495b0dbd24 gprs-ns/stats: When the NSVCI is updated, update the stats counter
The NS object is created with an unknown identity and only after
the reset procedure has progressed (completed?) we know the real
ID for this peer. Before nobody has looked at the idx values (this
could have been seen with the CTRL interface) but with statsd the
wrong NSVCI becomes obvious.

Add routines to update the idx and I don't know if the change of
idx is causing any issues but we will find that out soon.
2015-11-04 14:39:37 +01:00
Holger Hans Peter Freyther 6e149b1f1a debian: Make new minor release with the NS bugfix 2015-11-04 10:23:57 +01:00
Jacob Erlbeck 59b90bc444 stats/vty: Add selective show stats command
Currently there is only the 'show stats' command which shows all
counter and stat_item values. This can lead to many lines of output
if there are per-subscriber rate counters.

The new command added by this commit allows it to only show groups of
a certain level (class_id), similar to the 'level' configuration
command for stats reporter.

The new command is

  show stats level (global|peer|subscriber)

Sponsored-by: On-Waves ehf
2015-08-22 01:47:55 +00:00
Jacob Erlbeck fed2a488b9 ns/stats: Fix class_id of "NSVC Peer Statistics" rate_ctr group
Currently the class_id is not set which effectively puts these groups
into the 'subscriber' class.

This commit adds the missing initialisation value.

Sponsored-by: On-Waves ehf
2015-08-22 01:35:24 +00:00
Jacob Erlbeck be37fb7db4 stats/test: Add tests to check VTY configuration
This commit adds tests to verify the stats related VTY configuration
commands.

Sponsored-by: On-Waves ehf
2015-08-22 01:34:05 +00:00
Jacob Erlbeck ca6602f476 vty/test: Refactor vty creation/deletion into separate functions
Currently this is part of the only test function that uses the
vty directly.

In preperation for more such test cases, this commit moves this code
into separate functions.

Sponsored-by: On-Waves ehf
2015-08-22 01:31:31 +00:00
Jacob Erlbeck ee2657f6af test: Remove unneeded linking to libosmovty.la
The addition of libosmovty.la to several test cases as done in
commit 738d9e2210 (stats: Add vty_out_stat_item_group)
is not needed.

This commit removes them.

Sponsored-by: On-Waves ehf
2015-08-22 01:31:23 +00:00
Holger Hans Peter Freyther bb4ae64fbb debian: Install libosmoctrl0 too when installing the dev package 2015-11-03 11:36:18 +01:00
Holger Hans Peter Freyther 8649d57f50 misc: Prepare the release of libosmocore 0.9.0
Bump the ABI version of libosmovty and we need to do this
recursively to force rebuilds of our software.
2015-11-03 09:32:32 +01:00
Holger Hans Peter Freyther c337693c4c stats: Fix build on FreeBSD
include stdint.h for int64_t and use netinet/in.h and not
netinet/ip.h for getting sockaddr_in and such.
2015-08-21 19:56:54 +00:00
Holger Hans Peter Freyther 3f838b717e timer: Fix compiler warning about timeval
timer.c:27:23: warning: tentative definition of variable with internal linkage has incomplete
      non-array type 'struct timeval' [-Wtentative-definition-incomplete-type]
static struct timeval nearest;
                      ^
timer.c:27:15: note: forward declaration of 'struct timeval'
static struct timeval nearest;
2015-08-21 19:45:08 +00:00
Neels Hofmeyr 07cf861e25 gtphub: add OSMO_VTY_PORT_GTPHUB.
This is for gtphub, being developed in openbsc.git.

Sponsored-by: On-Waves ehi
2015-11-02 20:24:06 +01:00
Neels Hofmeyr 667e83d71e fix some typos
Sponsored-by: On-Waves ehi
2015-11-02 20:23:34 +01:00
Holger Hans Peter Freyther d7b0577d7d Merge branch 'jerlbeck/wip/stats'
* This adds a new counter type (to measure time or delay)
* A statsd reporting backend. This can be fed into graphite
or similar tools.
* A periodic log backend for performance values
2015-11-02 15:57:34 +01:00
Holger Hans Peter Freyther 8f0374f752 stats: Fix handling of the no mtu command
For the atoi we need to pass the val as a string. This means
we need to write "0" which then gets parsed to 0.

[src/vty/stats_vty.c:90]: (error) Possible null pointer dereference: val
2015-11-02 15:53:09 +01:00
Holger Hans Peter Freyther 7921975989 stats: Do not assign the wrong addresss
we need to put the default value into inaddr and not put a
32bit value into the addr pointer.

Spotted by cppcheck:
[src/stats.c:231]: (error) Uninitialized variable: inaddr
2015-11-02 15:50:32 +01:00
Holger Hans Peter Freyther 837e940627 stats: Remove warnings about never read variables
Nothing is being done with these return values. Remove them
for now and update the TODO entry that is present at two of
the three places.

stats.c: In function ‘rate_ctr_handler’:
stats.c:570:6: warning: variable ‘rc’ set but not used [-Wunused-but-set-variable]
  int rc;
      ^
stats.c: In function ‘osmo_stat_item_handler’:
stats.c:617:6: warning: variable ‘rc’ set but not used [-Wunused-but-set-variable]
  int rc;
      ^
stats.c: In function ‘handle_counter’:
stats.c:651:6: warning: variable ‘rc’ set but not used [-Wunused-but-set-variable]
  int rc;
2015-11-02 15:44:26 +01:00
Jacob Erlbeck 79125ecf7d log: Add new DLSTATS log level
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
2015-11-02 15:39:31 +01:00
Jacob Erlbeck bc9d9aced8 stats: Limit reporting by class id
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
2015-11-02 15:39:31 +01:00
Jacob Erlbeck 16fe8dab7c stats: Report group indices as unsigned int
Currently the unsigned group index value is silently being cast to
(signed) int in the log and statsd reporter code. If the resulting
value is negative (which can happen for instance with MMCTX
counters), the index is assumed to be unset.

This commit changes the affected types to unsigned. The index value 0
is then the only value indicating an unset group.

Sponsored-by: On-Waves ehf
2015-11-02 15:39:31 +01:00
Jacob Erlbeck 34eec7da8d vty: Add reserved nodes to enum node_type
Currently every time a node is added to enum node_type, this
constitutes an ABI change, since _LAST_OSMOVTY_NODE will get
incremented accordingly. In this case, every project that adds new
node type based on that value will have to be recompiled.

This commit adds 4 spare node type values, which can be replaced
one-by-one by new real types until they are exhausted to avoid
this kind of ABI change.

Sponsored-by: On-Waves ehf
2015-11-02 15:39:31 +01:00
Jacob Erlbeck fc9533d6c4 stats: Add osmo_ name prefix to identifiers
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]
2015-11-02 15:39:01 +01:00
Jacob Erlbeck bc4f7ae512 stats: Add log reporter
This reporter passes the measurement values to the logging subsystem
as DSTATS (which is currently DLGLOBAL) level INFO messages.

Sponsored-by: On-Waves ehf
2015-10-29 01:10:07 +01:00
Jacob Erlbeck 490b38f57a stats: Use function pointers in reporter objects
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
2015-10-29 01:10:07 +01:00
Jacob Erlbeck ed197fd4f9 stats: Make net config optional
To support reporters without network configuration, this commit
introduces the have_net_config flag to provide corresponding error
messages.

Sponsored-by: On-Waves ehf
2015-10-29 01:10:06 +01:00