<p>Vadim Yanitskiy <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/11916">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_04_11.c: refactor MT SMS message handling<br><br>According to GSM TS 04.11, the SMC (Short Message Control) state<br>machine is a part of CM-sublayer of L3, that is responsible for<br>connection management (establisment and releasing), and SM-RP<br>(Relay Protocol) message delivery.<br><br>For some reason, the connection establisment request from SMC<br>(GSM411_MMSMS_EST_REQ) was not handled properly - it was<br>always assumed that connection is already established.<br><br>This is why the code initiating a MT (Mobile Terminated) SMS<br>transfer had to establish a radio connection with subscriber<br>manually.<br><br>Let's benefit from having the SMC state machine, and offload<br>connection establishment to it. This change makes the local<br>implementation closer to GSM TS 04.11, and facilitates the<br>further integration of GSUP transport.<br><br>NOTE: the expected unit test output is changed, because now we<br>always allocate a transaction first, and then establish a<br>connection, not vice versa.<br><br>Change-Id: I4a07ece80d8dd40b23da6bb1ffc9d3d745b54092<br>---<br>M include/osmocom/msc/gsm_04_11.h<br>M src/libmsc/gsm_04_11.c<br>M src/libmsc/msc_vty.c<br>M src/libmsc/smpp_openbsc.c<br>M src/libmsc/sms_queue.c<br>M tests/msc_vlr/msc_vlr_test_gsm_authen.err<br>M tests/msc_vlr/msc_vlr_test_gsm_ciph.err<br>M tests/msc_vlr/msc_vlr_test_ms_timeout.err<br>M tests/msc_vlr/msc_vlr_test_no_authen.err<br>M tests/msc_vlr/msc_vlr_test_reject_concurrency.err<br>M tests/msc_vlr/msc_vlr_test_umts_authen.err<br>M tests/msc_vlr/msc_vlr_tests.c<br>12 files changed, 337 insertions(+), 291 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/gsm_04_11.h b/include/osmocom/msc/gsm_04_11.h</span><br><span>index 0b9639f..a368d46 100644</span><br><span>--- a/include/osmocom/msc/gsm_04_11.h</span><br><span>+++ b/include/osmocom/msc/gsm_04_11.h</span><br><span>@@ -27,6 +27,7 @@</span><br><span>   uint8_t *smsc;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+struct gsm_network;</span><br><span> struct msgb;</span><br><span> </span><br><span> int gsm0411_rcv_sms(struct gsm_subscriber_connection *conn, struct msgb *msg);</span><br><span>@@ -37,9 +38,8 @@</span><br><span>                            const char *sender_msisdn,</span><br><span>                           int dcs, const char *text);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int gsm411_send_sms_subscr(struct vlr_subscr *vsub,</span><br><span style="color: hsl(0, 100%, 40%);">-                           struct gsm_sms *sms);</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm411_send_sms(struct gsm_subscriber_connection *conn,</span><br><span style="color: hsl(120, 100%, 40%);">+int gsm411_send_sms(struct gsm_network *net,</span><br><span style="color: hsl(120, 100%, 40%);">+                 struct vlr_subscr *vsub,</span><br><span>                     struct gsm_sms *sms);</span><br><span> void gsm411_sapi_n_reject(struct gsm_subscriber_connection *conn);</span><br><span> </span><br><span>diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c</span><br><span>index 14f9f57..88dc433 100644</span><br><span>--- a/src/libmsc/gsm_04_11.c</span><br><span>+++ b/src/libmsc/gsm_04_11.c</span><br><span>@@ -127,6 +127,87 @@</span><br><span>      return msc_tx_dtap(conn, msg);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Paging callback for MT SMS (Paging is triggered by SMC) */</span><br><span style="color: hsl(120, 100%, 40%);">+static int paging_cb_mmsms_est_req(unsigned int hooknum, unsigned int event,</span><br><span style="color: hsl(120, 100%, 40%);">+                             struct msgb *msg, void *_conn, void *_trans)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    struct gsm_subscriber_connection *conn = _conn;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct gsm_trans *trans = _trans;</span><br><span style="color: hsl(120, 100%, 40%);">+     struct gsm_sms *sms = trans->sms.sms;</span><br><span style="color: hsl(120, 100%, 40%);">+      int rc = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ DEBUGP(DLSMS, "paging_cb_mmsms_est_req(hooknum=%u, event=%u, "</span><br><span style="color: hsl(120, 100%, 40%);">+              "conn=%p, trans=%p)\n", hooknum, event, conn, trans);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (hooknum != GSM_HOOK_RR_PAGING)</span><br><span style="color: hsl(120, 100%, 40%);">+            return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Paging procedure has finished */</span><br><span style="color: hsl(120, 100%, 40%);">+   trans->paging_request = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    switch (event) {</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PAGING_SUCCEEDED:</span><br><span style="color: hsl(120, 100%, 40%);">+            /* Associate transaction with established connection */</span><br><span style="color: hsl(120, 100%, 40%);">+               trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS);</span><br><span style="color: hsl(120, 100%, 40%);">+           /* FIXME: specify SACCH in case we already have active TCH */</span><br><span style="color: hsl(120, 100%, 40%);">+         trans->dlci = 0x03;</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Confirm successful connection establishment */</span><br><span style="color: hsl(120, 100%, 40%);">+             gsm411_smc_recv(&trans->sms.smc_inst,</span><br><span style="color: hsl(120, 100%, 40%);">+                  GSM411_MMSMS_EST_CNF, NULL, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case GSM_PAGING_EXPIRED:</span><br><span style="color: hsl(120, 100%, 40%);">+      case GSM_PAGING_BUSY:</span><br><span style="color: hsl(120, 100%, 40%);">+         /* Inform SMC about channel establishment failure */</span><br><span style="color: hsl(120, 100%, 40%);">+          gsm411_smc_recv(&trans->sms.smc_inst,</span><br><span style="color: hsl(120, 100%, 40%);">+                  GSM411_MMSMS_REL_IND, NULL, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Notify the SMSqueue and free stored SMS */</span><br><span style="color: hsl(120, 100%, 40%);">+         send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, event);</span><br><span style="color: hsl(120, 100%, 40%);">+           trans->sms.sms = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+             sms_free(sms);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              /* Destroy this transaction */</span><br><span style="color: hsl(120, 100%, 40%);">+                trans_free(trans);</span><br><span style="color: hsl(120, 100%, 40%);">+            rc = -ETIMEDOUT;</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%);">+              LOGP(DLSMS, LOGL_ERROR, "Unhandled paging event: %d\n", event);</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%);">+   return rc;</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%);">+static int gsm411_mmsms_est_req(struct gsm_trans *trans)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Subscriber's data shall be associated */</span><br><span style="color: hsl(120, 100%, 40%);">+       OSMO_ASSERT(trans->vsub != NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Check if connection is already established */</span><br><span style="color: hsl(120, 100%, 40%);">+      if (trans->conn != NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGP(DLSMS, LOGL_DEBUG, "Using an existing connection "</span><br><span style="color: hsl(120, 100%, 40%);">+                     "for %s\n", vlr_subscr_name(trans->vsub));</span><br><span style="color: hsl(120, 100%, 40%);">+               return gsm411_smc_recv(&trans->sms.smc_inst,</span><br><span style="color: hsl(120, 100%, 40%);">+                   GSM411_MMSMS_EST_CNF, NULL, 0);</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%);">+   /* Initiate Paging procedure */</span><br><span style="color: hsl(120, 100%, 40%);">+       LOGP(DLSMS, LOGL_DEBUG, "Initiating Paging procedure "</span><br><span style="color: hsl(120, 100%, 40%);">+              "for %s due to MMSMS_EST_REQ\n", vlr_subscr_name(trans->vsub));</span><br><span style="color: hsl(120, 100%, 40%);">+  trans->paging_request = subscr_request_conn(trans->vsub,</span><br><span style="color: hsl(120, 100%, 40%);">+                paging_cb_mmsms_est_req, trans, "MT SMS");</span><br><span style="color: hsl(120, 100%, 40%);">+  if (!trans->paging_request) {</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGP(DLSMS, LOGL_ERROR, "Failed to initiate Paging "</span><br><span style="color: hsl(120, 100%, 40%);">+                        "procedure for %s\n", vlr_subscr_name(trans->vsub));</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Inform SMC about channel establishment failure */</span><br><span style="color: hsl(120, 100%, 40%);">+          gsm411_smc_recv(&trans->sms.smc_inst,</span><br><span style="color: hsl(120, 100%, 40%);">+                  GSM411_MMSMS_REL_IND, NULL, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+               trans_free(trans);</span><br><span style="color: hsl(120, 100%, 40%);">+            return -EIO;</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%);">+   return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Prefix msg with a 04.08/04.11 CP header */</span><br><span> static int gsm411_cp_sendmsg(struct msgb *msg, struct gsm_trans *trans,</span><br><span>                        uint8_t msg_type)</span><br><span>@@ -154,8 +235,7 @@</span><br><span> </span><br><span>     switch (msg_type) {</span><br><span>  case GSM411_MMSMS_EST_REQ:</span><br><span style="color: hsl(0, 100%, 40%);">-              /* recycle msg */</span><br><span style="color: hsl(0, 100%, 40%);">-               rc = gsm411_smc_recv(inst, GSM411_MMSMS_EST_CNF, msg, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+             rc = gsm411_mmsms_est_req(trans);</span><br><span>            msgb_free(msg); /* upper layer does not free msg */</span><br><span>          break;</span><br><span>       case GSM411_MMSMS_DATA_REQ:</span><br><span>@@ -899,6 +979,120 @@</span><br><span>  return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static struct gsm_trans *gsm411_alloc_mt_trans(struct gsm_network *net,</span><br><span style="color: hsl(120, 100%, 40%);">+                                         struct vlr_subscr *vsub)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    struct gsm_subscriber_connection *conn;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct gsm_trans *trans;</span><br><span style="color: hsl(120, 100%, 40%);">+      int tid;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGP(DLSMS, LOGL_INFO, "Going to send a MT SMS\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Generate a new transaction ID */</span><br><span style="color: hsl(120, 100%, 40%);">+   tid = trans_assign_trans_id(net, vsub, GSM48_PDISC_SMS, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (tid == -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGP(DLSMS, LOGL_ERROR, "No available transaction IDs\n");</span><br><span style="color: hsl(120, 100%, 40%);">+          return NULL;</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%);">+   /* Allocate a new transaction */</span><br><span style="color: hsl(120, 100%, 40%);">+      trans = trans_alloc(net, vsub, GSM48_PDISC_SMS, tid, new_callref++);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (!trans) {</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGP(DLSMS, LOGL_ERROR, "No memory for trans\n");</span><br><span style="color: hsl(120, 100%, 40%);">+           return NULL;</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%);">+   /* Init both SMC and SMR state machines */</span><br><span style="color: hsl(120, 100%, 40%);">+    gsm411_smc_init(&trans->sms.smc_inst, 0, 1,</span><br><span style="color: hsl(120, 100%, 40%);">+            gsm411_mn_recv, gsm411_mm_send);</span><br><span style="color: hsl(120, 100%, 40%);">+      gsm411_smr_init(&trans->sms.smr_inst, 0, 1,</span><br><span style="color: hsl(120, 100%, 40%);">+            gsm411_rl_recv, gsm411_mn_send);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Attempt to find an existing connection */</span><br><span style="color: hsl(120, 100%, 40%);">+  conn = connection_for_subscr(vsub);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (conn) {</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Associate transaction with connection */</span><br><span style="color: hsl(120, 100%, 40%);">+           trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS);</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Generate unique RP Message Reference */</span><br><span style="color: hsl(120, 100%, 40%);">+            trans->sms.sm_rp_mr = conn->next_rp_ref++;</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%);">+   return trans;</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%);">+/* High-level function to send an SMS to a given subscriber */</span><br><span style="color: hsl(120, 100%, 40%);">+int gsm411_send_sms(struct gsm_network *net,</span><br><span style="color: hsl(120, 100%, 40%);">+                  struct vlr_subscr *vsub,</span><br><span style="color: hsl(120, 100%, 40%);">+              struct gsm_sms *sms)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   uint8_t *data, *rp_ud_len;</span><br><span style="color: hsl(120, 100%, 40%);">+    struct gsm_trans *trans;</span><br><span style="color: hsl(120, 100%, 40%);">+      struct msgb *msg;</span><br><span style="color: hsl(120, 100%, 40%);">+     int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Allocate a new transaction for MT SMS */</span><br><span style="color: hsl(120, 100%, 40%);">+   trans = gsm411_alloc_mt_trans(net, vsub);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!trans) {</span><br><span style="color: hsl(120, 100%, 40%);">+         send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+               sms_free(sms);</span><br><span style="color: hsl(120, 100%, 40%);">+                return -ENOMEM;</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%);">+   /* Allocate a message buffer for to be encoded SMS */</span><br><span style="color: hsl(120, 100%, 40%);">+ msg = gsm411_msgb_alloc();</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!msg) {</span><br><span style="color: hsl(120, 100%, 40%);">+           send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+               trans_free(trans);</span><br><span style="color: hsl(120, 100%, 40%);">+            sms_free(sms);</span><br><span style="color: hsl(120, 100%, 40%);">+                return -ENOMEM;</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%);">+   /* Hardcode SMSC Originating Address for now */</span><br><span style="color: hsl(120, 100%, 40%);">+       data = (uint8_t *)msgb_put(msg, 8);</span><br><span style="color: hsl(120, 100%, 40%);">+   data[0] = 0x07; /* originator length == 7 */</span><br><span style="color: hsl(120, 100%, 40%);">+  data[1] = 0x91; /* type of number: international, ISDN */</span><br><span style="color: hsl(120, 100%, 40%);">+     data[2] = 0x44; /* 447785016005 */</span><br><span style="color: hsl(120, 100%, 40%);">+    data[3] = 0x77;</span><br><span style="color: hsl(120, 100%, 40%);">+       data[4] = 0x58;</span><br><span style="color: hsl(120, 100%, 40%);">+       data[5] = 0x10;</span><br><span style="color: hsl(120, 100%, 40%);">+       data[6] = 0x06;</span><br><span style="color: hsl(120, 100%, 40%);">+       data[7] = 0x50;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Hardcoded Destination Address */</span><br><span style="color: hsl(120, 100%, 40%);">+   data = (uint8_t *)msgb_put(msg, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+   data[0] = 0;    /* destination length == 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* obtain a pointer for the rp_ud_len, so we can fill it later */</span><br><span style="color: hsl(120, 100%, 40%);">+     rp_ud_len = (uint8_t *)msgb_put(msg, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    if (sms->is_report) {</span><br><span style="color: hsl(120, 100%, 40%);">+              /* generate the 03.40 SMS-STATUS-REPORT TPDU */</span><br><span style="color: hsl(120, 100%, 40%);">+               rc = gsm340_gen_sms_status_report_tpdu(msg, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              /* generate the 03.40 SMS-DELIVER TPDU */</span><br><span style="color: hsl(120, 100%, 40%);">+             rc = gsm340_gen_sms_deliver_tpdu(msg, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              send_signal(S_SMS_UNKNOWN_ERROR, trans, sms, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+              sms_free(sms);</span><br><span style="color: hsl(120, 100%, 40%);">+                trans_free(trans);</span><br><span style="color: hsl(120, 100%, 40%);">+            msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+               return rc;</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%);">+   *rp_ud_len = rc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Store a pointer to abstract SMS representation */</span><br><span style="color: hsl(120, 100%, 40%);">+  trans->sms.sms = sms;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_SMS_DELIVERED]);</span><br><span style="color: hsl(120, 100%, 40%);">+   db_sms_inc_deliver_attempts(trans->sms.sms);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     return gsm411_rp_sendmsg(&trans->sms.smr_inst, msg,</span><br><span style="color: hsl(120, 100%, 40%);">+            GSM411_MT_RP_DATA_MT, trans->sms.sm_rp_mr,</span><br><span style="color: hsl(120, 100%, 40%);">+         GSM411_SM_RL_DATA_REQ);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Entry point for incoming GSM48_PDISC_SMS from abis_rsl.c */</span><br><span> int gsm0411_rcv_sms(struct gsm_subscriber_connection *conn,</span><br><span>                    struct msgb *msg)</span><br><span>@@ -985,159 +1179,6 @@</span><br><span>       return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Take a SMS in gsm_sms structure and send it through an already</span><br><span style="color: hsl(0, 100%, 40%);">- * existing conn. We also assume that the caller ensured this conn already</span><br><span style="color: hsl(0, 100%, 40%);">- * has a SAPI3 RLL connection! */</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm411_send_sms(struct gsm_subscriber_connection *conn, struct gsm_sms *sms)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-        struct msgb *msg = gsm411_msgb_alloc();</span><br><span style="color: hsl(0, 100%, 40%);">- struct gsm_trans *trans;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t *data, *rp_ud_len;</span><br><span style="color: hsl(0, 100%, 40%);">-      uint8_t msg_ref = conn->next_rp_ref++;</span><br><span style="color: hsl(0, 100%, 40%);">-       int transaction_id;</span><br><span style="color: hsl(0, 100%, 40%);">-     int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- transaction_id =</span><br><span style="color: hsl(0, 100%, 40%);">-                trans_assign_trans_id(conn->network, conn->vsub,</span><br><span style="color: hsl(0, 100%, 40%);">-                                GSM48_PDISC_SMS, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-      if (transaction_id == -1) {</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGP(DLSMS, LOGL_ERROR, "No available transaction ids\n");</span><br><span style="color: hsl(0, 100%, 40%);">-            send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-         sms_free(sms);</span><br><span style="color: hsl(0, 100%, 40%);">-          msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-         return -EBUSY;</span><br><span style="color: hsl(0, 100%, 40%);">-  }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       DEBUGP(DLSMS, "%s()\n", __func__);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    /* FIXME: allocate transaction with message reference */</span><br><span style="color: hsl(0, 100%, 40%);">-        trans = trans_alloc(conn->network, conn->vsub,</span><br><span style="color: hsl(0, 100%, 40%);">-                        GSM48_PDISC_SMS,</span><br><span style="color: hsl(0, 100%, 40%);">-                        transaction_id, new_callref++);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (!trans) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DLSMS, LOGL_ERROR, "No memory for trans\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-         sms_free(sms);</span><br><span style="color: hsl(0, 100%, 40%);">-          msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-         /* FIXME: send some error message */</span><br><span style="color: hsl(0, 100%, 40%);">-            return -ENOMEM;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-       gsm411_smc_init(&trans->sms.smc_inst, sms->id, 1,</span><br><span style="color: hsl(0, 100%, 40%);">-             gsm411_mn_recv, gsm411_mm_send);</span><br><span style="color: hsl(0, 100%, 40%);">-        gsm411_smr_init(&trans->sms.smr_inst, sms->id, 1,</span><br><span style="color: hsl(0, 100%, 40%);">-             gsm411_rl_recv, gsm411_mn_send);</span><br><span style="color: hsl(0, 100%, 40%);">-        trans->sms.sms = sms;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_SMS);</span><br><span style="color: hsl(0, 100%, 40%);">-     trans->dlci = 0x03;</span><br><span style="color: hsl(0, 100%, 40%);">-  /* FIXME: specify SACCH in case we already have active TCH */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   /* Hardcode SMSC Originating Address for now */</span><br><span style="color: hsl(0, 100%, 40%);">- data = (uint8_t *)msgb_put(msg, 8);</span><br><span style="color: hsl(0, 100%, 40%);">-     data[0] = 0x07; /* originator length == 7 */</span><br><span style="color: hsl(0, 100%, 40%);">-    data[1] = 0x91; /* type of number: international, ISDN */</span><br><span style="color: hsl(0, 100%, 40%);">-       data[2] = 0x44; /* 447785016005 */</span><br><span style="color: hsl(0, 100%, 40%);">-      data[3] = 0x77;</span><br><span style="color: hsl(0, 100%, 40%);">- data[4] = 0x58;</span><br><span style="color: hsl(0, 100%, 40%);">- data[5] = 0x10;</span><br><span style="color: hsl(0, 100%, 40%);">- data[6] = 0x06;</span><br><span style="color: hsl(0, 100%, 40%);">- data[7] = 0x50;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* Hardcoded Destination Address */</span><br><span style="color: hsl(0, 100%, 40%);">-     data = (uint8_t *)msgb_put(msg, 1);</span><br><span style="color: hsl(0, 100%, 40%);">-     data[0] = 0;    /* destination length == 0 */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   /* obtain a pointer for the rp_ud_len, so we can fill it later */</span><br><span style="color: hsl(0, 100%, 40%);">-       rp_ud_len = (uint8_t *)msgb_put(msg, 1);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        if (sms->is_report) {</span><br><span style="color: hsl(0, 100%, 40%);">-                /* generate the 03.40 SMS-STATUS-REPORT TPDU */</span><br><span style="color: hsl(0, 100%, 40%);">-         rc = gsm340_gen_sms_status_report_tpdu(msg, sms);</span><br><span style="color: hsl(0, 100%, 40%);">-       } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                /* generate the 03.40 SMS-DELIVER TPDU */</span><br><span style="color: hsl(0, 100%, 40%);">-               rc = gsm340_gen_sms_deliver_tpdu(msg, sms);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                send_signal(S_SMS_UNKNOWN_ERROR, trans, sms, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-                sms_free(sms);</span><br><span style="color: hsl(0, 100%, 40%);">-          trans->sms.sms = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-               trans_free(trans);</span><br><span style="color: hsl(0, 100%, 40%);">-              msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-         return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       *rp_ud_len = rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        DEBUGP(DLSMS, "TX: SMS DELIVER\n");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_DELIVERED]);</span><br><span style="color: hsl(0, 100%, 40%);">-        db_sms_inc_deliver_attempts(trans->sms.sms);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- return gsm411_rp_sendmsg(&trans->sms.smr_inst, msg,</span><br><span style="color: hsl(0, 100%, 40%);">-              GSM411_MT_RP_DATA_MT, msg_ref, GSM411_SM_RL_DATA_REQ);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* paging callback. Here we get called if paging a subscriber has</span><br><span style="color: hsl(0, 100%, 40%);">- * succeeded or failed. */</span><br><span style="color: hsl(0, 100%, 40%);">-static int paging_cb_send_sms(unsigned int hooknum, unsigned int event,</span><br><span style="color: hsl(0, 100%, 40%);">-                             struct msgb *msg, void *_conn, void *_sms)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       struct gsm_subscriber_connection *conn = _conn;</span><br><span style="color: hsl(0, 100%, 40%);">- struct gsm_sms *sms = _sms;</span><br><span style="color: hsl(0, 100%, 40%);">-     int rc = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     DEBUGP(DLSMS, "paging_cb_send_sms(hooknum=%u, event=%u, msg=%p,"</span><br><span style="color: hsl(0, 100%, 40%);">-              "conn=%p, sms=%p/id: %llu)\n", hooknum, event, msg, conn, sms, sms->id);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   if (hooknum != GSM_HOOK_RR_PAGING)</span><br><span style="color: hsl(0, 100%, 40%);">-              return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- switch (event) {</span><br><span style="color: hsl(0, 100%, 40%);">-        case GSM_PAGING_SUCCEEDED:</span><br><span style="color: hsl(0, 100%, 40%);">-              gsm411_send_sms(conn, sms);</span><br><span style="color: hsl(0, 100%, 40%);">-             break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case GSM_PAGING_EXPIRED:</span><br><span style="color: hsl(0, 100%, 40%);">-        case GSM_PAGING_BUSY:</span><br><span style="color: hsl(0, 100%, 40%);">-           send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, event);</span><br><span style="color: hsl(0, 100%, 40%);">-             sms_free(sms);</span><br><span style="color: hsl(0, 100%, 40%);">-          rc = -ETIMEDOUT;</span><br><span style="color: hsl(0, 100%, 40%);">-                break;</span><br><span style="color: hsl(0, 100%, 40%);">-  default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLSMS, LOGL_ERROR, "Unhandled paging event: %d\n", event);</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* high-level function to send a SMS to a given subscriber. The function</span><br><span style="color: hsl(0, 100%, 40%);">- * will take care of paging the subscriber, establishing the RLL SAPI3</span><br><span style="color: hsl(0, 100%, 40%);">- * connection, etc. */</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm411_send_sms_subscr(struct vlr_subscr *vsub,</span><br><span style="color: hsl(0, 100%, 40%);">-                         struct gsm_sms *sms)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-        struct gsm_subscriber_connection *conn;</span><br><span style="color: hsl(0, 100%, 40%);">- void *res;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      /* check if we already have an open conn to the subscriber.</span><br><span style="color: hsl(0, 100%, 40%);">-      * if yes, send the SMS this way */</span><br><span style="color: hsl(0, 100%, 40%);">-     conn = connection_for_subscr(vsub);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (conn) {</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGP(DLSMS, LOGL_DEBUG, "Sending SMS via already open connection %p to %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-              conn, vlr_subscr_name(vsub));</span><br><span style="color: hsl(0, 100%, 40%);">-              return gsm411_send_sms(conn, sms);</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       /* if not, we have to start paging */</span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DLSMS, LOGL_DEBUG, "Sending SMS: no connection open, start paging %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-      vlr_subscr_name(vsub));</span><br><span style="color: hsl(0, 100%, 40%);">-    res = subscr_request_conn(vsub, paging_cb_send_sms, sms, "send SMS");</span><br><span style="color: hsl(0, 100%, 40%);">- if (!res) {</span><br><span style="color: hsl(0, 100%, 40%);">-             send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, GSM_PAGING_BUSY);</span><br><span style="color: hsl(0, 100%, 40%);">-           sms_free(sms);</span><br><span style="color: hsl(0, 100%, 40%);">-  }</span><br><span style="color: hsl(0, 100%, 40%);">-       return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> void _gsm411_sms_trans_free(struct gsm_trans *trans)</span><br><span> {</span><br><span>      /* cleanup SMS instance */</span><br><span>diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c</span><br><span>index cdf3184..4f3ac04 100644</span><br><span>--- a/src/libmsc/msc_vty.c</span><br><span>+++ b/src/libmsc/msc_vty.c</span><br><span>@@ -680,7 +680,7 @@</span><br><span>                        break;</span><br><span> </span><br><span>           if (sms->receiver)</span><br><span style="color: hsl(0, 100%, 40%);">-                   gsm411_send_sms_subscr(sms->receiver, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+                        gsm411_send_sms(gsmnet, sms->receiver, sms);</span><br><span> </span><br><span>          sms_id = sms->id + 1;</span><br><span>     }</span><br><span>@@ -819,7 +819,7 @@</span><br><span> </span><br><span>  sms = db_sms_get_unsent_for_subscr(vsub, UINT_MAX);</span><br><span>  if (sms)</span><br><span style="color: hsl(0, 100%, 40%);">-                gsm411_send_sms_subscr(sms->receiver, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+                gsm411_send_sms(gsmnet, sms->receiver, sms);</span><br><span> </span><br><span>  vlr_subscr_put(vsub);</span><br><span> </span><br><span>diff --git a/src/libmsc/smpp_openbsc.c b/src/libmsc/smpp_openbsc.c</span><br><span>index c12db5f..051372c 100644</span><br><span>--- a/src/libmsc/smpp_openbsc.c</span><br><span>+++ b/src/libmsc/smpp_openbsc.c</span><br><span>@@ -268,7 +268,7 @@</span><br><span>             LOGP(DLSMS, LOGL_DEBUG, "SMPP SUBMIT-SM: Forwarding in "</span><br><span>                   "real time (Transaction/Forward mode)\n");</span><br><span>                 sms->smpp.transaction_mode = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-              gsm411_send_sms_subscr(sms->receiver, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+                gsm411_send_sms(net, sms->receiver, sms);</span><br><span>                 rc = 1; /* don't send any response yet */</span><br><span>                break;</span><br><span>       }</span><br><span>diff --git a/src/libmsc/sms_queue.c b/src/libmsc/sms_queue.c</span><br><span>index 252e529..9907f4f 100644</span><br><span>--- a/src/libmsc/sms_queue.c</span><br><span>+++ b/src/libmsc/sms_queue.c</span><br><span>@@ -186,7 +186,7 @@</span><br><span>                         sms_queue_trigger(smsq);</span><br><span>             } else {</span><br><span>                     pending->resend = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-                 gsm411_send_sms_subscr(sms->receiver, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+                        gsm411_send_sms(smsq->network, sms->receiver, sms);</span><br><span>            }</span><br><span>    }</span><br><span> }</span><br><span>@@ -311,7 +311,7 @@</span><br><span>                 attempted += 1;</span><br><span>              smsq->pending += 1;</span><br><span>               llist_add_tail(&pending->entry, &smsq->pending_sms);</span><br><span style="color: hsl(0, 100%, 40%);">-              gsm411_send_sms_subscr(sms->receiver, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+                gsm411_send_sms(smsq->network, sms->receiver, sms);</span><br><span>    } while (attempted < attempts && rounds < 1000);</span><br><span> </span><br><span>   LOGP(DLSMS, LOGL_DEBUG, "SMSqueue added %d messages in %d rounds\n", attempted, rounds);</span><br><span>@@ -349,7 +349,7 @@</span><br><span> </span><br><span>         smsq->pending += 1;</span><br><span>       llist_add_tail(&pending->entry, &smsq->pending_sms);</span><br><span style="color: hsl(0, 100%, 40%);">-      gsm411_send_sms_subscr(sms->receiver, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+        gsm411_send_sms(smsq->network, sms->receiver, sms);</span><br><span>    return;</span><br><span> </span><br><span> no_pending_sms:</span><br><span>@@ -398,7 +398,6 @@</span><br><span> {</span><br><span>    struct gsm_sms *sms;</span><br><span>         struct gsm_sms_pending *pending;</span><br><span style="color: hsl(0, 100%, 40%);">-        struct gsm_subscriber_connection *conn;</span><br><span> </span><br><span>  /*</span><br><span>    * The code used to be very clever and tried to submit</span><br><span>@@ -423,15 +422,12 @@</span><br><span>               return 0;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   conn = connection_for_subscr(vsub);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (!conn)</span><br><span style="color: hsl(0, 100%, 40%);">-              return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>   /* Now try to deliver any pending SMS to this sub */</span><br><span>         sms = db_sms_get_unsent_for_subscr(vsub, UINT_MAX);</span><br><span>  if (!sms)</span><br><span>            return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      gsm411_send_sms(conn, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ gsm411_send_sms(net, vsub, sms);</span><br><span>     return 0;</span><br><span> }</span><br><span> </span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err</span><br><span>index 51f7367..fc701b2 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err</span><br><span>@@ -275,18 +275,20 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000001) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span> - MS replies with Paging Response, and VLR sends Auth Request with third key</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -299,8 +301,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000004620)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -311,7 +313,7 @@</span><br><span> - sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...</span><br><span> - ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42</span><br><span> - ...expecting sres=a29514ae</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:46071: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -356,8 +358,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:46071 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:46071 callref 40000001) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span> DREF MSISDN:46071: MSC conn use + trans_sms == 2 (0x22: dtap,trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -762,18 +762,20 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000002) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 23</span><br><span>   paging_expecting_tmsi == 0x03020100</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span> - MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -786,8 +788,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:50462976)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -798,7 +800,7 @@</span><br><span> - sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...</span><br><span> - ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42</span><br><span> - ...expecting sres=a29514ae</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:46071: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -843,8 +845,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:46071 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:46071 callref 40000002) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span> DREF MSISDN:46071: MSC conn use + trans_sms == 2 (0x22: dtap,trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -1873,18 +1873,20 @@</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:42342 callref 40000003) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:42342 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000010650, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span> - MS replies with Paging Response, and VLR sends Auth Request with third key</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -1897,8 +1899,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000010650)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -1909,7 +1911,7 @@</span><br><span> - sending GSM Auth Request for MSISDN:42342: tuple use_count=1 key_seq=2 auth_types=0x3 and...</span><br><span> - ...rand=efa9c29a9742148d5c9070348716e1bb</span><br><span> - ...expecting sres=69d5f9fb</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:42342: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -1954,8 +1956,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:42342 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:42342 callref 40000003) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span> DREF MSISDN:42342: MSC conn use + trans_sms == 2 (0x22: dtap,trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err</span><br><span>index cc8659c..9cc6387 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err</span><br><span>@@ -303,18 +303,20 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000001) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span> - MS replies with Paging Response, and VLR sends Auth Request with third key</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -327,8 +329,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000004620)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -339,7 +341,7 @@</span><br><span> - sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...</span><br><span> - ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42</span><br><span> - ...expecting sres=a29514ae</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:46071: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -409,8 +411,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:46071 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:46071 callref 40000001) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span> DREF MSISDN:46071: MSC conn use + trans_sms == 1 (0x20: trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -843,18 +843,20 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000002) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 23</span><br><span>   paging_expecting_tmsi == 0x03020100</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span> - MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -867,8 +869,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:50462976)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -879,7 +881,7 @@</span><br><span> - sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...</span><br><span> - ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42</span><br><span> - ...expecting sres=a29514ae</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:46071: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -949,8 +951,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:46071 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:46071 callref 40000002) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span> DREF MSISDN:46071: MSC conn use + trans_sms == 1 (0x20: trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -2069,18 +2069,20 @@</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:42342 callref 40000003) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:42342 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000010650, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span> - MS replies with Paging Response, and VLR sends *UMTS AKA* Auth Request with third key</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -2093,8 +2095,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000010650)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth+Ciph</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -2106,7 +2108,7 @@</span><br><span> - ...rand=54d8f19778056666b41c8c25e52eb60c</span><br><span> - ...autn=53f3e5632b3d00008865dd54d49663f2</span><br><span> - ...expecting res=86e848a9e7ad8cd5</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:42342: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -2165,8 +2167,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:42342 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:42342 callref 40000003) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span> DREF MSISDN:42342: MSC conn use + trans_sms == 1 (0x20: trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -2559,18 +2559,20 @@</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:42342 callref 40000004) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:42342 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span> - MS replies with Paging Response, and VLR sends Auth Request with third key</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -2583,8 +2585,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000004620)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -2595,7 +2597,7 @@</span><br><span> - sending GSM Auth Request for MSISDN:42342: tuple use_count=1 key_seq=2 auth_types=0x1 and...</span><br><span> - ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42</span><br><span> - ...expecting sres=a29514ae</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:42342: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -2665,8 +2667,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:42342 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:42342 callref 40000004) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span> DREF MSISDN:42342: MSC conn use + trans_sms == 1 (0x20: trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -3059,18 +3059,20 @@</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:42342 callref 40000005) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:42342 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span> - MS replies with Paging Response, and VLR sends Auth Request with third key</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -3083,8 +3085,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000004620)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -3095,7 +3097,7 @@</span><br><span> - sending GSM Auth Request for MSISDN:42342: tuple use_count=1 key_seq=2 auth_types=0x1 and...</span><br><span> - ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42</span><br><span> - ...expecting sres=a29514ae</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:42342: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -3104,8 +3106,8 @@</span><br><span>   auth_request_sent == 1</span><br><span> ---</span><br><span> - Fake a situation where Classmark 2 is unknown during proc_arq_fsm</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 6</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 5</span><br><span> - MS sends Authen Response, VLR accepts and requests Ciphering</span><br><span> - MS sends Authen Response, VLR accepts and requests Ciphering. Normally, we'd know Classmark 3, but this test removed it. Hence a Classmark Request is generated.</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP</span><br><span>@@ -3156,8 +3158,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:42342 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:42342 callref 40000005) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span> DREF MSISDN:42342: MSC conn use + trans_sms == 1 (0x20: trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err</span><br><span>index d2b7ef3..4874f93 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err</span><br><span>@@ -471,32 +471,38 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000001) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - time passes and no paging result is received</span><br><span> - Total time passed: 9.000000 s</span><br><span> - the paging timeout has not yet expired</span><br><span>   paging_stopped == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   vsub->cs.is_paging == 1</span><br><span> - another request is added to the list but does not cause another paging</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 01 sub MSISDN:46071 callref 40000002) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 7</span><br><span> DMM Subscriber MSISDN:46071 already paged.</span><br><span>   llist_count(&vsub->cs.requests) == 2</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 6</span><br><span>   paging_sent == 0</span><br><span> - the paging timeout expires, the paging as well as the requests are canceled</span><br><span> - Total time passed: 11.000000 s</span><br><span> DPAG Paging failure for MSISDN:46071 (event=1)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span> DREF VLR subscr MSISDN:46071 usage decreases to: 2</span><br><span> DREF VLR subscr MSISDN:46071 usage decreases to: 1</span><br><span>   paging_stopped == 1</span><br><span>@@ -506,12 +512,14 @@</span><br><span> ---</span><br><span> - Now that the timeout has expired, another Paging is sent on request</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000003) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> ---</span><br><span>@@ -522,10 +530,11 @@</span><br><span> DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)</span><br><span> DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)</span><br><span> DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span> DMM IMSI DETACH for MSISDN:46071</span><br><span> DPAG Paging failure for MSISDN:46071 (event=1)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span> DREF VLR subscr MSISDN:46071 usage decreases to: 2</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err</span><br><span>index fb0582b..e8c2927 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_no_authen.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_no_authen.err</span><br><span>@@ -187,18 +187,20 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000001) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span> - MS replies with Paging Response, we deliver the SMS</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -211,8 +213,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000004620)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()</span><br><span>@@ -226,8 +228,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:46071 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:46071 callref 40000001) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DREF MSISDN:46071: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -546,18 +546,20 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000002) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 23</span><br><span>   paging_expecting_tmsi == 0x03020100</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span> - MS replies with Paging Response using TMSI, we deliver the SMS</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -570,8 +572,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:50462976)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()</span><br><span>@@ -585,8 +587,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:46071 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:46071 callref 40000002) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DREF MSISDN:46071: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err</span><br><span>index 0a964ac..cf90a1c 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err</span><br><span>@@ -1260,12 +1260,14 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000001) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - MS replies with Paging Response, we deliver the SMS</span><br><span>@@ -1280,8 +1282,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000004620)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()</span><br><span>@@ -1295,8 +1297,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:46071 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:46071 callref 40000001) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DREF MSISDN:46071: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -1487,12 +1487,14 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000002) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - MS replies with Paging Response, we deliver the SMS</span><br><span>@@ -1507,8 +1509,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000004620)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()</span><br><span>@@ -1522,8 +1524,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:46071 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:46071 callref 40000002) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DREF MSISDN:46071: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -1734,12 +1734,14 @@</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:46071 callref 40000003) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:46071 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - MS replies with Paging Response, we deliver the SMS</span><br><span>@@ -1754,8 +1756,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000004620)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:46071 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()</span><br><span>@@ -1769,8 +1771,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:46071 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:46071 callref 40000003) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:46071 usage increases to: 6</span><br><span> DREF MSISDN:46071: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err</span><br><span>index 538a3d9..fdd3b0c 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_umts_authen.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err</span><br><span>@@ -288,18 +288,20 @@</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:42342 callref 40000001) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:42342 not paged yet, start paging.</span><br><span>   RAN_GERAN_A sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span> - MS replies with Paging Response, and VLR sends Auth Request with third key</span><br><span>   MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -312,8 +314,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000010650)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -325,7 +327,7 @@</span><br><span> - ...rand=efa9c29a9742148d5c9070348716e1bb</span><br><span> - ...autn=f9375e6d41e1000096e7fe4ff1c27e39</span><br><span> - ...expecting res=706f996719ba609c</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:42342: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -370,8 +372,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:42342 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:42342 callref 40000001) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span> DREF MSISDN:42342: MSC conn use + trans_sms == 2 (0x22: dtap,trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A</span><br><span> - DTAP --RAN_GERAN_A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>@@ -778,18 +778,20 @@</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 2</span><br><span>   llist_count(&vsub->cs.requests) == 0</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DCC (ti 00 sub MSISDN:42342 callref 40000002) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DMM Subscriber MSISDN:42342 not paged yet, start paging.</span><br><span>   RAN_UTRAN_IU sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 23</span><br><span>   strcmp(paging_expecting_imsi, imsi) == 0</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span>   paging_sent == 1</span><br><span>   paging_stopped == 0</span><br><span> - the subscriber and its pending request should remain</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span>   llist_count(&vsub->cs.requests) == 1</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 3</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span> - MS replies with Paging Response, and VLR sends Auth Request with third key</span><br><span>   MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_RR_PAG_RESP</span><br><span>   new conn</span><br><span>@@ -802,8 +804,8 @@</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(PAGING_RESP:901700000010650)</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 4</span><br><span> DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage increases to: 6</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()</span><br><span> DVLR Process_Access_Request_VLR(PAGING_RESP:901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH</span><br><span> DVLR VLR_Authenticate(PAGING_RESP:901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated</span><br><span>@@ -815,7 +817,7 @@</span><br><span> - ...rand=efa9c29a9742148d5c9070348716e1bb</span><br><span> - ...autn=f9375e6d41e1000096e7fe4ff1c27e39</span><br><span> - ...expecting res=706f996719ba609c</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage decreases to: 4</span><br><span style="color: hsl(120, 100%, 40%);">+DREF VLR subscr MSISDN:42342 usage decreases to: 5</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_COMPLETE_LAYER_3</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_AUTH_CIPH</span><br><span> DREF MSISDN:42342: MSC conn use - compl_l3 == 0 (0x0: )</span><br><span>@@ -875,8 +877,6 @@</span><br><span> DMM Subscr_Conn(PAGING_RESP:901700000010650){SUBSCR_CONN_S_AUTH_CIPH}: Received Event SUBSCR_CONN_E_ACCEPTED</span><br><span> DPAG Paging success for MSISDN:42342 (event=0)</span><br><span> DPAG Calling paging cbfn.</span><br><span style="color: hsl(0, 100%, 40%);">-DCC (ti 00 sub MSISDN:42342 callref 40000002) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DREF VLR subscr MSISDN:42342 usage increases to: 5</span><br><span> DREF MSISDN:42342: MSC conn use + trans_sms == 1 (0x20: trans_sms)</span><br><span> DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_UTRAN_IU</span><br><span> - DTAP --RAN_UTRAN_IU--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c</span><br><span>index 6cf927c..01f5974 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_tests.c</span><br><span>+++ b/tests/msc_vlr/msc_vlr_tests.c</span><br><span>@@ -319,7 +319,7 @@</span><br><span>         char *str)</span><br><span> {</span><br><span>        struct gsm_sms *sms = sms_from_text(receiver, sender->msisdn, 0, str);</span><br><span style="color: hsl(0, 100%, 40%);">-       gsm411_send_sms_subscr(receiver, sms);</span><br><span style="color: hsl(120, 100%, 40%);">+        gsm411_send_sms(net, receiver, sms);</span><br><span> }</span><br><span> </span><br><span> unsigned char next_rand_byte = 0;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11916">change 11916</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/11916"/><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: I4a07ece80d8dd40b23da6bb1ffc9d3d745b54092 </div>
<div style="display:none"> Gerrit-Change-Number: 11916 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>