<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/26142">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">implement bts.N.cm_serv_rej:<cause> rate counters<br><br>Related: I0214b27da18af87eca9715ebf7eeeff945e3e12a (osmo-ttcn3-hacks)<br>Related: SYS#4878<br>Change-Id: I79b1261e5a281d9797eaaf9c27d90edd8e27c78b<br>---<br>M include/osmocom/bsc/bts.h<br>M src/osmo-bsc/abis_rsl.c<br>M src/osmo-bsc/bts.c<br>3 files changed, 202 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/42/26142/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h</span><br><span>index 7e73acd..8e168ec 100644</span><br><span>--- a/include/osmocom/bsc/bts.h</span><br><span>+++ b/include/osmocom/bsc/bts.h</span><br><span>@@ -158,6 +158,31 @@</span><br><span>    BTS_CTR_SRVCC_TIMEOUT,</span><br><span>       BTS_CTR_SRVCC_FAILED,</span><br><span>        BTS_CTR_SRVCC_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+  BTS_CTR_CM_SERVICE_REJECT,</span><br><span style="color: hsl(120, 100%, 40%);">+    BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_HLR,</span><br><span style="color: hsl(120, 100%, 40%);">+      BTS_CTR_CM_SERV_REJ_ILLEGAL_MS,</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_VLR,</span><br><span style="color: hsl(120, 100%, 40%);">+      BTS_CTR_CM_SERV_REJ_IMEI_NOT_ACCEPTED,</span><br><span style="color: hsl(120, 100%, 40%);">+        BTS_CTR_CM_SERV_REJ_ILLEGAL_ME,</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_CTR_CM_SERV_REJ_PLMN_NOT_ALLOWED,</span><br><span style="color: hsl(120, 100%, 40%);">+ BTS_CTR_CM_SERV_REJ_LOC_NOT_ALLOWED,</span><br><span style="color: hsl(120, 100%, 40%);">+  BTS_CTR_CM_SERV_REJ_ROAMING_NOT_ALLOWED,</span><br><span style="color: hsl(120, 100%, 40%);">+      BTS_CTR_CM_SERV_REJ_NETWORK_FAILURE,</span><br><span style="color: hsl(120, 100%, 40%);">+  BTS_CTR_CM_SERV_REJ_SYNCH_FAILURE,</span><br><span style="color: hsl(120, 100%, 40%);">+    BTS_CTR_CM_SERV_REJ_CONGESTION,</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_CTR_CM_SERV_REJ_SRV_OPT_NOT_SUPPORTED,</span><br><span style="color: hsl(120, 100%, 40%);">+    BTS_CTR_CM_SERV_REJ_RQD_SRV_OPT_NOT_SUPPORTED,</span><br><span style="color: hsl(120, 100%, 40%);">+        BTS_CTR_CM_SERV_REJ_SRV_OPT_TMP_OUT_OF_ORDER,</span><br><span style="color: hsl(120, 100%, 40%);">+ BTS_CTR_CM_SERV_REJ_CALL_CAN_NOT_BE_IDENTIFIED,</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_CTR_CM_SERV_REJ_INCORRECT_MESSAGE,</span><br><span style="color: hsl(120, 100%, 40%);">+        BTS_CTR_CM_SERV_REJ_INVALID_MANDANTORY_INF,</span><br><span style="color: hsl(120, 100%, 40%);">+   BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_IMPLEMENTED,</span><br><span style="color: hsl(120, 100%, 40%);">+ BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_COMPATIBLE,</span><br><span style="color: hsl(120, 100%, 40%);">+  BTS_CTR_CM_SERV_REJ_INF_ELEME_NOT_IMPLEMENTED,</span><br><span style="color: hsl(120, 100%, 40%);">+        BTS_CTR_CM_SERV_REJ_CONDTIONAL_IE_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+      BTS_CTR_CM_SERV_REJ_MSG_NOT_COMPATIBLE,</span><br><span style="color: hsl(120, 100%, 40%);">+       BTS_CTR_CM_SERV_REJ_PROTOCOL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+   BTS_CTR_CM_SERV_REJ_RETRY_IN_NEW_CELL,</span><br><span> };</span><br><span> </span><br><span> extern const struct rate_ctr_desc bts_ctr_description[];</span><br><span>diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c</span><br><span>index cdd57c2..b6f11a9 100644</span><br><span>--- a/src/osmo-bsc/abis_rsl.c</span><br><span>+++ b/src/osmo-bsc/abis_rsl.c</span><br><span>@@ -1021,6 +1021,106 @@</span><br><span> }</span><br><span> </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* For 3GPP TS 52.402 unsuccReqsForService, we need to decode the DTAP and count CM Service Reject messages. */</span><br><span style="color: hsl(120, 100%, 40%);">+static void count_unsucc_reqs_for_service(struct msgb *msg)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct gsm_bts *bts = msg->lchan->ts->trx->bts;</span><br><span style="color: hsl(120, 100%, 40%);">+   struct gsm48_hdr *gh;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t pdisc, mtype;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t cause;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      if (msgb_l3len(msg) < sizeof(*gh))</span><br><span style="color: hsl(120, 100%, 40%);">+         return;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     gh = msgb_l3(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+    pdisc = gsm48_hdr_pdisc(gh);</span><br><span style="color: hsl(120, 100%, 40%);">+  mtype = gsm48_hdr_msg_type(gh);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (pdisc != GSM48_PDISC_MM || mtype != GSM48_MT_MM_CM_SERV_REJ)</span><br><span style="color: hsl(120, 100%, 40%);">+              return;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERVICE_REJECT));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  cause = gh->data[0];</span><br><span style="color: hsl(120, 100%, 40%);">+       switch (cause) {</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM48_REJECT_IMSI_UNKNOWN_IN_HLR:</span><br><span style="color: hsl(120, 100%, 40%);">+                rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_HLR));</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_ILLEGAL_MS:</span><br><span style="color: hsl(120, 100%, 40%);">+         rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_ILLEGAL_MS));</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_IMSI_UNKNOWN_IN_VLR:</span><br><span style="color: hsl(120, 100%, 40%);">+                rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_VLR));</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_IMEI_NOT_ACCEPTED:</span><br><span style="color: hsl(120, 100%, 40%);">+          rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_IMEI_NOT_ACCEPTED));</span><br><span style="color: hsl(120, 100%, 40%);">+                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_ILLEGAL_ME:</span><br><span style="color: hsl(120, 100%, 40%);">+         rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_ILLEGAL_ME));</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_PLMN_NOT_ALLOWED:</span><br><span style="color: hsl(120, 100%, 40%);">+           rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_PLMN_NOT_ALLOWED));</span><br><span style="color: hsl(120, 100%, 40%);">+         break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_LOC_NOT_ALLOWED:</span><br><span style="color: hsl(120, 100%, 40%);">+            rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_LOC_NOT_ALLOWED));</span><br><span style="color: hsl(120, 100%, 40%);">+          break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_ROAMING_NOT_ALLOWED:</span><br><span style="color: hsl(120, 100%, 40%);">+                rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_ROAMING_NOT_ALLOWED));</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_NETWORK_FAILURE:</span><br><span style="color: hsl(120, 100%, 40%);">+            rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_NETWORK_FAILURE));</span><br><span style="color: hsl(120, 100%, 40%);">+          break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_SYNCH_FAILURE:</span><br><span style="color: hsl(120, 100%, 40%);">+              rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_SYNCH_FAILURE));</span><br><span style="color: hsl(120, 100%, 40%);">+            break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_CONGESTION:</span><br><span style="color: hsl(120, 100%, 40%);">+         rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_CONGESTION));</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_SRV_OPT_NOT_SUPPORTED:</span><br><span style="color: hsl(120, 100%, 40%);">+              rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_SRV_OPT_NOT_SUPPORTED));</span><br><span style="color: hsl(120, 100%, 40%);">+            break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_RQD_SRV_OPT_NOT_SUPPORTED:</span><br><span style="color: hsl(120, 100%, 40%);">+          rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_RQD_SRV_OPT_NOT_SUPPORTED));</span><br><span style="color: hsl(120, 100%, 40%);">+                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_SRV_OPT_TMP_OUT_OF_ORDER:</span><br><span style="color: hsl(120, 100%, 40%);">+           rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_SRV_OPT_TMP_OUT_OF_ORDER));</span><br><span style="color: hsl(120, 100%, 40%);">+         break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_CALL_CAN_NOT_BE_IDENTIFIED:</span><br><span style="color: hsl(120, 100%, 40%);">+         rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_CALL_CAN_NOT_BE_IDENTIFIED));</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_INCORRECT_MESSAGE:</span><br><span style="color: hsl(120, 100%, 40%);">+          rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_INCORRECT_MESSAGE));</span><br><span style="color: hsl(120, 100%, 40%);">+                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_INVALID_MANDANTORY_INF:</span><br><span style="color: hsl(120, 100%, 40%);">+             rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_INVALID_MANDANTORY_INF));</span><br><span style="color: hsl(120, 100%, 40%);">+           break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_MSG_TYPE_NOT_IMPLEMENTED:</span><br><span style="color: hsl(120, 100%, 40%);">+           rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_IMPLEMENTED));</span><br><span style="color: hsl(120, 100%, 40%);">+         break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_MSG_TYPE_NOT_COMPATIBLE:</span><br><span style="color: hsl(120, 100%, 40%);">+            rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_COMPATIBLE));</span><br><span style="color: hsl(120, 100%, 40%);">+          break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_INF_ELEME_NOT_IMPLEMENTED:</span><br><span style="color: hsl(120, 100%, 40%);">+          rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_INF_ELEME_NOT_IMPLEMENTED));</span><br><span style="color: hsl(120, 100%, 40%);">+                break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_CONDTIONAL_IE_ERROR:</span><br><span style="color: hsl(120, 100%, 40%);">+                rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_CONDTIONAL_IE_ERROR));</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM48_REJECT_MSG_NOT_COMPATIBLE:</span><br><span style="color: hsl(120, 100%, 40%);">+         rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_MSG_NOT_COMPATIBLE));</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              if (cause >= 48 && cause <= 63) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_RETRY_IN_NEW_CELL));</span><br><span style="color: hsl(120, 100%, 40%);">+                        break;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             /* else fall thru */</span><br><span style="color: hsl(120, 100%, 40%);">+  case GSM48_REJECT_PROTOCOL_ERROR:</span><br><span style="color: hsl(120, 100%, 40%);">+             rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_CM_SERV_REJ_PROTOCOL_ERROR));</span><br><span style="color: hsl(120, 100%, 40%);">+           break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Send "DATA REQUEST" message with given L3 Info payload */</span><br><span> /* Chapter 8.3.1 */</span><br><span> int rsl_data_request(struct msgb *msg, uint8_t link_id)</span><br><span>@@ -1033,6 +1133,8 @@</span><br><span>           return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ count_unsucc_reqs_for_service(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        chan_nr = gsm_lchan2chan_nr(msg->lchan, true);</span><br><span>    if (chan_nr < 0) {</span><br><span>                msgb_free(msg);</span><br><span>diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c</span><br><span>index 83adcc4..d13f3b7 100644</span><br><span>--- a/src/osmo-bsc/bts.c</span><br><span>+++ b/src/osmo-bsc/bts.c</span><br><span>@@ -1249,6 +1249,81 @@</span><br><span>        [BTS_CTR_SRVCC_ERROR] = \</span><br><span>            { "srvcc:error",</span><br><span>             "Re-assignment failed for other reason" },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_CTR_CM_SERVICE_REJECT] =</span><br><span style="color: hsl(120, 100%, 40%);">+         { "cm_serv_rej", "MSC sent CM Service Reject" },</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_HLR] =</span><br><span style="color: hsl(120, 100%, 40%);">+           { "cm_serv_rej:imsi_unknown_in_hlr",</span><br><span style="color: hsl(120, 100%, 40%);">+                  "MSC sent CM Service Reject with cause IMSI_UNKNOWN_IN_HLR" },</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_CTR_CM_SERV_REJ_ILLEGAL_MS] =</span><br><span style="color: hsl(120, 100%, 40%);">+            { "cm_serv_rej:illegal_ms",</span><br><span style="color: hsl(120, 100%, 40%);">+           "MSC sent CM Service Reject with cause ILLEGAL_MS" },</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_CTR_CM_SERV_REJ_IMSI_UNKNOWN_IN_VLR] =</span><br><span style="color: hsl(120, 100%, 40%);">+           { "cm_serv_rej:imsi_unknown_in_vlr",</span><br><span style="color: hsl(120, 100%, 40%);">+                  "MSC sent CM Service Reject with cause IMSI_UNKNOWN_IN_VLR" },</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_CTR_CM_SERV_REJ_IMEI_NOT_ACCEPTED] =</span><br><span style="color: hsl(120, 100%, 40%);">+             { "cm_serv_rej:imei_not_accepted",</span><br><span style="color: hsl(120, 100%, 40%);">+            "MSC sent CM Service Reject with cause IMEI_NOT_ACCEPTED" },</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_CTR_CM_SERV_REJ_ILLEGAL_ME] =</span><br><span style="color: hsl(120, 100%, 40%);">+            { "cm_serv_rej:illegal_me",</span><br><span style="color: hsl(120, 100%, 40%);">+           "MSC sent CM Service Reject with cause ILLEGAL_ME" },</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_CTR_CM_SERV_REJ_PLMN_NOT_ALLOWED] =</span><br><span style="color: hsl(120, 100%, 40%);">+              { "cm_serv_rej:plmn_not_allowed",</span><br><span style="color: hsl(120, 100%, 40%);">+             "MSC sent CM Service Reject with cause PLMN_NOT_ALLOWED" },</span><br><span style="color: hsl(120, 100%, 40%);">+       [BTS_CTR_CM_SERV_REJ_LOC_NOT_ALLOWED] =</span><br><span style="color: hsl(120, 100%, 40%);">+               { "cm_serv_rej:loc_not_allowed",</span><br><span style="color: hsl(120, 100%, 40%);">+              "MSC sent CM Service Reject with cause LOC_NOT_ALLOWED" },</span><br><span style="color: hsl(120, 100%, 40%);">+        [BTS_CTR_CM_SERV_REJ_ROAMING_NOT_ALLOWED] =</span><br><span style="color: hsl(120, 100%, 40%);">+           { "cm_serv_rej:roaming_not_allowed",</span><br><span style="color: hsl(120, 100%, 40%);">+                  "MSC sent CM Service Reject with cause ROAMING_NOT_ALLOWED" },</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_CTR_CM_SERV_REJ_NETWORK_FAILURE] =</span><br><span style="color: hsl(120, 100%, 40%);">+               { "cm_serv_rej:network_failure",</span><br><span style="color: hsl(120, 100%, 40%);">+              "MSC sent CM Service Reject with cause NETWORK_FAILURE" },</span><br><span style="color: hsl(120, 100%, 40%);">+        [BTS_CTR_CM_SERV_REJ_SYNCH_FAILURE] =</span><br><span style="color: hsl(120, 100%, 40%);">+         { "cm_serv_rej:synch_failure",</span><br><span style="color: hsl(120, 100%, 40%);">+                "MSC sent CM Service Reject with cause SYNCH_FAILURE" },</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_CTR_CM_SERV_REJ_CONGESTION] =</span><br><span style="color: hsl(120, 100%, 40%);">+            { "cm_serv_rej:congestion",</span><br><span style="color: hsl(120, 100%, 40%);">+           "MSC sent CM Service Reject with cause CONGESTION" },</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_CTR_CM_SERV_REJ_SRV_OPT_NOT_SUPPORTED] =</span><br><span style="color: hsl(120, 100%, 40%);">+         { "cm_serv_rej:srv_opt_not_supported",</span><br><span style="color: hsl(120, 100%, 40%);">+                "MSC sent CM Service Reject with cause SRV_OPT_NOT_SUPPORTED" },</span><br><span style="color: hsl(120, 100%, 40%);">+  [BTS_CTR_CM_SERV_REJ_RQD_SRV_OPT_NOT_SUPPORTED] =</span><br><span style="color: hsl(120, 100%, 40%);">+             { "cm_serv_rej:rqd_srv_opt_not_supported",</span><br><span style="color: hsl(120, 100%, 40%);">+            "MSC sent CM Service Reject with cause RQD_SRV_OPT_NOT_SUPPORTED" },</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_CTR_CM_SERV_REJ_SRV_OPT_TMP_OUT_OF_ORDER] =</span><br><span style="color: hsl(120, 100%, 40%);">+              { "cm_serv_rej:srv_opt_tmp_out_of_order",</span><br><span style="color: hsl(120, 100%, 40%);">+             "MSC sent CM Service Reject with cause SRV_OPT_TMP_OUT_OF_ORDER" },</span><br><span style="color: hsl(120, 100%, 40%);">+       [BTS_CTR_CM_SERV_REJ_CALL_CAN_NOT_BE_IDENTIFIED] =</span><br><span style="color: hsl(120, 100%, 40%);">+            { "cm_serv_rej:call_can_not_be_identified",</span><br><span style="color: hsl(120, 100%, 40%);">+           "MSC sent CM Service Reject with cause CALL_CAN_NOT_BE_IDENTIFIED" },</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_CTR_CM_SERV_REJ_INCORRECT_MESSAGE] =</span><br><span style="color: hsl(120, 100%, 40%);">+             { "cm_serv_rej:incorrect_message",</span><br><span style="color: hsl(120, 100%, 40%);">+            "MSC sent CM Service Reject with cause INCORRECT_MESSAGE" },</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_CTR_CM_SERV_REJ_INVALID_MANDANTORY_INF] =</span><br><span style="color: hsl(120, 100%, 40%);">+                { "cm_serv_rej:invalid_mandantory_inf",</span><br><span style="color: hsl(120, 100%, 40%);">+               "MSC sent CM Service Reject with cause INVALID_MANDANTORY_INF" },</span><br><span style="color: hsl(120, 100%, 40%);">+ [BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_IMPLEMENTED] =</span><br><span style="color: hsl(120, 100%, 40%);">+              { "cm_serv_rej:msg_type_not_implemented",</span><br><span style="color: hsl(120, 100%, 40%);">+             "MSC sent CM Service Reject with cause MSG_TYPE_NOT_IMPLEMENTED" },</span><br><span style="color: hsl(120, 100%, 40%);">+       [BTS_CTR_CM_SERV_REJ_MSG_TYPE_NOT_COMPATIBLE] =</span><br><span style="color: hsl(120, 100%, 40%);">+               { "cm_serv_rej:msg_type_not_compatible",</span><br><span style="color: hsl(120, 100%, 40%);">+              "MSC sent CM Service Reject with cause MSG_TYPE_NOT_COMPATIBLE" },</span><br><span style="color: hsl(120, 100%, 40%);">+        [BTS_CTR_CM_SERV_REJ_INF_ELEME_NOT_IMPLEMENTED] =</span><br><span style="color: hsl(120, 100%, 40%);">+             { "cm_serv_rej:inf_eleme_not_implemented",</span><br><span style="color: hsl(120, 100%, 40%);">+            "MSC sent CM Service Reject with cause INF_ELEME_NOT_IMPLEMENTED" },</span><br><span style="color: hsl(120, 100%, 40%);">+      [BTS_CTR_CM_SERV_REJ_CONDTIONAL_IE_ERROR] =</span><br><span style="color: hsl(120, 100%, 40%);">+           { "cm_serv_rej:condtional_ie_error",</span><br><span style="color: hsl(120, 100%, 40%);">+                  "MSC sent CM Service Reject with cause CONDTIONAL_IE_ERROR" },</span><br><span style="color: hsl(120, 100%, 40%);">+    [BTS_CTR_CM_SERV_REJ_MSG_NOT_COMPATIBLE] =</span><br><span style="color: hsl(120, 100%, 40%);">+            { "cm_serv_rej:msg_not_compatible",</span><br><span style="color: hsl(120, 100%, 40%);">+           "MSC sent CM Service Reject with cause MSG_NOT_COMPATIBLE" },</span><br><span style="color: hsl(120, 100%, 40%);">+     [BTS_CTR_CM_SERV_REJ_PROTOCOL_ERROR] =</span><br><span style="color: hsl(120, 100%, 40%);">+                { "cm_serv_rej:protocol_error",</span><br><span style="color: hsl(120, 100%, 40%);">+               "MSC sent CM Service Reject with cause PROTOCOL_ERROR" },</span><br><span style="color: hsl(120, 100%, 40%);">+ [BTS_CTR_CM_SERV_REJ_RETRY_IN_NEW_CELL] =</span><br><span style="color: hsl(120, 100%, 40%);">+             { "cm_serv_rej:retry_in_new_cell",</span><br><span style="color: hsl(120, 100%, 40%);">+            "MSC sent CM Service Reject with cause 00110000..00111111, Retry upon entry in a new cell" },</span><br><span> };</span><br><span> </span><br><span> const struct rate_ctr_group_desc bts_ctrg_desc = {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/26142">change 26142</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/c/osmo-bsc/+/26142"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I79b1261e5a281d9797eaaf9c27d90edd8e27c78b </div>
<div style="display:none"> Gerrit-Change-Number: 26142 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>