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 <pespin(a)sysmocom.de>