Vadim Yanitskiy has uploaded this change for review. ( 
https://gerrit.osmocom.org/9711


Change subject: libmsc/gsm_09_11.c: introduce rate counters for NC_SS sessions
......................................................................

libmsc/gsm_09_11.c: introduce rate counters for NC_SS sessions

This change introduces some new rate counters for call-independent
SS/USSD connections. As OsmoMSC doesn't handle the messages itself,
and only responsible for dispatching messages between both
A and GSUP interfaces, the following is taken into account:

  - MS-initiated and network-initiated requests to establish
    a NC SS/USSD session (transaction) - "nc_ss:m{o|t}_requests";

  - successfully established MS-initiated and network-initiated
    SS/USSD sessions (transactions) - "nc_ss:m{o|t}_established".

Change-Id: I23c9475abc9951d82f3342fdc5aaa367836f7741
---
M include/osmocom/msc/gsm_data.h
M src/libmsc/gsm_09_11.c
M src/libmsc/msc_vty.c
3 files changed, 38 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/11/9711/1

diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h
index 73047ee..3af619d 100644
--- a/include/osmocom/msc/gsm_data.h
+++ b/include/osmocom/msc/gsm_data.h
@@ -200,6 +200,10 @@
        MSC_CTR_CALL_ACTIVE,
        MSC_CTR_CALL_COMPLETE,
        MSC_CTR_CALL_INCOMPLETE,
+       MSC_CTR_NC_SS_MO_REQUESTS,
+       MSC_CTR_NC_SS_MO_ESTABLISHED,
+       MSC_CTR_NC_SS_MT_REQUESTS,
+       MSC_CTR_NC_SS_MT_ESTABLISHED,
 };

 static const struct rate_ctr_desc msc_ctr_description[] = {
@@ -227,6 +231,10 @@
        [MSC_CTR_CALL_ACTIVE] =                 {"call:active", "Count total 
amount of calls that ever reached active state."},
        [MSC_CTR_CALL_COMPLETE] =               {"call:complete", "Count total 
amount of calls which got terminated by disconnect req or ind after reaching 
active state."},
        [MSC_CTR_CALL_INCOMPLETE] =             {"call:incomplete", "Count 
total amount of call which got terminated by any other reason after reaching 
active state."},
+       [MSC_CTR_NC_SS_MO_REQUESTS] =           {"nc_ss:mo_requests", "Received 
MS-initiated call independent SS/USSD requests."},
+       [MSC_CTR_NC_SS_MO_ESTABLISHED] =        {"nc_ss:mo_established", 
"Established MS-initiated call independent SS/USSD sessions."},
+       [MSC_CTR_NC_SS_MT_REQUESTS] =           {"nc_ss:mt_requests", "Received 
network-initiated call independent SS/USSD requests."},
+       [MSC_CTR_NC_SS_MT_ESTABLISHED] =        {"nc_ss:mt_established", 
"Established network-initiated call independent SS/USSD sessions."},
 };

 static const struct rate_ctr_group_desc msc_ctrg_desc = {
diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c
index e7bdcf5..a04b1f9 100644
--- a/src/libmsc/gsm_09_11.c
+++ b/src/libmsc/gsm_09_11.c
@@ -30,6 +30,7 @@
 #include <stdbool.h>

 #include <osmocom/core/linuxlist.h>
+#include <osmocom/core/rate_ctr.h>
 #include <osmocom/core/utils.h>
 #include <osmocom/core/msgb.h>
 #include <osmocom/gsm/tlv.h>
@@ -73,6 +74,9 @@
        /* Reuse existing transaction, or create a new one */
        trans = trans_find_by_id(conn, pdisc, tid);
        if (!trans) {
+               /* Count MS-initiated attempts to establish a NC SS/USSD 
session */
+               
rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_REQUESTS]);
+
                /**
                 * According to GSM TS 04.80, section 2.4.2 "Register
                 * (mobile station to network direction)", the REGISTER
@@ -184,6 +188,10 @@
        else
                msc_subscr_conn_communicating(conn);

+       /* Count established MS-initiated NC SS/USSD sessions */
+       if (msg_type == GSM0480_MTYPE_REGISTER)
+               
rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_ESTABLISHED]);
+
        return 0;

 error:
@@ -232,6 +240,9 @@
                /* Sent to the MS, give ownership of ss_msg */
                msc_tx_dtap(transt->conn, ss_msg);
                transt->ss.msg = NULL;
+
+               /* Count established network-initiated NC SS/USSD sessions */
+               
rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED]);
                break;
        case GSM_PAGING_EXPIRED:
        case GSM_PAGING_BUSY:
@@ -377,6 +388,9 @@
        /* Attempt to find DTAP-transaction */
        trans = trans_find_by_callref(net, gsup_msg->session_id);
        if (!trans) {
+               /* Count network-initiated attempts to establish a NC SS/USSD 
session */
+               rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_REQUESTS]);
+
                /* Attempt to establish a new transaction */
                trans = establish_nc_ss_trans(net, vsub, gsup_msg);
                if (!trans) {
@@ -459,6 +473,10 @@
        if (trans_end)
                trans_free(trans);

+       /* Count established network-initiated NC SS/USSD sessions */
+       if (gsup_msg->session_state == OSMO_GSUP_SESSION_STATE_BEGIN)
+               rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED]);
+
        vlr_subscr_put(vsub);
        return 0;
 }
diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c
index d10028e..3cbb001 100644
--- a/src/libmsc/msc_vty.c
+++ b/src/libmsc/msc_vty.c
@@ -1217,6 +1217,18 @@
                gsmnet->msc_ctrs->ctr[MSC_CTR_CALL_MT_SETUP].current,
                gsmnet->msc_ctrs->ctr[MSC_CTR_CALL_MT_CONNECT].current,
                VTY_NEWLINE);
+       vty_out(vty, "MO NC SS/USSD           : %lu requests, %lu established, 
%lu rejected%s",
+               gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_REQUESTS].current,
+               gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_ESTABLISHED].current,
+               gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_REQUESTS].current
+                       - 
gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_ESTABLISHED].current,
+               VTY_NEWLINE);
+       vty_out(vty, "MT NC SS/USSD           : %lu requests, %lu established, 
%lu rejected%s",
+               gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_REQUESTS].current,
+               gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED].current,
+               gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_REQUESTS].current
+                       - 
gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED].current,
+               VTY_NEWLINE);
        return CMD_SUCCESS;
 }


--
To view, visit https://gerrit.osmocom.org/9711
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I23c9475abc9951d82f3342fdc5aaa367836f7741
Gerrit-Change-Number: 9711
Gerrit-PatchSet: 1
Gerrit-Owner: Vadim Yanitskiy <[email protected]>

Reply via email to