From d8835234c5436c0ce781ddbc02b1094fd6dfc4a3 Mon Sep 17 00:00:00 2001 From: Alexander Chemeris Date: Thu, 7 May 2020 01:39:21 +0300 Subject: stats: Add a stats gauge for the MSC link status. Change-Id: Ibe4b29056ba704a27b925cfdba49f343ee34f428 --- include/osmocom/bsc/gsm_data.h | 5 +++++ src/osmo-bsc/a_reset.c | 4 ++++ src/osmo-bsc/bsc_init.c | 13 +++++++++++++ 3 files changed, 22 insertions(+) diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 11a4b5fc2..e85796cdf 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -1554,6 +1554,10 @@ static const struct rate_ctr_group_desc bsc_ctrg_desc = { bsc_ctr_description, }; +enum { + BSC_STAT_MSC_LINK, +}; + struct gsm_tz { int override; /* if 0, use system's time zone instead. */ int hr; /* hour */ @@ -1581,6 +1585,7 @@ struct gsm_network { } hodec2; struct rate_ctr_group *bsc_ctrs; + struct osmo_stat_item_group *bsc_statg; unsigned int num_bts; struct llist_head bts_list; diff --git a/src/osmo-bsc/a_reset.c b/src/osmo-bsc/a_reset.c index 3f512781b..9d7be8585 100644 --- a/src/osmo-bsc/a_reset.c +++ b/src/osmo-bsc/a_reset.c @@ -71,7 +71,9 @@ static void fsm_disc_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct reset_ctx *reset_ctx = (struct reset_ctx *)fi->priv; OSMO_ASSERT(reset_ctx); + struct bsc_msc_data *msc = reset_ctx->priv; LOGPFSML(fi, LOGL_NOTICE, "SIGTRAN connection succeeded.\n"); + osmo_stat_item_set(msc->network->bsc_statg->items[BSC_STAT_MSC_LINK], 1); reset_ctx->conn_loss_counter = 0; osmo_fsm_inst_state_chg(fi, ST_CONN, 0, 0); @@ -86,7 +88,9 @@ static void fsm_conn_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data) switch (event) { case EV_N_DISCONNECT: if (reset_ctx->conn_loss_counter >= BAD_CONNECTION_THRESOLD) { + struct bsc_msc_data *msc = reset_ctx->priv; LOGPFSML(fi, LOGL_NOTICE, "SIGTRAN connection down, reconnecting...\n"); + osmo_stat_item_set(msc->network->bsc_statg->items[BSC_STAT_MSC_LINK], 0); osmo_fsm_inst_state_chg(fi, ST_DISC, RESET_RESEND_INTERVAL, RESET_RESEND_TIMER_NO); } else reset_ctx->conn_loss_counter++; diff --git a/src/osmo-bsc/bsc_init.c b/src/osmo-bsc/bsc_init.c index 18776f33d..9d0ee86f3 100644 --- a/src/osmo-bsc/bsc_init.c +++ b/src/osmo-bsc/bsc_init.c @@ -44,6 +44,18 @@ #include #include +static const struct osmo_stat_item_desc bsc_stat_desc[] = { + { "msc_link", "MSC link status.", "", 16, 0 }, +}; + +static const struct osmo_stat_item_group_desc bsc_statg_desc = { + .group_name_prefix = "bsc", + .group_description = "base station controller", + .class_id = OSMO_STATS_CLASS_GLOBAL, + .num_items = ARRAY_SIZE(bsc_stat_desc), + .item_desc = bsc_stat_desc, +}; + int bsc_shutdown_net(struct gsm_network *net) { struct gsm_bts *bts; @@ -268,6 +280,7 @@ static struct gsm_network *bsc_network_init(void *ctx) talloc_free(net); return NULL; } + net->bsc_statg = osmo_stat_item_group_alloc(net, &bsc_statg_desc, 0); INIT_LLIST_HEAD(&net->bts_rejected); gsm_net_update_ctype(net); -- cgit v1.2.3