Stefan Sperling has uploaded this change for review. (

Change subject: show all global counters of osmo-bsc in vty

show all global counters of osmo-bsc in vty

The 'show statistics' VTY command was not showing all counters
maintained by osmo-bsc. Instead of printing just two counters
related to paging, print all available counters in a generic way.

Adjust descriptions of some counters for nicer display.

After startup (all counters are zero) is now looks like this:

OsmoBSC# show statistics
       handover:attempted:          0 Received handover attempts.
      handover:no_channel:          0 Sent no channel available responses.
         handover:timeout:          0 Timeouts of timer T3103.
       handover:completed:          0 Received handover completed.
          handover:failed:          0 Received HO FAIL messages.
         paging:attempted:          0 Paging attempts for a subscriber.
          paging:detached:          0 Paging request send failures because no 
responsible BTS was found.
         paging:responded:          0 Paging attempts with successful response.

Change-Id: I58ae04e1960774d760e3ebb54a4f307c9f753655
Related: OS#3245
M include/osmocom/bsc/gsm_data.h
M src/libbsc/bsc_vty.c
2 files changed, 11 insertions(+), 7 deletions(-)

  git pull ssh:// refs/changes/17/9217/1

diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 29b97f0..6365938 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -1133,12 +1133,12 @@
 static const struct rate_ctr_desc bsc_ctr_description[] = {
        [BSC_CTR_HANDOVER_ATTEMPTED] =          {"handover:attempted", 
"Received handover attempts."},
        [BSC_CTR_HANDOVER_NO_CHANNEL] =         {"handover:no_channel", "Sent 
no channel available responses."},
-       [BSC_CTR_HANDOVER_TIMEOUT] =            {"handover:timeout", "Count the 
amount of timeouts of timer T3103."},
+       [BSC_CTR_HANDOVER_TIMEOUT] =            {"handover:timeout", "Timeouts 
of timer T3103."},
        [BSC_CTR_HANDOVER_COMPLETED] =          {"handover:completed", 
"Received handover completed."},
-       [BSC_CTR_HANDOVER_FAILED] =             {"handover:failed", "Receive HO 
FAIL messages."},
+       [BSC_CTR_HANDOVER_FAILED] =             {"handover:failed", "Received 
HO FAIL messages."},

        [BSC_CTR_PAGING_ATTEMPTED] =            {"paging:attempted", "Paging 
attempts for a subscriber."},
-       [BSC_CTR_PAGING_DETACHED] =             {"paging:detached", "Counts the 
amount of paging attempts which couldn't sent out any paging request because no 
responsible bts found."},
+       [BSC_CTR_PAGING_DETACHED] =             {"paging:detached", "Paging 
request send failures because no responsible BTS was found."},
        [BSC_CTR_PAGING_RESPONDED] =            {"paging:responded", "Paging 
attempts with successful response."},

diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c
index ea4c8d0..e53a14f 100644
--- a/src/libbsc/bsc_vty.c
+++ b/src/libbsc/bsc_vty.c
@@ -4133,12 +4133,16 @@
        return CMD_SUCCESS;

+int print_counter(struct rate_ctr_group *bsc_ctrs, struct rate_ctr *ctr, const 
struct rate_ctr_desc *desc, void *data)
+       struct vty *vty = data;
+       vty_out(vty, "%25s: %10"PRIu64" %s%s", desc->name, ctr->current, 
desc->description, VTY_NEWLINE);
+       return 0;
 void openbsc_vty_print_statistics(struct vty *vty, struct gsm_network *net)
-       vty_out(vty, "Paging                  : %"PRIu64" attempted, %"PRIu64" 
-               net->bsc_ctrs->ctr[BSC_CTR_PAGING_ATTEMPTED].current,
-               net->bsc_ctrs->ctr[BSC_CTR_PAGING_RESPONDED].current,
-               VTY_NEWLINE);
+       rate_ctr_for_each_counter(net->bsc_ctrs, print_counter, vty);


To view, visit
To unsubscribe, or for help writing mail filters, visit

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I58ae04e1960774d760e3ebb54a4f307c9f753655
Gerrit-Change-Number: 9217
Gerrit-PatchSet: 1
Gerrit-Owner: Stefan Sperling <>

Reply via email to