<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/9711">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
Harald Welte: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">libmsc/gsm_09_11.c: introduce rate counters for NC_SS sessions<br><br>This change introduces some new rate counters for call-independent<br>SS/USSD connections. As OsmoMSC doesn't handle the messages itself,<br>and only responsible for dispatching messages between both<br>A and GSUP interfaces, the following is taken into account:<br><br> - MS-initiated and network-initiated requests to establish<br> a NC SS/USSD session (transaction) - "nc_ss:m{o|t}_requests";<br><br> - successfully established MS-initiated and network-initiated<br> SS/USSD sessions (transactions) - "nc_ss:m{o|t}_established".<br><br>Change-Id: I23c9475abc9951d82f3342fdc5aaa367836f7741<br>---<br>M include/osmocom/msc/gsm_data.h<br>M src/libmsc/gsm_09_11.c<br>M src/libmsc/msc_vty.c<br>3 files changed, 38 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h</span><br><span>index 73047ee..3af619d 100644</span><br><span>--- a/include/osmocom/msc/gsm_data.h</span><br><span>+++ b/include/osmocom/msc/gsm_data.h</span><br><span>@@ -200,6 +200,10 @@</span><br><span> MSC_CTR_CALL_ACTIVE,</span><br><span> MSC_CTR_CALL_COMPLETE,</span><br><span> MSC_CTR_CALL_INCOMPLETE,</span><br><span style="color: hsl(120, 100%, 40%);">+ MSC_CTR_NC_SS_MO_REQUESTS,</span><br><span style="color: hsl(120, 100%, 40%);">+ MSC_CTR_NC_SS_MO_ESTABLISHED,</span><br><span style="color: hsl(120, 100%, 40%);">+ MSC_CTR_NC_SS_MT_REQUESTS,</span><br><span style="color: hsl(120, 100%, 40%);">+ MSC_CTR_NC_SS_MT_ESTABLISHED,</span><br><span> };</span><br><span> </span><br><span> static const struct rate_ctr_desc msc_ctr_description[] = {</span><br><span>@@ -227,6 +231,10 @@</span><br><span> [MSC_CTR_CALL_ACTIVE] = {"call:active", "Count total amount of calls that ever reached active state."},</span><br><span> [MSC_CTR_CALL_COMPLETE] = {"call:complete", "Count total amount of calls which got terminated by disconnect req or ind after reaching active state."},</span><br><span> [MSC_CTR_CALL_INCOMPLETE] = {"call:incomplete", "Count total amount of call which got terminated by any other reason after reaching active state."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [MSC_CTR_NC_SS_MO_REQUESTS] = {"nc_ss:mo_requests", "Received MS-initiated call independent SS/USSD requests."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [MSC_CTR_NC_SS_MO_ESTABLISHED] = {"nc_ss:mo_established", "Established MS-initiated call independent SS/USSD sessions."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [MSC_CTR_NC_SS_MT_REQUESTS] = {"nc_ss:mt_requests", "Received network-initiated call independent SS/USSD requests."},</span><br><span style="color: hsl(120, 100%, 40%);">+ [MSC_CTR_NC_SS_MT_ESTABLISHED] = {"nc_ss:mt_established", "Established network-initiated call independent SS/USSD sessions."},</span><br><span> };</span><br><span> </span><br><span> static const struct rate_ctr_group_desc msc_ctrg_desc = {</span><br><span>diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c</span><br><span>index 96acd8c..2c5afb3 100644</span><br><span>--- a/src/libmsc/gsm_09_11.c</span><br><span>+++ b/src/libmsc/gsm_09_11.c</span><br><span>@@ -31,6 +31,7 @@</span><br><span> #include <stdbool.h></span><br><span> </span><br><span> #include <osmocom/core/linuxlist.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/rate_ctr.h></span><br><span> #include <osmocom/core/utils.h></span><br><span> #include <osmocom/core/msgb.h></span><br><span> #include <osmocom/gsm/tlv.h></span><br><span>@@ -74,6 +75,9 @@</span><br><span> /* Reuse existing transaction, or create a new one */</span><br><span> trans = trans_find_by_id(conn, pdisc, tid);</span><br><span> if (!trans) {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Count MS-initiated attempts to establish a NC SS/USSD session */</span><br><span style="color: hsl(120, 100%, 40%);">+ rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_REQUESTS]);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /**</span><br><span> * According to GSM TS 04.80, section 2.4.2 "Register</span><br><span> * (mobile station to network direction)", the REGISTER</span><br><span>@@ -185,6 +189,10 @@</span><br><span> else</span><br><span> msc_subscr_conn_communicating(conn);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Count established MS-initiated NC SS/USSD sessions */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (msg_type == GSM0480_MTYPE_REGISTER)</span><br><span style="color: hsl(120, 100%, 40%);">+ rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_ESTABLISHED]);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> return 0;</span><br><span> </span><br><span> error:</span><br><span>@@ -233,6 +241,9 @@</span><br><span> /* Sent to the MS, give ownership of ss_msg */</span><br><span> msc_tx_dtap(transt->conn, ss_msg);</span><br><span> transt->ss.msg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Count established network-initiated NC SS/USSD sessions */</span><br><span style="color: hsl(120, 100%, 40%);">+ rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED]);</span><br><span> break;</span><br><span> case GSM_PAGING_EXPIRED:</span><br><span> case GSM_PAGING_BUSY:</span><br><span>@@ -386,6 +397,9 @@</span><br><span> /* Attempt to find DTAP-transaction */</span><br><span> trans = trans_find_by_callref(net, gsup_msg->session_id);</span><br><span> if (!trans) {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Count network-initiated attempts to establish a NC SS/USSD session */</span><br><span style="color: hsl(120, 100%, 40%);">+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_REQUESTS]);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Attempt to establish a new transaction */</span><br><span> trans = establish_nc_ss_trans(net, vsub, gsup_msg);</span><br><span> if (!trans) {</span><br><span>@@ -464,5 +478,9 @@</span><br><span> if (trans_end)</span><br><span> trans_free(trans);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Count established network-initiated NC SS/USSD sessions */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (gsup_msg->session_state == OSMO_GSUP_SESSION_STATE_BEGIN)</span><br><span style="color: hsl(120, 100%, 40%);">+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED]);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> return 0;</span><br><span> }</span><br><span>diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c</span><br><span>index d10028e..3cbb001 100644</span><br><span>--- a/src/libmsc/msc_vty.c</span><br><span>+++ b/src/libmsc/msc_vty.c</span><br><span>@@ -1217,6 +1217,18 @@</span><br><span> gsmnet->msc_ctrs->ctr[MSC_CTR_CALL_MT_SETUP].current,</span><br><span> gsmnet->msc_ctrs->ctr[MSC_CTR_CALL_MT_CONNECT].current,</span><br><span> VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, "MO NC SS/USSD : %lu requests, %lu established, %lu rejected%s",</span><br><span style="color: hsl(120, 100%, 40%);">+ gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_REQUESTS].current,</span><br><span style="color: hsl(120, 100%, 40%);">+ gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_ESTABLISHED].current,</span><br><span style="color: hsl(120, 100%, 40%);">+ gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_REQUESTS].current</span><br><span style="color: hsl(120, 100%, 40%);">+ - gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_ESTABLISHED].current,</span><br><span style="color: hsl(120, 100%, 40%);">+ VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, "MT NC SS/USSD : %lu requests, %lu established, %lu rejected%s",</span><br><span style="color: hsl(120, 100%, 40%);">+ gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_REQUESTS].current,</span><br><span style="color: hsl(120, 100%, 40%);">+ gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED].current,</span><br><span style="color: hsl(120, 100%, 40%);">+ gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_REQUESTS].current</span><br><span style="color: hsl(120, 100%, 40%);">+ - gsmnet->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED].current,</span><br><span style="color: hsl(120, 100%, 40%);">+ VTY_NEWLINE);</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9711">change 9711</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/9711"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-msc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I23c9475abc9951d82f3342fdc5aaa367836f7741 </div>
<div style="display:none"> Gerrit-Change-Number: 9711 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Alexander Chemeris <Alexander.Chemeris@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>