pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/41407?usp=email )
Change subject: Add per ss7 instance rate_ctr_group ......................................................................
Add per ss7 instance rate_ctr_group
Change-Id: Id916307c2465daab3072f850774240969fae3f6e --- M src/ss7_asp.c M src/ss7_instance.c M src/ss7_instance.h 3 files changed, 38 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran refs/changes/07/41407/1
diff --git a/src/ss7_asp.c b/src/ss7_asp.c index f3476ea..976e54a 100644 --- a/src/ss7_asp.c +++ b/src/ss7_asp.c @@ -1051,6 +1051,7 @@ }
msg->dst = asp; + rate_ctr_inc2(asp->inst->ctrg, SS7_INST_CTR_PKT_RX_TOTAL); rate_ctr_inc2(asp->ctrg, SS7_ASP_CTR_PKT_RX_TOTAL); rc = ipa_rx_msg(asp, msg, asp->ipa.sls); msgb_free(msg); @@ -1131,6 +1132,7 @@ }
msg->dst = asp; + rate_ctr_inc2(asp->inst->ctrg, SS7_INST_CTR_PKT_RX_TOTAL); rate_ctr_inc2(asp->ctrg, SS7_ASP_CTR_PKT_RX_TOTAL); rc = xua_rx_msg(asp, msg); msgb_free(msg); @@ -1176,6 +1178,7 @@ }
msg->dst = asp; + rate_ctr_inc2(asp->inst->ctrg, SS7_INST_CTR_PKT_RX_TOTAL); rate_ctr_inc2(asp->ctrg, SS7_ASP_CTR_PKT_RX_TOTAL); rc = m3ua_tcp_rx_msg(asp, msg); msgb_free(msg); @@ -1266,6 +1269,7 @@ }
msg->dst = asp; + rate_ctr_inc2(asp->inst->ctrg, SS7_INST_CTR_PKT_RX_TOTAL); rate_ctr_inc2(asp->ctrg, SS7_ASP_CTR_PKT_RX_TOTAL); rc = ipa_rx_msg(asp, msg, asp->ipa.sls); msgb_free(msg); @@ -1287,6 +1291,7 @@ }
msg->dst = asp; + rate_ctr_inc2(asp->inst->ctrg, SS7_INST_CTR_PKT_RX_TOTAL); rate_ctr_inc2(asp->ctrg, SS7_ASP_CTR_PKT_RX_TOTAL); rc = m3ua_tcp_rx_msg(asp, msg); out: @@ -1331,6 +1336,7 @@ }
msg->dst = asp; + rate_ctr_inc2(asp->inst->ctrg, SS7_INST_CTR_PKT_RX_TOTAL); rate_ctr_inc2(asp->ctrg, SS7_ASP_CTR_PKT_RX_TOTAL); rc = xua_rx_msg(asp, msg); out: @@ -1390,6 +1396,7 @@ OSMO_ASSERT(0); }
+ rate_ctr_inc2(asp->inst->ctrg, SS7_INST_CTR_PKT_TX_TOTAL); rate_ctr_inc2(asp->ctrg, SS7_ASP_CTR_PKT_TX_TOTAL); LOGPASP(asp, DLSS7, LOGL_DEBUG, "Tx %d bytes: %s\n", msg->len, msgb_hexdump(msg));
@@ -1438,6 +1445,7 @@
int ss7_asp_rx_unknown(struct osmo_ss7_asp *asp, int ppid_mux, struct msgb *msg) { + rate_ctr_inc2(asp->inst->ctrg, SS7_INST_CTR_PKT_RX_UNKNOWN); rate_ctr_inc2(asp->ctrg, SS7_ASP_CTR_PKT_RX_UNKNOWN);
if (g_osmo_ss7_asp_rx_unknown_cb) diff --git a/src/ss7_instance.c b/src/ss7_instance.c index b583b98..b166e8a 100644 --- a/src/ss7_instance.c +++ b/src/ss7_instance.c @@ -49,6 +49,19 @@ .component_len = { 3, 8, 3}, };
+static const struct rate_ctr_desc ss7_inst_rcd[] = { + [SS7_INST_CTR_PKT_RX_TOTAL] = { "rx:packets:total", "Total number of packets received" }, + [SS7_INST_CTR_PKT_RX_UNKNOWN] = { "rx:packets:unknown", "Number of packets received for unknown PPID" }, + [SS7_INST_CTR_PKT_TX_TOTAL] = { "tx:packets:total", "Total number of packets transmitted" }, +}; + +static const struct rate_ctr_group_desc ss7_inst_rcgd = { + .group_name_prefix = "s7i", + .group_description = "SS7 Instance", + .num_ctr = ARRAY_SIZE(ss7_inst_rcd), + .ctr_desc = ss7_inst_rcd, +}; + struct osmo_ss7_instance * ss7_instance_alloc(void *ctx, uint32_t id) { @@ -64,11 +77,18 @@ inst->cfg.id = id; LOGSS7(inst, LOGL_INFO, "Creating SS7 Instance\n");
+ INIT_LLIST_HEAD(&inst->cfg.sccp_address_book); INIT_LLIST_HEAD(&inst->linksets); INIT_LLIST_HEAD(&inst->as_list); INIT_LLIST_HEAD(&inst->asp_list); INIT_LLIST_HEAD(&inst->rtable_list); INIT_LLIST_HEAD(&inst->xua_servers); + + inst->ctrg = rate_ctr_group_alloc(inst, &ss7_inst_rcgd, id); + if (!inst->ctrg) { + talloc_free(inst); + return NULL; + } inst->rtable_system = ss7_route_table_find_or_create(inst, "system");
/* default point code structure + formatting */ @@ -79,8 +99,6 @@
llist_add_tail(&inst->list, &osmo_ss7_instances);
- INIT_LLIST_HEAD(&inst->cfg.sccp_address_book); - return inst; }
@@ -105,6 +123,7 @@ llist_for_each_entry_safe(lset, lset2, &inst->linksets, list) ss7_linkset_destroy(lset);
+ rate_ctr_group_free(inst->ctrg); llist_del(&inst->list); talloc_free(inst); } diff --git a/src/ss7_instance.h b/src/ss7_instance.h index bb8815b..5c76b46 100644 --- a/src/ss7_instance.h +++ b/src/ss7_instance.h @@ -3,6 +3,7 @@ #include <stdint.h> #include <stdbool.h> #include <osmocom/core/linuxlist.h> +#include <osmocom/core/rate_ctr.h>
/*********************************************************************** * SS7 Instances @@ -13,6 +14,12 @@ struct osmo_ss7_route_label; struct osmo_sccp_instance;
+enum ss7_instance_ctr { + SS7_INST_CTR_PKT_RX_TOTAL, + SS7_INST_CTR_PKT_RX_UNKNOWN, + SS7_INST_CTR_PKT_TX_TOTAL, +}; + struct osmo_ss7_pc_fmt { char delimiter; uint8_t component_len[3]; @@ -39,6 +46,8 @@
struct osmo_sccp_instance *sccp;
+ struct rate_ctr_group *ctrg; + struct { uint32_t id; char *name;