<p>fixeria <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-msc/+/14467">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">libmsc/msc_net_init.c: pass pointer to gsm_network directly<br><br>Change-Id: I122d2880b356997c60df5f0cf4f5ecb3abb2e672<br>---<br>M src/libmsc/gsm_04_11_gsup.c<br>M src/libmsc/gsm_09_11.c<br>M src/libmsc/msc_net_init.c<br>3 files changed, 12 insertions(+), 31 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libmsc/gsm_04_11_gsup.c b/src/libmsc/gsm_04_11_gsup.c</span><br><span>index b4d74c7..331092a 100644</span><br><span>--- a/src/libmsc/gsm_04_11_gsup.c</span><br><span>+++ b/src/libmsc/gsm_04_11_gsup.c</span><br><span>@@ -117,19 +117,13 @@</span><br><span> }</span><br><span> </span><br><span> /* Triggers either RP-ACK or RP-ERROR on response from SMSC */</span><br><span style="color: hsl(0, 100%, 40%);">-static int gsm411_gsup_mo_handler(struct vlr_subscr *vsub,</span><br><span style="color: hsl(0, 100%, 40%);">-       const struct osmo_gsup_message *gsup_msg)</span><br><span style="color: hsl(120, 100%, 40%);">+static int gsm411_gsup_mo_handler(struct gsm_network *net, struct vlr_subscr *vsub,</span><br><span style="color: hsl(120, 100%, 40%);">+                                  const struct osmo_gsup_message *gsup_msg)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        struct vlr_instance *vlr;</span><br><span style="color: hsl(0, 100%, 40%);">-       struct gsm_network *net;</span><br><span>     struct gsm_trans *trans;</span><br><span>     const char *msg_name;</span><br><span>        bool msg_is_err;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Obtain required pointers */</span><br><span style="color: hsl(0, 100%, 40%);">-  vlr = vsub->vlr;</span><br><span style="color: hsl(0, 100%, 40%);">-     net = (struct gsm_network *) vlr->user_ctx;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>       /* Associate logging messages with this subscriber */</span><br><span>        log_set_context(LOG_CTX_VLR_SUBSCR, vsub);</span><br><span> </span><br><span>@@ -230,16 +224,12 @@</span><br><span> }</span><br><span> </span><br><span> /* Handles MT SMS (and triggers Paging Request if required) */</span><br><span style="color: hsl(0, 100%, 40%);">-static int gsm411_gsup_mt_handler(struct vlr_subscr *vsub,</span><br><span style="color: hsl(0, 100%, 40%);">-     const struct osmo_gsup_message *gsup_msg)</span><br><span style="color: hsl(120, 100%, 40%);">+static int gsm411_gsup_mt_handler(struct gsm_network *net, struct vlr_subscr *vsub,</span><br><span style="color: hsl(120, 100%, 40%);">+                                  const struct osmo_gsup_message *gsup_msg)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        struct gsm_network *net;</span><br><span>     bool sm_rp_mmts_ind;</span><br><span>         int rc;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     /* Obtain required pointers */</span><br><span style="color: hsl(0, 100%, 40%);">-  net = (struct gsm_network *) vsub->vlr->user_ctx;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      /* Associate logging messages with this subscriber */</span><br><span>        log_set_context(LOG_CTX_VLR_SUBSCR, vsub);</span><br><span> </span><br><span>@@ -296,8 +286,8 @@</span><br><span> </span><br><span> int gsm411_gsup_rx(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup_msg)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  struct vlr_instance *vlr = data;</span><br><span style="color: hsl(0, 100%, 40%);">-        struct vlr_subscr *vsub = vlr_subscr_find_by_imsi(vlr, gsup_msg->imsi, __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+  struct gsm_network *net = (struct gsm_network *) data;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct vlr_subscr *vsub = vlr_subscr_find_by_imsi(net->vlr, gsup_msg->imsi, __func__);</span><br><span> </span><br><span>     if (!vsub) {</span><br><span>                 LOGP(DLSMS, LOGL_ERROR, "Rx %s for unknown subscriber, rejecting\n",</span><br><span>@@ -313,12 +303,12 @@</span><br><span>       case OSMO_GSUP_MSGT_READY_FOR_SM_ERROR:</span><br><span>      case OSMO_GSUP_MSGT_READY_FOR_SM_RESULT:</span><br><span>             DEBUGP(DMSC, "Routed to GSM 04.11 MO handler\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             return gsm411_gsup_mo_handler(vsub, gsup_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+                return gsm411_gsup_mo_handler(net, vsub, gsup_msg);</span><br><span> </span><br><span>      /* GSM 04.11 code implementing MT SMS */</span><br><span>     case OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST:</span><br><span>           DEBUGP(DMSC, "Routed to GSM 04.11 MT handler\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             return gsm411_gsup_mt_handler(vsub, gsup_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+                return gsm411_gsup_mt_handler(net, vsub, gsup_msg);</span><br><span> </span><br><span>      default:</span><br><span>             LOGP(DMM, LOGL_ERROR, "No handler found for %s, dropping message...\n",</span><br><span>diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c</span><br><span>index f85c3f6..51cb2fb 100644</span><br><span>--- a/src/libmsc/gsm_09_11.c</span><br><span>+++ b/src/libmsc/gsm_09_11.c</span><br><span>@@ -402,14 +402,13 @@</span><br><span> </span><br><span> int gsm0911_gsup_rx(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup_msg)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       struct vlr_instance *vlr = data;</span><br><span style="color: hsl(0, 100%, 40%);">-        struct gsm_network *net;</span><br><span style="color: hsl(120, 100%, 40%);">+      struct gsm_network *net = (struct gsm_network *) data;</span><br><span>       struct gsm_trans *trans;</span><br><span>     struct gsm48_hdr *gh;</span><br><span>        struct msgb *ss_msg;</span><br><span>         bool trans_end;</span><br><span>      struct msc_a *msc_a;</span><br><span style="color: hsl(0, 100%, 40%);">-    struct vlr_subscr *vsub = vlr_subscr_find_by_imsi(vlr, gsup_msg->imsi, __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+  struct vlr_subscr *vsub = vlr_subscr_find_by_imsi(net->vlr, gsup_msg->imsi, __func__);</span><br><span> </span><br><span>     if (!vsub) {</span><br><span>                 LOGP(DSS, LOGL_ERROR, "Rx %s for unknown subscriber, rejecting\n",</span><br><span>@@ -421,14 +420,6 @@</span><br><span>  /* Associate logging messages with this subscriber */</span><br><span>        log_set_context(LOG_CTX_VLR_SUBSCR, vsub);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  /* Obtain pointer to vlr_instance */</span><br><span style="color: hsl(0, 100%, 40%);">-    vlr = vsub->vlr;</span><br><span style="color: hsl(0, 100%, 40%);">-     OSMO_ASSERT(vlr);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       /* Obtain pointer to gsm_network */</span><br><span style="color: hsl(0, 100%, 40%);">-     net = (struct gsm_network *) vlr->user_ctx;</span><br><span style="color: hsl(0, 100%, 40%);">-  OSMO_ASSERT(net);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    /* Handle errors */</span><br><span>  if (OSMO_GSUP_IS_MSGT_ERROR(gsup_msg->message_type)) {</span><br><span>            /* FIXME: handle this error somehow! */</span><br><span>diff --git a/src/libmsc/msc_net_init.c b/src/libmsc/msc_net_init.c</span><br><span>index 637ee74..4a752bf 100644</span><br><span>--- a/src/libmsc/msc_net_init.c</span><br><span>+++ b/src/libmsc/msc_net_init.c</span><br><span>@@ -117,8 +117,8 @@</span><br><span>               .rx_cb = {</span><br><span>                   /* vlr.c sets up its own cb and data */</span><br><span>                      /* MSC-A and MSC-B set up their own cb and data */</span><br><span style="color: hsl(0, 100%, 40%);">-                      [OSMO_GSUP_MESSAGE_CLASS_SMS] = { .func = gsm411_gsup_rx, .data = net->vlr },</span><br><span style="color: hsl(0, 100%, 40%);">-                        [OSMO_GSUP_MESSAGE_CLASS_USSD] = { .func = gsm0911_gsup_rx, .data = net->vlr },</span><br><span style="color: hsl(120, 100%, 40%);">+                    [OSMO_GSUP_MESSAGE_CLASS_SMS] = { .func = gsm411_gsup_rx, .data = net },</span><br><span style="color: hsl(120, 100%, 40%);">+                      [OSMO_GSUP_MESSAGE_CLASS_USSD] = { .func = gsm0911_gsup_rx, .data = net },</span><br><span>           },</span><br><span>   };</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-msc/+/14467">change 14467</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-msc/+/14467"/><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-Change-Id: I122d2880b356997c60df5f0cf4f5ecb3abb2e672 </div>
<div style="display:none"> Gerrit-Change-Number: 14467 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>