osmux: Add connection and global rate counters
Change-Id: I200a4aa3908cac0ec729d980a66f3df7f55e4da7
diff --git a/src/libosmo-mgcp/mgcp_ratectr.c b/src/libosmo-mgcp/mgcp_ratectr.c
index bc6aa3c..bf3d9d3 100644
--- a/src/libosmo-mgcp/mgcp_ratectr.c
+++ b/src/libosmo-mgcp/mgcp_ratectr.c
@@ -146,6 +146,14 @@
.ctr_desc = all_rtp_conn_rate_ctr_desc
};
+static const struct rate_ctr_group_desc all_osmux_conn_rate_ctr_group_desc = {
+ .group_name_prefix = "all_osmux_conn",
+ .group_description = "aggregated statistics for all osmux connections",
+ .class_id = 1,
+ .num_ctr = ARRAY_SIZE(all_osmux_conn_rate_ctr_desc),
+ .ctr_desc = all_rtp_conn_rate_ctr_desc
+};
+
/*! allocate global rate counters
* (called once at startup).
* \param[in] cfg mgw configuration for which the rate counters are allocated.
@@ -191,6 +199,7 @@
static atomic_uint mdcx_rate_ctr_index = 0;
static atomic_uint dlcx_rate_ctr_index = 0;
static atomic_uint all_rtp_conn_rate_ctr_index = 0;
+ static atomic_uint all_osmux_conn_rate_ctr_index = 0;
char ctr_name[256];
if (ratectr->mgcp_crcx_ctr_group == NULL) {
@@ -229,6 +238,15 @@
trunk->trunk_nr);
rate_ctr_group_set_name(ratectr->all_rtp_conn_stats, ctr_name);
}
+ if (ratectr->all_osmux_conn_stats == NULL) {
+ ratectr->all_osmux_conn_stats = rate_ctr_group_alloc(trunk, &all_osmux_conn_rate_ctr_group_desc,
+ all_osmux_conn_rate_ctr_index++);
+ if (!ratectr->all_osmux_conn_stats)
+ return -EINVAL;
+ snprintf(ctr_name, sizeof(ctr_name), "%s-%u:osmux_conn", mgcp_trunk_type_strs_str(trunk->trunk_type),
+ trunk->trunk_nr);
+ rate_ctr_group_set_name(ratectr->all_osmux_conn_stats, ctr_name);
+ }
/* E1 specific */
if (trunk->trunk_type == MGCP_TRUNK_E1 && ratectr->e1_stats == NULL) {
@@ -265,6 +283,10 @@
rate_ctr_group_free(ratectr->all_rtp_conn_stats);
ratectr->all_rtp_conn_stats = NULL;
}
+ if (ratectr->all_osmux_conn_stats) {
+ rate_ctr_group_free(ratectr->all_osmux_conn_stats);
+ ratectr->all_osmux_conn_stats = NULL;
+ }
/* E1 specific */
if (ratectr->e1_stats) {