aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bsc/osmo_bsc_msc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/osmo-bsc/osmo_bsc_msc.c')
-rw-r--r--src/osmo-bsc/osmo_bsc_msc.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/osmo-bsc/osmo_bsc_msc.c b/src/osmo-bsc/osmo_bsc_msc.c
index 24c8c6d99..1704a73a8 100644
--- a/src/osmo-bsc/osmo_bsc_msc.c
+++ b/src/osmo-bsc/osmo_bsc_msc.c
@@ -43,6 +43,30 @@
#include <netinet/tcp.h>
#include <unistd.h>
+static const struct rate_ctr_desc msc_ctr_description[] = {
+};
+
+static const struct rate_ctr_group_desc msc_ctrg_desc = {
+ "msc",
+ "mobile switching center",
+ OSMO_STATS_CLASS_GLOBAL,
+ ARRAY_SIZE(msc_ctr_description),
+ msc_ctr_description,
+};
+
+static const struct osmo_stat_item_desc msc_stat_desc[] = {
+ { "msc_links:active", "Number of active MSC links", "", 16, 0 },
+ { "msc_links:total", "Number of configured MSC links", "", 16, 0 },
+};
+
+static const struct osmo_stat_item_group_desc msc_statg_desc = {
+ .group_name_prefix = "msc",
+ .group_description = "mobile switching center",
+ .class_id = OSMO_STATS_CLASS_GLOBAL,
+ .num_items = ARRAY_SIZE(msc_stat_desc),
+ .item_desc = msc_stat_desc,
+};
+
int osmo_bsc_msc_init(struct bsc_msc_data *msc)
{
struct gsm_network *net = msc->network;
@@ -91,6 +115,19 @@ struct bsc_msc_data *osmo_msc_data_alloc(struct gsm_network *net, int nr)
if (!msc_data)
return NULL;
+ /* init statistics */
+ msc_data->msc_ctrs = rate_ctr_group_alloc(net, &msc_ctrg_desc, nr);
+ if (!msc_data->msc_ctrs) {
+ talloc_free(msc_data);
+ return NULL;
+ }
+ msc_data->msc_statg = osmo_stat_item_group_alloc(net, &msc_statg_desc, nr);
+ if (!msc_data->msc_statg) {
+ rate_ctr_group_free(msc_data->msc_ctrs);
+ talloc_free(msc_data);
+ return NULL;
+ }
+
llist_add_tail(&msc_data->entry, &net->bsc_data->mscs);
/* Init back pointer */