pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-msc/+/40633?usp=email )


Change subject: ran_peer: Introuce stats msc.ran_peers.{total,active}
......................................................................

ran_peer: Introuce stats msc.ran_peers.{total,active}

Change-Id: I36e40510c9a95f0c9cf5f32d2a7baab840aa8660
---
M include/osmocom/msc/gsm_data.h
M src/libmsc/ran_peer.c
2 files changed, 33 insertions(+), 2 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/33/40633/1

diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h
index 119f093..03fba55 100644
--- a/include/osmocom/msc/gsm_data.h
+++ b/include/osmocom/msc/gsm_data.h
@@ -109,6 +109,8 @@
 enum {
        MSC_STAT_ACTIVE_CALLS,
        MSC_STAT_ACTIVE_NC_SS,
+       MSC_STAT_RAN_PEERS_TOTAL,
+       MSC_STAT_RAN_PEERS_ACTIVE,
 };

 static const struct rate_ctr_group_desc msc_ctrg_desc = {
@@ -120,8 +122,10 @@
 };

 static const struct osmo_stat_item_desc msc_stat_item_description[] = {
-       [MSC_STAT_ACTIVE_CALLS] = { "msc.active_calls", "Currently active calls 
"          , OSMO_STAT_ITEM_NO_UNIT, 4, 0},
-       [MSC_STAT_ACTIVE_NC_SS]        = { "msc.active_nc_ss", "Currently 
active SS/USSD sessions", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
+       [MSC_STAT_ACTIVE_CALLS]         = { "msc.active_calls", "Currently 
active calls ", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
+       [MSC_STAT_ACTIVE_NC_SS]         = { "msc.active_nc_ss", "Currently 
active SS/USSD sessions", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
+       [MSC_STAT_RAN_PEERS_TOTAL]      = { "msc.ran_peers.total", "Total RAN 
peers (BSC, RNC)", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
+       [MSC_STAT_RAN_PEERS_ACTIVE]     = { "msc.ran_peers.active", "Currently 
active RAN peers (BSSAP/RANAP ready)", OSMO_STAT_ITEM_NO_UNIT, 4, 0},
 };

 static const struct osmo_stat_item_group_desc msc_statg_desc = {
diff --git a/src/libmsc/ran_peer.c b/src/libmsc/ran_peer.c
index d87a279..222a014 100644
--- a/src/libmsc/ran_peer.c
+++ b/src/libmsc/ran_peer.c
@@ -23,6 +23,7 @@
 #include <osmocom/core/linuxlist.h>
 #include <osmocom/core/logging.h>
 #include <osmocom/core/fsm.h>
+#include <osmocom/core/stat_item.h>
 #include <osmocom/sigtran/sccp_helpers.h>

 #include <osmocom/msc/ran_peer.h>
@@ -45,6 +46,7 @@
 /* Allocate a RAN peer with FSM instance. To deallocate, call ran_peer_free(). 
*/
 static struct ran_peer *ran_peer_alloc(struct sccp_ran_inst *sri, const struct 
osmo_sccp_addr *peer_addr)
 {
+       struct gsm_network *net = sri->user_data;
        struct ran_peer *rp;
        char *sccp_addr;
        char *pos;
@@ -72,17 +74,24 @@
        osmo_fsm_inst_update_id_f(rp->fi, "%s:%s", 
osmo_rat_type_name(sri->ran->type), sccp_addr);

        llist_add(&rp->entry, &sri->ran_peers);
+       osmo_stat_item_inc(osmo_stat_item_group_get_item(net->statg, 
MSC_STAT_RAN_PEERS_TOTAL), 1);

        return rp;
 }

 void ran_peer_free(struct ran_peer *rp)
 {
+       struct gsm_network *net;
        if (!rp)
                return;

        ran_peer_discard_all_conns(rp);

+       net = rp->sri->user_data;
+       if (rp->fi->state == RAN_PEER_ST_READY)
+               osmo_stat_item_dec(osmo_stat_item_group_get_item(net->statg, 
MSC_STAT_RAN_PEERS_ACTIVE), 1);
+       osmo_stat_item_dec(osmo_stat_item_group_get_item(net->statg, 
MSC_STAT_RAN_PEERS_TOTAL), 1);
+
        osmo_fsm_inst_free(rp->fi);
        rp->fi = NULL;
        llist_del(&rp->entry);
@@ -376,6 +385,14 @@
        return msc_i->ran_conn;
 }

+void ran_peer_st_ready_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+       struct ran_peer *rp = fi->priv;
+       struct gsm_network *net = rp->sri->user_data;
+       if (prev_state != RAN_PEER_ST_READY)
+               osmo_stat_item_inc(osmo_stat_item_group_get_item(net->statg, 
MSC_STAT_RAN_PEERS_ACTIVE), 1);
+}
+
 void ran_peer_st_ready(struct osmo_fsm_inst *fi, uint32_t event, void *data)
 {
        struct ran_peer *rp = fi->priv;
@@ -464,6 +481,14 @@
        }
 }

+void ran_peer_st_ready_onleave(struct osmo_fsm_inst *fi, uint32_t next_state)
+{
+       struct ran_peer *rp = fi->priv;
+       struct gsm_network *net = rp->sri->user_data;
+       if (next_state != RAN_PEER_ST_READY)
+               osmo_stat_item_dec(osmo_stat_item_group_get_item(net->statg, 
MSC_STAT_RAN_PEERS_ACTIVE), 1);
+}
+
 static int ran_peer_fsm_timer_cb(struct osmo_fsm_inst *fi)
 {
        struct ran_peer *rp = fi->priv;
@@ -524,6 +549,8 @@
        [RAN_PEER_ST_READY] = {
                .name = "READY",
                .action = ran_peer_st_ready,
+               .onenter = ran_peer_st_ready_onenter,
+               .onleave = ran_peer_st_ready_onleave,
                .in_event_mask = 0
                        | S(RAN_PEER_EV_RX_RESET)
                        | S(RAN_PEER_EV_MSG_UP_CO_INITIAL)

--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/40633?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I36e40510c9a95f0c9cf5f32d2a7baab840aa8660
Gerrit-Change-Number: 40633
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to