<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13319">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">a_iface_bssap: add context information to log output<br><br>At the moment many of the log statements in a_iface_bssap.c are just<br>LOGP statements without futrher context information. Since those<br>messages appear at a point where no related ran conn can be identified,<br>lets use the BSC as context information, so that the origin of those<br>messages can be traced back to at least one specific BSC.<br><br>Change-Id: I704954edc8677688fc7cccd2b23d2aff958ebf32<br>---<br>M src/libmsc/a_iface_bssap.c<br>M tests/msc_vlr/msc_vlr_test_gsm_ciph.c<br>M tests/msc_vlr/msc_vlr_test_gsm_ciph.err<br>3 files changed, 70 insertions(+), 42 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/19/13319/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c</span><br><span>index cb245b8..f57f449 100644</span><br><span>--- a/src/libmsc/a_iface_bssap.c</span><br><span>+++ b/src/libmsc/a_iface_bssap.c</span><br><span>@@ -43,10 +43,31 @@</span><br><span> </span><br><span> #define LOGPCONN LOG_RAN_CONN</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define LOGPBSC(ss, level, a_conn_info, fmt, args ...) \</span><br><span style="color: hsl(120, 100%, 40%);">+        LOGP(ss, level, "BSC(%s) " fmt, bsc_name_by_conn_info(a_conn_info), ## args)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*</span><br><span>  * Helper functions to lookup and allocate subscribers</span><br><span>  */</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Get a human readble string that describes the SCCP address of the BSC */</span><br><span style="color: hsl(120, 100%, 40%);">+static char *bsc_name_by_conn_info(const struct a_conn_info *a_conn_info)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gsm_network *network;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct osmo_ss7_instance *ss7;</span><br><span style="color: hsl(120, 100%, 40%);">+        char *bsc_name;</span><br><span style="color: hsl(120, 100%, 40%);">+       if (!a_conn_info)</span><br><span style="color: hsl(120, 100%, 40%);">+             return "INVALID CONN INFO!";</span><br><span style="color: hsl(120, 100%, 40%);">+        network = a_conn_info->network;</span><br><span style="color: hsl(120, 100%, 40%);">+    ss7 = osmo_ss7_instance_find(network->a.cs7_instance);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!ss7)</span><br><span style="color: hsl(120, 100%, 40%);">+             return "INVALID SS7 INSTANCE!";</span><br><span style="color: hsl(120, 100%, 40%);">+     bsc_name = osmo_sccp_addr_name(ss7, &a_conn_info->bsc->bsc_addr);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (!bsc_name)</span><br><span style="color: hsl(120, 100%, 40%);">+                return "INVALID BSC ADDRESS!";</span><br><span style="color: hsl(120, 100%, 40%);">+      return bsc_name;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Allocate a new RAN connection */</span><br><span> static struct ran_conn *ran_conn_allocate_a(const struct a_conn_info *a_conn_info,</span><br><span>                                                           struct gsm_network *network,</span><br><span>@@ -54,7 +75,7 @@</span><br><span> {</span><br><span>        struct ran_conn *conn;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      LOGP(DMSC, LOGL_DEBUG, "Allocating A-Interface RAN conn: lac %i, conn_id %i\n", lac, conn_id);</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGPBSC(DMSC, LOGL_DEBUG, a_conn_info, "Allocating A-Interface RAN conn: lac %i, conn_id %i\n", lac, conn_id);</span><br><span> </span><br><span>         conn = ran_conn_alloc(network, OSMO_RAT_GERAN_A, lac);</span><br><span>       if (!conn)</span><br><span>@@ -73,13 +94,15 @@</span><br><span> </span><br><span> /* Return an existing A RAN connection record for the given</span><br><span>  * connection IDs, or return NULL if not found. */</span><br><span style="color: hsl(0, 100%, 40%);">-static struct ran_conn *ran_conn_lookup_a(const struct gsm_network *network, int conn_id)</span><br><span style="color: hsl(120, 100%, 40%);">+static struct ran_conn *ran_conn_lookup_a(const struct a_conn_info *a_conn_info)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+     struct gsm_network *network = a_conn_info->network;</span><br><span style="color: hsl(120, 100%, 40%);">+        int conn_id = a_conn_info->conn_id;</span><br><span>       struct ran_conn *conn;</span><br><span> </span><br><span>   OSMO_ASSERT(network);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       DEBUGP(DMSC, "Looking for A subscriber: conn_id %i\n", conn_id);</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGPBSC(DMSC, LOGL_DEBUG, a_conn_info, "Looking for A subscriber: conn_id %i\n", conn_id);</span><br><span> </span><br><span>     /* FIXME: log_subscribers() is defined in iucs.c as static inline, if</span><br><span>         * maybe this function should be public to reach it from here? */</span><br><span>@@ -91,7 +114,7 @@</span><br><span>                       return conn;</span><br><span>                 }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       DEBUGP(DMSC, "No A subscriber found for conn_id %i\n", conn_id);</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGPBSC(DMSC, LOGL_DEBUG, a_conn_info, "No A subscriber found for conn_id %i\n", conn_id);</span><br><span>         return NULL;</span><br><span> }</span><br><span> </span><br><span>@@ -108,8 +131,8 @@</span><br><span>  ss7 = osmo_ss7_instance_find(network->a.cs7_instance);</span><br><span>    OSMO_ASSERT(ss7);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DBSSAP, LOGL_NOTICE, "Rx BSSMAP RESET from BSC %s, sending RESET ACK\n",</span><br><span style="color: hsl(0, 100%, 40%);">-      osmo_sccp_addr_name(ss7, &a_conn_info->bsc->bsc_addr));</span><br><span style="color: hsl(120, 100%, 40%);">+        LOGPBSC(DBSSAP, LOGL_NOTICE, a_conn_info, "Rx BSSMAP RESET from BSC %s, sending RESET ACK\n",</span><br><span style="color: hsl(120, 100%, 40%);">+               osmo_sccp_addr_name(ss7, &a_conn_info->bsc->bsc_addr));</span><br><span>    osmo_sccp_tx_unitdata_msg(scu, &a_conn_info->bsc->msc_addr, &a_conn_info->bsc->bsc_addr,</span><br><span>                                   gsm0808_create_reset_ack());</span><br><span> </span><br><span>@@ -136,12 +159,12 @@</span><br><span>   OSMO_ASSERT(ss7);</span><br><span> </span><br><span>        if (a_conn_info->bsc->reset_fsm == NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DBSSAP, LOGL_ERROR, "Received RESET ACK from an unknown BSC %s, ignoring...\n",</span><br><span style="color: hsl(0, 100%, 40%);">-               osmo_sccp_addr_name(ss7, &a_conn_info->bsc->bsc_addr));</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info, "Received RESET ACK from an unknown BSC %s, ignoring...\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                        osmo_sccp_addr_name(ss7, &a_conn_info->bsc->bsc_addr));</span><br><span>            return;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DBSSAP, LOGL_NOTICE, "Received RESET ACK from BSC %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+       LOGPBSC(DBSSAP, LOGL_NOTICE, a_conn_info, "Received RESET ACK from BSC %s\n",</span><br><span>              osmo_sccp_addr_name(ss7, &a_conn_info->bsc->bsc_addr));</span><br><span> </span><br><span>        /* Confirm that we managed to get the reset ack message</span><br><span>@@ -156,11 +179,11 @@</span><br><span>       * can be received via UNITDATA */</span><br><span> </span><br><span>       if (msgb_l3len(msg) < 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DBSSAP, LOGL_NOTICE, "Error: No data received -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGPBSC(DBSSAP, LOGL_NOTICE, a_conn_info, "Error: No data received -- discarding message!\n");</span><br><span>             return;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DBSSAP, LOGL_DEBUG, "Rx BSSMAP UDT %s\n", gsm0808_bssmap_name(msg->l3h[0]));</span><br><span style="color: hsl(120, 100%, 40%);">+        LOGPBSC(DBSSAP, LOGL_DEBUG, a_conn_info, "Rx BSSMAP UDT %s\n", gsm0808_bssmap_name(msg->l3h[0]));</span><br><span> </span><br><span>   switch (msg->l3h[0]) {</span><br><span>    case BSS_MAP_MSG_RESET:</span><br><span>@@ -170,7 +193,7 @@</span><br><span>                bssmap_rx_reset_ack(scu, a_conn_info, msg);</span><br><span>          break;</span><br><span>       default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DBSSAP, LOGL_NOTICE, "Unimplemented message format: %s -- message discarded!\n",</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGPBSC(DBSSAP, LOGL_NOTICE, a_conn_info, "Unimplemented message format: %s -- message discarded!\n",</span><br><span>                   gsm0808_bssmap_name(msg->l3h[0]));</span><br><span>   }</span><br><span> }</span><br><span>@@ -186,16 +209,16 @@</span><br><span>       OSMO_ASSERT(a_conn_info);</span><br><span>    OSMO_ASSERT(msg);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DBSSAP, LOGL_DEBUG, "Rx BSSMAP UDT: %s\n", msgb_hexdump_l2(msg));</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGPBSC(DBSSAP, LOGL_DEBUG, a_conn_info, "Rx BSSMAP UDT: %s\n", msgb_hexdump_l2(msg));</span><br><span> </span><br><span>         if (msgb_l2len(msg) < sizeof(*bs)) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DBSSAP, LOGL_ERROR, "Error: Header is too short -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info, "Error: Header is too short -- discarding message!\n");</span><br><span>           return;</span><br><span>      }</span><br><span> </span><br><span>        bs = (struct bssmap_header *)msgb_l2(msg);</span><br><span>   if (bs->length < msgb_l2len(msg) - sizeof(*bs)) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DBSSAP, LOGL_ERROR, "Error: Message is too short -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info, "Error: Message is too short -- discarding message!\n");</span><br><span>          return;</span><br><span>      }</span><br><span> </span><br><span>@@ -205,7 +228,7 @@</span><br><span>          bssmap_rcvmsg_udt(scu, a_conn_info, msg);</span><br><span>            break;</span><br><span>       default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DBSSAP, LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info,</span><br><span>                  "Error: Unimplemented message type: %s -- message discarded!\n", gsm0808_bssmap_name(bs->type));</span><br><span>   }</span><br><span> }</span><br><span>@@ -223,7 +246,7 @@</span><br><span>         LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP CLEAR REQUEST\n");</span><br><span> </span><br><span>        if (!TLVP_PRESENT(tp, GSM0808_IE_CAUSE)) {</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DBSSAP, LOGL_ERROR, "Cause code is missing -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGPCONN(conn, LOGL_ERROR, "Cause code is missing -- discarding message!\n");</span><br><span>              return -EINVAL;</span><br><span>      }</span><br><span>    cause = TLVP_VAL(tp, GSM0808_IE_CAUSE)[0];</span><br><span>@@ -265,14 +288,16 @@</span><br><span>   struct gsm_network *network = a_conn_info->network;</span><br><span>       struct ran_conn *conn;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      LOGP(DBSSAP, LOGL_INFO, "Rx BSSMAP COMPLETE L3 INFO (conn_id=%i)\n", a_conn_info->conn_id);</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGPBSC(DBSSAP, LOGL_INFO, a_conn_info, "Rx BSSMAP COMPLETE L3 INFO (conn_id=%i)\n", a_conn_info->conn_id);</span><br><span> </span><br><span>         if (!TLVP_PRESENT(tp, GSM0808_IE_CELL_IDENTIFIER)) {</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DBSSAP, LOGL_ERROR, "Mandatory CELL IDENTIFIER not present -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info,</span><br><span style="color: hsl(120, 100%, 40%);">+                      "Mandatory CELL IDENTIFIER not present -- discarding message!\n");</span><br><span>                 return -EINVAL;</span><br><span>      }</span><br><span>    if (!TLVP_PRESENT(tp, GSM0808_IE_LAYER_3_INFORMATION)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DBSSAP, LOGL_ERROR, "Mandatory LAYER 3 INFORMATION not present -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+             LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info,</span><br><span style="color: hsl(120, 100%, 40%);">+                      "Mandatory LAYER 3 INFORMATION not present -- discarding message!\n");</span><br><span>             return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span>@@ -281,8 +306,8 @@</span><br><span>  data_length = TLVP_LEN(tp, GSM0808_IE_CELL_IDENTIFIER);</span><br><span>      data = TLVP_VAL(tp, GSM0808_IE_CELL_IDENTIFIER);</span><br><span>     if (gsm0808_dec_cell_id_list2(&cil, data, data_length) < 0 || cil.id_list_len != 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DBSSAP, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                     "Unable to parse element CELL IDENTIFIER -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info,</span><br><span style="color: hsl(120, 100%, 40%);">+                      "Unable to parse element CELL IDENTIFIER -- discarding message!\n");</span><br><span>               return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span>@@ -291,8 +316,8 @@</span><br><span>  case CELL_IDENT_WHOLE_GLOBAL: {</span><br><span>              const struct osmo_cell_global_id *id = &cil.id_list[0].global;</span><br><span>           if (osmo_plmn_cmp(&id->lai.plmn, &network->plmn) != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                  LOGP(DBSSAP, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                             "WHOLE GLOBAL CELL IDENTIFIER does not match network MCC/MNC -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                       LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info,</span><br><span style="color: hsl(120, 100%, 40%);">+                              "WHOLE GLOBAL CELL IDENTIFIER does not match network MCC/MNC -- discarding message!\n");</span><br><span>                   return -EINVAL;</span><br><span>              }</span><br><span>            lac = id->lai.lac;</span><br><span>@@ -306,8 +331,8 @@</span><br><span>  case CELL_IDENT_LAI_AND_LAC: {</span><br><span>               const struct osmo_location_area_id *id = &cil.id_list[0].lai_and_lac;</span><br><span>            if (osmo_plmn_cmp(&id->plmn, &network->plmn) != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                      LOGP(DBSSAP, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                             "LAI AND LAC CELL IDENTIFIER does not match network MCC/MNC -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info,</span><br><span style="color: hsl(120, 100%, 40%);">+                              "LAI AND LAC CELL IDENTIFIER does not match network MCC/MNC -- discarding message!\n");</span><br><span>                    return -EINVAL;</span><br><span>              }</span><br><span>            lac = id->lac;</span><br><span>@@ -320,14 +345,14 @@</span><br><span>    case CELL_IDENT_CI:</span><br><span>  case CELL_IDENT_NO_CELL:</span><br><span>     case CELL_IDENT_BSS:</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DBSSAP, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                     "CELL IDENTIFIER does not specify a LAC -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info,</span><br><span style="color: hsl(120, 100%, 40%);">+                      "CELL IDENTIFIER does not specify a LAC -- discarding message!\n");</span><br><span>                return -EINVAL;</span><br><span> </span><br><span>  default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DBSSAP, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                     "Unable to parse element CELL IDENTIFIER (unknown cell identification discriminator 0x%x) "</span><br><span style="color: hsl(0, 100%, 40%);">-                   "-- discarding message!\n", cil.id_discr);</span><br><span style="color: hsl(120, 100%, 40%);">+             LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info,</span><br><span style="color: hsl(120, 100%, 40%);">+                      "Unable to parse element CELL IDENTIFIER (unknown cell identification discriminator 0x%x) "</span><br><span style="color: hsl(120, 100%, 40%);">+                 "-- discarding message!\n", cil.id_discr);</span><br><span>                 return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span>@@ -336,7 +361,7 @@</span><br><span>  msgb_l3trim(msg, TLVP_LEN(tp, GSM0808_IE_LAYER_3_INFORMATION));</span><br><span> </span><br><span>  if (msgb_l3len(msg) < sizeof(struct gsm48_hdr)) {</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DBSSAP, LOGL_ERROR, "COMPL_L3 with too short L3 (%d) -- discarding\n",</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info, "COMPL_L3 with too short L3 (%d) -- discarding\n",</span><br><span>                     msgb_l3len(msg));</span><br><span>               return -ENODATA;</span><br><span>     }</span><br><span>@@ -617,14 +642,14 @@</span><br><span>    uint8_t msg_type;</span><br><span> </span><br><span>        if (msgb_l3len(msg) < 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DBSSAP, LOGL_NOTICE, "Error: No data received -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGPBSC(DBSSAP, LOGL_NOTICE, a_conn_info, "Error: No data received -- discarding message!\n");</span><br><span>             return -1;</span><br><span>   }</span><br><span>    msg_type = msg->l3h[0];</span><br><span> </span><br><span>       rc = osmo_bssap_tlv_parse(&tp, msg->l3h + 1, msgb_l3len(msg) - 1);</span><br><span>    if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DBSSAP, LOGL_ERROR, "Failed parsing TLV -- discarding message! %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info, "Failed parsing TLV -- discarding message! %s\n",</span><br><span>                         osmo_hexdump(msg->l3h, msgb_l3len(msg)));</span><br><span>                 return -EINVAL;</span><br><span>      }</span><br><span>@@ -637,7 +662,7 @@</span><br><span>              break;</span><br><span>       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   conn = ran_conn_lookup_a(a_conn_info->network, a_conn_info->conn_id);</span><br><span style="color: hsl(120, 100%, 40%);">+   conn = ran_conn_lookup_a(a_conn_info);</span><br><span>       if (!conn) {</span><br><span>                 LOGP(DBSSAP, LOGL_ERROR, "Couldn't find ran_conn for conn_id=%d\n", a_conn_info->conn_id);</span><br><span>          /* We expect a Clear Complete to come in on a valid conn. But if for some reason we still</span><br><span>@@ -682,11 +707,10 @@</span><br><span> /* Endpoint to handle regular BSSAP DTAP messages. No ownership of 'msg' is passed on! */</span><br><span> static int rx_dtap(const struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct gsm_network *network = a_conn_info->network;</span><br><span>       struct ran_conn *conn;</span><br><span>       struct dtap_header *dtap = (struct dtap_header *) msg->l2h;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      conn = ran_conn_lookup_a(network, a_conn_info->conn_id);</span><br><span style="color: hsl(120, 100%, 40%);">+   conn = ran_conn_lookup_a(a_conn_info);</span><br><span>       if (!conn) {</span><br><span>                 return -EINVAL;</span><br><span>      }</span><br><span>@@ -711,7 +735,7 @@</span><br><span>      OSMO_ASSERT(msg);</span><br><span> </span><br><span>        if (msgb_l2len(msg) < sizeof(struct bssmap_header)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DBSSAP, LOGL_NOTICE, "The header is too short -- discarding message!\n");</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGPBSC(DBSSAP, LOGL_NOTICE, a_conn_info, "The header is too short -- discarding message!\n");</span><br><span>             return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span>@@ -722,7 +746,7 @@</span><br><span>  case BSSAP_MSG_DTAP:</span><br><span>                 return rx_dtap(scu, a_conn_info, msg);</span><br><span>       default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DBSSAP, LOGL_ERROR, "Unimplemented BSSAP msg type: %s\n", gsm0808_bssap_name(msg->l2h[0]));</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGPBSC(DBSSAP, LOGL_ERROR, a_conn_info, "Unimplemented BSSAP msg type: %s\n", gsm0808_bssap_name(msg->l2h[0]));</span><br><span>                return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c</span><br><span>index 19092e2..3ed22ee 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c</span><br><span>@@ -1073,6 +1073,8 @@</span><br><span> </span><br><span>   comment_start();</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_ss7_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   /* implicit: net->authentication_required = true; */</span><br><span>      net->a5_encryption_mask = (1 << 3); /* A5/3 */</span><br><span> </span><br><span>@@ -1292,6 +1294,8 @@</span><br><span> </span><br><span>      comment_start();</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_ss7_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   /* A5/3 support is indicated in Classmark 3. By configuring A5/3, trigger the code paths that</span><br><span>         * send a Classmark Request. */</span><br><span>      net->a5_encryption_mask = (1 << 3); /* A5/3 */</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 ef77391..16300de 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>@@ -2461,7 +2461,7 @@</span><br><span> DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED</span><br><span>   lu_result_sent == 0</span><br><span> - BSC sends back a BSSMAP Classmark Update, that triggers the Ciphering Mode Command in A5/3</span><br><span style="color: hsl(0, 100%, 40%);">-DMSC Looking for A subscriber: conn_id 0</span><br><span style="color: hsl(120, 100%, 40%);">+DMSC BSC(INVALID SS7 INSTANCE!) Looking for A subscriber: conn_id 0</span><br><span> DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Found A subscriber for conn_id 0</span><br><span> DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP DT1 CLASSMARK UPDATE</span><br><span> DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP CLASSMARK UPDATE</span><br><span>@@ -2997,7 +2997,7 @@</span><br><span> DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED</span><br><span>   lu_result_sent == 0</span><br><span> - BSC sends back a BSSMAP Classmark Update, that triggers the Ciphering Mode Command in A5/3</span><br><span style="color: hsl(0, 100%, 40%);">-DMSC Looking for A subscriber: conn_id 0</span><br><span style="color: hsl(120, 100%, 40%);">+DMSC BSC(INVALID SS7 INSTANCE!) Looking for A subscriber: conn_id 0</span><br><span> DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Found A subscriber for conn_id 0</span><br><span> DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP DT1 CLASSMARK UPDATE</span><br><span> DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP CLASSMARK UPDATE</span><br><span>@@ -3305,7 +3305,7 @@</span><br><span> DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_UNUSED</span><br><span> DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED</span><br><span> - BSC sends back a BSSMAP Classmark Update, that triggers the Ciphering Mode Command in A5/3</span><br><span style="color: hsl(0, 100%, 40%);">-DMSC Looking for A subscriber: conn_id 0</span><br><span style="color: hsl(120, 100%, 40%);">+DMSC BSC(INVALID SS7 INSTANCE!) Looking for A subscriber: conn_id 0</span><br><span> DBSSAP RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Found A subscriber for conn_id 0</span><br><span> DBSSAP RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP DT1 CLASSMARK UPDATE</span><br><span> DBSSAP RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP CLASSMARK UPDATE</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13319">change 13319</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/13319"/><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: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I704954edc8677688fc7cccd2b23d2aff958ebf32 </div>
<div style="display:none"> Gerrit-Change-Number: 13319 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>