<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/18500">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">flatten: move network->bsc_data->* to network->*<br><br>The separate struct osmo_bsc_data is like another separate struct gsm_network<br>for no reason. It is labeled "per-BSC data". These days, all of this is a<br>single BSC and there will not be different sets of osmo_bsc_data.<br><br>Drop struct osmo_bsc_data, move its members directly into gsm_network.<br><br>Some places tested 'if (net->bsc_data)', which is always true. Modify those<br>cases to rather do checks like 'if (net->rf_ctrl)', which are also always true<br>AFAICT, to keep as much unmodified logic as possible in this patch.<br><br>Change-Id: Ic7ae65e3b36e6e4b279eb01ad594f1226b5929e0<br>---<br>M include/osmocom/bsc/bsc_msc_data.h<br>M include/osmocom/bsc/gsm_data.h<br>M src/osmo-bsc/bsc_ctrl_commands.c<br>M src/osmo-bsc/bsc_init.c<br>M src/osmo-bsc/bsc_rf_ctrl.c<br>M src/osmo-bsc/bsc_vty.c<br>M src/osmo-bsc/cbsp_link.c<br>M src/osmo-bsc/gsm_08_08.c<br>M src/osmo-bsc/osmo_bsc_bssap.c<br>M src/osmo-bsc/osmo_bsc_ctrl.c<br>M src/osmo-bsc/osmo_bsc_grace.c<br>M src/osmo-bsc/osmo_bsc_main.c<br>M src/osmo-bsc/osmo_bsc_msc.c<br>M src/osmo-bsc/osmo_bsc_vty.c<br>14 files changed, 65 insertions(+), 104 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/00/18500/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h</span><br><span>index 364fa72..43adaec 100644</span><br><span>--- a/include/osmocom/bsc/bsc_msc_data.h</span><br><span>+++ b/include/osmocom/bsc/bsc_msc_data.h</span><br><span>@@ -181,26 +181,6 @@</span><br><span>        } mgcp_ipa;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * Per BSC data.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-struct bsc_cbc_link;</span><br><span style="color: hsl(0, 100%, 40%);">-struct osmo_bsc_data {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct gsm_network *network;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    /* msc configuration */</span><br><span style="color: hsl(0, 100%, 40%);">- struct llist_head mscs;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* rf ctl related bits */</span><br><span style="color: hsl(0, 100%, 40%);">-       int mid_call_timeout;</span><br><span style="color: hsl(0, 100%, 40%);">-   char *rf_ctrl_name;</span><br><span style="color: hsl(0, 100%, 40%);">-     struct osmo_bsc_rf *rf_ctrl;</span><br><span style="color: hsl(0, 100%, 40%);">-    int auto_off_timeout;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   struct bsc_cbc_link *cbc;</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%);">-</span><br><span> int osmo_bsc_msc_init(struct bsc_msc_data *msc);</span><br><span> int osmo_bsc_sccp_init(struct gsm_network *gsmnet);</span><br><span> </span><br><span>diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h</span><br><span>index 829295e..2739606 100644</span><br><span>--- a/include/osmocom/bsc/gsm_data.h</span><br><span>+++ b/include/osmocom/bsc/gsm_data.h</span><br><span>@@ -1647,8 +1647,16 @@</span><br><span>     /* Use a TCH for handling requests of type paging any */</span><br><span>     int pag_any_tch;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* MSC data in case we are a true BSC */</span><br><span style="color: hsl(0, 100%, 40%);">-        struct osmo_bsc_data *bsc_data;</span><br><span style="color: hsl(120, 100%, 40%);">+       /* msc configuration */</span><br><span style="color: hsl(120, 100%, 40%);">+       struct llist_head mscs;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* rf ctl related bits */</span><br><span style="color: hsl(120, 100%, 40%);">+     int mid_call_timeout;</span><br><span style="color: hsl(120, 100%, 40%);">+ char *rf_ctrl_name;</span><br><span style="color: hsl(120, 100%, 40%);">+   struct osmo_bsc_rf *rf_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+  int auto_off_timeout;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       struct bsc_cbc_link *cbc;</span><br><span> </span><br><span>        /* control interface */</span><br><span>      struct ctrl_handle *ctrl;</span><br><span>diff --git a/src/osmo-bsc/bsc_ctrl_commands.c b/src/osmo-bsc/bsc_ctrl_commands.c</span><br><span>index ca182d7..774ded2 100644</span><br><span>--- a/src/osmo-bsc/bsc_ctrl_commands.c</span><br><span>+++ b/src/osmo-bsc/bsc_ctrl_commands.c</span><br><span>@@ -349,7 +349,7 @@</span><br><span>         struct gsm_bts *bts;</span><br><span>         const char *policy_name;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    policy_name = osmo_bsc_rf_get_policy_name(net->bsc_data->rf_ctrl->policy);</span><br><span style="color: hsl(120, 100%, 40%);">+   policy_name = osmo_bsc_rf_get_policy_name(net->rf_ctrl->policy);</span><br><span> </span><br><span>   llist_for_each_entry(bts, &net->bts_list, list) {</span><br><span>             struct gsm_bts_trx *trx;</span><br><span>@@ -389,7 +389,7 @@</span><br><span>               return CTRL_CMD_ERROR;</span><br><span>       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   rf = net->bsc_data->rf_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+    rf = net->rf_ctrl;</span><br><span> </span><br><span>    if (!rf) {</span><br><span>           cmd->reply = "RF Ctrl is not enabled in the BSC Configuration";</span><br><span>diff --git a/src/osmo-bsc/bsc_init.c b/src/osmo-bsc/bsc_init.c</span><br><span>index d08e9c8..7f145ef 100644</span><br><span>--- a/src/osmo-bsc/bsc_init.c</span><br><span>+++ b/src/osmo-bsc/bsc_init.c</span><br><span>@@ -254,21 +254,15 @@</span><br><span> {</span><br><span>   struct gsm_network *net = gsm_network_init(ctx);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    net->bsc_data = talloc_zero(net, struct osmo_bsc_data);</span><br><span style="color: hsl(0, 100%, 40%);">-      if (!net->bsc_data) {</span><br><span style="color: hsl(0, 100%, 40%);">-                talloc_free(net);</span><br><span style="color: hsl(0, 100%, 40%);">-               return NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-       net->bsc_data->cbc = talloc_zero(net->bsc_data, struct bsc_cbc_link);</span><br><span style="color: hsl(0, 100%, 40%);">-  if (!net->bsc_data->cbc) {</span><br><span style="color: hsl(120, 100%, 40%);">+      net->cbc = talloc_zero(net, struct bsc_cbc_link);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (!net->cbc) {</span><br><span>          talloc_free(net);</span><br><span>            return NULL;</span><br><span>         }</span><br><span> </span><br><span>        /* Init back pointer */</span><br><span style="color: hsl(0, 100%, 40%);">- net->bsc_data->auto_off_timeout = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-     net->bsc_data->network = net;</span><br><span style="color: hsl(0, 100%, 40%);">-     INIT_LLIST_HEAD(&net->bsc_data->mscs);</span><br><span style="color: hsl(120, 100%, 40%);">+      net->auto_off_timeout = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+        INIT_LLIST_HEAD(&net->mscs);</span><br><span> </span><br><span>      net->ho = ho_cfg_init(net, NULL);</span><br><span>         net->hodec2.congestion_check_interval_s = HO_CFG_CONGESTION_CHECK_DEFAULT;</span><br><span>@@ -298,12 +292,12 @@</span><br><span>        osmo_timer_setup(&net->t3122_chan_load_timer, update_t3122_chan_load_timer, net);</span><br><span>     osmo_timer_schedule(&net->t3122_chan_load_timer, T3122_CHAN_LOAD_SAMPLE_INTERVAL, 0);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        net->bsc_data->cbc->net = net;</span><br><span style="color: hsl(120, 100%, 40%);">+       net->cbc->net = net;</span><br><span>   /* no cbc_hostname: client not started by default */</span><br><span style="color: hsl(0, 100%, 40%);">-    net->bsc_data->cbc->config.cbc_port = CBSP_TCP_PORT;</span><br><span style="color: hsl(120, 100%, 40%);">+ net->cbc->config.cbc_port = CBSP_TCP_PORT;</span><br><span>     /* listen_port == -1: server not started by default */</span><br><span style="color: hsl(0, 100%, 40%);">-  net->bsc_data->cbc->config.listen_port = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-   net->bsc_data->cbc->config.listen_hostname = talloc_strdup(net->bsc_data->cbc, "127.0.0.1");</span><br><span style="color: hsl(120, 100%, 40%);">+ net->cbc->config.listen_port = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+      net->cbc->config.listen_hostname = talloc_strdup(net->cbc, "127.0.0.1");</span><br><span> </span><br><span>      return net;</span><br><span> }</span><br><span>diff --git a/src/osmo-bsc/bsc_rf_ctrl.c b/src/osmo-bsc/bsc_rf_ctrl.c</span><br><span>index 73156e6..11cd224 100644</span><br><span>--- a/src/osmo-bsc/bsc_rf_ctrl.c</span><br><span>+++ b/src/osmo-bsc/bsc_rf_ctrl.c</span><br><span>@@ -106,12 +106,12 @@</span><br><span> </span><br><span> enum osmo_bsc_rf_policy osmo_bsc_rf_get_policy_by_bts(struct gsm_bts *bts)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct osmo_bsc_data *bsc_data = bts->network->bsc_data;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gsm_network *net = bts->network;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (!bsc_data)</span><br><span style="color: hsl(120, 100%, 40%);">+        if (!net || !net->rf_ctrl)</span><br><span>                return OSMO_BSC_RF_POLICY_UNKNOWN;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  switch (bsc_data->rf_ctrl->policy) {</span><br><span style="color: hsl(120, 100%, 40%);">+    switch (net->rf_ctrl->policy) {</span><br><span>        case S_RF_ON:</span><br><span>                return OSMO_BSC_RF_POLICY_ON;</span><br><span>        case S_RF_OFF:</span><br><span>@@ -267,9 +267,9 @@</span><br><span>         }</span><br><span> </span><br><span>        osmo_timer_setup(&rf->grace_timeout, grace_timeout, rf);</span><br><span style="color: hsl(0, 100%, 40%);">- osmo_timer_schedule(&rf->grace_timeout, rf->gsm_network->bsc_data->mid_call_timeout, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo_timer_schedule(&rf->grace_timeout, rf->gsm_network->mid_call_timeout, 0);</span><br><span>  LOGP(DLINP, LOGL_NOTICE, "Going to switch RF off in %d seconds.\n",</span><br><span style="color: hsl(0, 100%, 40%);">-        rf->gsm_network->bsc_data->mid_call_timeout);</span><br><span style="color: hsl(120, 100%, 40%);">+        rf->gsm_network->mid_call_timeout);</span><br><span> </span><br><span>   send_signal(rf, S_RF_GRACE);</span><br><span>         return 0;</span><br><span>@@ -409,18 +409,18 @@</span><br><span>    net = handler_data;</span><br><span> </span><br><span>      /* check if we have the needed information */</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!net->bsc_data)</span><br><span style="color: hsl(120, 100%, 40%);">+        if (!net)</span><br><span>            return 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   rf = net->bsc_data->rf_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+    rf = net->rf_ctrl;</span><br><span>        switch (signal) {</span><br><span>    case S_MSC_LOST:</span><br><span style="color: hsl(0, 100%, 40%);">-                if (net->bsc_data->auto_off_timeout < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+             if (net->auto_off_timeout < 0)</span><br><span>                         return 0;</span><br><span>            if (osmo_timer_pending(&rf->auto_off_timer))</span><br><span>                  return 0;</span><br><span>            osmo_timer_schedule(&rf->auto_off_timer,</span><br><span style="color: hsl(0, 100%, 40%);">-                         net->bsc_data->auto_off_timeout, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+                            net->auto_off_timeout, 0);</span><br><span>                break;</span><br><span>       case S_MSC_CONNECTED:</span><br><span>                osmo_timer_del(&rf->auto_off_timer);</span><br><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index c380a30..80658ec 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -253,13 +253,13 @@</span><br><span>     dump_pchan_load_vty(vty, "    ", &pl);</span><br><span> </span><br><span>     /* show rf */</span><br><span style="color: hsl(0, 100%, 40%);">-   if (net->bsc_data)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (net->rf_ctrl)</span><br><span>                 vty_out(vty, "  Last RF Command: %s%s",</span><br><span style="color: hsl(0, 100%, 40%);">-                       net->bsc_data->rf_ctrl->last_state_command,</span><br><span style="color: hsl(120, 100%, 40%);">+                  net->rf_ctrl->last_state_command,</span><br><span>                      VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (net->bsc_data)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (net->rf_ctrl)</span><br><span>                 vty_out(vty, "  Last RF Lock Command: %s%s",</span><br><span style="color: hsl(0, 100%, 40%);">-                  net->bsc_data->rf_ctrl->last_rf_lock_ctrl_command,</span><br><span style="color: hsl(120, 100%, 40%);">+                   net->rf_ctrl->last_rf_lock_ctrl_command,</span><br><span>                       VTY_NEWLINE);</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/cbsp_link.c b/src/osmo-bsc/cbsp_link.c</span><br><span>index 8840afa..91217ad 100644</span><br><span>--- a/src/osmo-bsc/cbsp_link.c</span><br><span>+++ b/src/osmo-bsc/cbsp_link.c</span><br><span>@@ -192,7 +192,7 @@</span><br><span> </span><br><span> int bsc_cbc_link_restart(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct bsc_cbc_link *cbc = bsc_gsmnet->bsc_data->cbc;</span><br><span style="color: hsl(120, 100%, 40%);">+   struct bsc_cbc_link *cbc = bsc_gsmnet->cbc;</span><br><span> </span><br><span>   /* shut down client, if no longer configured */</span><br><span>      if (cbc->client.cli && !cbc->config.cbc_hostname) {</span><br><span>@@ -280,7 +280,7 @@</span><br><span> </span><br><span> static struct bsc_cbc_link *vty_cbc_data(struct vty *vty)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   return bsc_gsmnet->bsc_data->cbc;</span><br><span style="color: hsl(120, 100%, 40%);">+       return bsc_gsmnet->cbc;</span><br><span> }</span><br><span> </span><br><span> /*********************************************************************************</span><br><span>diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c</span><br><span>index 9ccdb3b..7789d49 100644</span><br><span>--- a/src/osmo-bsc/gsm_08_08.c</span><br><span>+++ b/src/osmo-bsc/gsm_08_08.c</span><br><span>@@ -162,16 +162,14 @@</span><br><span> static struct bsc_msc_data *bsc_find_msc(struct gsm_subscriber_connection *conn,</span><br><span>                              struct msgb *msg)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+     struct gsm_network *net = conn->network;</span><br><span>  struct gsm48_hdr *gh;</span><br><span>        int8_t pdisc;</span><br><span>        uint8_t mtype;</span><br><span style="color: hsl(0, 100%, 40%);">-  struct osmo_bsc_data *bsc;</span><br><span>   struct bsc_msc_data *msc, *pag_msc;</span><br><span>  struct bsc_subscr *subscr;</span><br><span>   int is_emerg = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   bsc = conn->network->bsc_data;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>         if (msgb_l3len(msg) < sizeof(*gh)) {</span><br><span>              LOGP(DMSC, LOGL_ERROR, "There is no GSM48 header here.\n");</span><br><span>                return NULL;</span><br><span>@@ -196,12 +194,12 @@</span><br><span>                 goto round_robin;</span><br><span> </span><br><span> round_robin:</span><br><span style="color: hsl(0, 100%, 40%);">-   llist_for_each_entry(msc, &bsc->mscs, entry) {</span><br><span style="color: hsl(120, 100%, 40%);">+ llist_for_each_entry(msc, &net->mscs, entry) {</span><br><span>                if (is_emerg && !msc->allow_emerg)</span><br><span>                        continue;</span><br><span> </span><br><span>                /* force round robin by moving it to the end */</span><br><span style="color: hsl(0, 100%, 40%);">-         llist_move_tail(&msc->entry, &bsc->mscs);</span><br><span style="color: hsl(120, 100%, 40%);">+               llist_move_tail(&msc->entry, &net->mscs);</span><br><span>              return msc;</span><br><span>  }</span><br><span> </span><br><span>@@ -218,7 +216,7 @@</span><br><span>  pag_msc = paging_get_msc(conn_get_bts(conn), subscr);</span><br><span>        bsc_subscr_put(subscr);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     llist_for_each_entry(msc, &bsc->mscs, entry) {</span><br><span style="color: hsl(120, 100%, 40%);">+ llist_for_each_entry(msc, &net->mscs, entry) {</span><br><span>                if (msc != pag_msc)</span><br><span>                  continue;</span><br><span> </span><br><span>@@ -228,7 +226,7 @@</span><br><span>           */</span><br><span> </span><br><span>              /* force round robin by moving it to the end */</span><br><span style="color: hsl(0, 100%, 40%);">-         llist_move_tail(&msc->entry, &bsc->mscs);</span><br><span style="color: hsl(120, 100%, 40%);">+               llist_move_tail(&msc->entry, &net->mscs);</span><br><span>              return msc;</span><br><span>  }</span><br><span> </span><br><span>@@ -242,7 +240,7 @@</span><br><span>   * know the MSC which is in charge. The only meaningful option we have</span><br><span>        * is to deliver the paging response to the first configured MSC</span><br><span>      * blindly. */</span><br><span style="color: hsl(0, 100%, 40%);">-  msc = llist_first_entry_or_null(&bsc->mscs, struct bsc_msc_data, entry);</span><br><span style="color: hsl(120, 100%, 40%);">+       msc = llist_first_entry_or_null(&net->mscs, struct bsc_msc_data, entry);</span><br><span>      if (msc)</span><br><span>             return msc;</span><br><span>  LOGP(DMSC, LOGL_ERROR, "Unable to find any suitable MSC to deliver paging response!\n");</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>index e65d0cf..864d96d 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_bssap.c</span><br><span>@@ -137,7 +137,7 @@</span><br><span>    subscr->lac = lac;</span><br><span>        subscr->tmsi = tmsi;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     ret = bsc_grace_paging_request(msc->network->bsc_data->rf_ctrl->policy, subscr, chan_needed, msc, bts);</span><br><span style="color: hsl(120, 100%, 40%);">+   ret = bsc_grace_paging_request(msc->network->rf_ctrl->policy, subscr, chan_needed, msc, bts);</span><br><span>       if (ret == 0)</span><br><span>                LOGP(DMSC, LOGL_INFO, "Paging request failed or repeated paging: BTS: %d IMSI: '%s' TMSI: '0x%x/%u' LAC: 0x%x\n",</span><br><span>               bts->nr, mi_string, tmsi, tmsi, lac);</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_ctrl.c b/src/osmo-bsc/osmo_bsc_ctrl.c</span><br><span>index eb82a7c..12b2f4d 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_ctrl.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_ctrl.c</span><br><span>@@ -348,7 +348,7 @@</span><br><span> {</span><br><span>        struct bsc_msc_data *msc;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   llist_for_each_entry(msc, &bts->network->bsc_data->mscs, entry)</span><br><span style="color: hsl(120, 100%, 40%);">+  llist_for_each_entry(msc, &bts->network->mscs, entry)</span><br><span>              generate_location_state_trap(bts, msc);</span><br><span> }</span><br><span> </span><br><span>@@ -651,7 +651,7 @@</span><br><span>       struct bsc_msc_data *msc;</span><br><span> </span><br><span>        net = cmd->node;</span><br><span style="color: hsl(0, 100%, 40%);">-     llist_for_each_entry(msc, &net->bsc_data->mscs, entry) {</span><br><span style="color: hsl(120, 100%, 40%);">+    llist_for_each_entry(msc, &net->mscs, entry) {</span><br><span>                struct ctrl_cmd *trap;</span><br><span> </span><br><span>           trap = ctrl_cmd_create(tall_bsc_ctx, CTRL_TYPE_TRAP);</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_grace.c b/src/osmo-bsc/osmo_bsc_grace.c</span><br><span>index 9ee84d4..56edee5 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_grace.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_grace.c</span><br><span>@@ -30,7 +30,7 @@</span><br><span> {</span><br><span>      if (bts->excl_from_rf_lock)</span><br><span>               return 1;</span><br><span style="color: hsl(0, 100%, 40%);">-       return network->bsc_data->rf_ctrl->policy == S_RF_ON;</span><br><span style="color: hsl(120, 100%, 40%);">+        return network->rf_ctrl->policy == S_RF_ON;</span><br><span> }</span><br><span> </span><br><span> </span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_main.c b/src/osmo-bsc/osmo_bsc_main.c</span><br><span>index 42d05b1..9ddbe35 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_main.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_main.c</span><br><span>@@ -651,10 +651,6 @@</span><br><span>           talloc_report(tall_vty_ctx, stderr);</span><br><span>                 talloc_report_full(tall_bsc_ctx, stderr);</span><br><span>            break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case SIGUSR2:</span><br><span style="color: hsl(0, 100%, 40%);">-           if (!bsc_gsmnet->bsc_data)</span><br><span style="color: hsl(0, 100%, 40%);">-                   return;</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span>       default:</span><br><span>             break;</span><br><span>       }</span><br><span>@@ -797,7 +793,6 @@</span><br><span> int main(int argc, char **argv)</span><br><span> {</span><br><span>      struct bsc_msc_data *msc;</span><br><span style="color: hsl(0, 100%, 40%);">-       struct osmo_bsc_data *data;</span><br><span>  int rc;</span><br><span> </span><br><span>  tall_bsc_ctx = talloc_named_const(NULL, 1, "osmo-bsc");</span><br><span>@@ -880,17 +875,16 @@</span><br><span>            exit(1);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   data = bsc_gsmnet->bsc_data;</span><br><span>      if (rf_ctrl)</span><br><span style="color: hsl(0, 100%, 40%);">-            osmo_talloc_replace_string(data, &data->rf_ctrl_name, rf_ctrl);</span><br><span style="color: hsl(120, 100%, 40%);">+                osmo_talloc_replace_string(bsc_gsmnet, &bsc_gsmnet->rf_ctrl_name, rf_ctrl);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  data->rf_ctrl = osmo_bsc_rf_create(data->rf_ctrl_name, bsc_gsmnet);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!data->rf_ctrl) {</span><br><span style="color: hsl(120, 100%, 40%);">+      bsc_gsmnet->rf_ctrl = osmo_bsc_rf_create(bsc_gsmnet->rf_ctrl_name, bsc_gsmnet);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!bsc_gsmnet->rf_ctrl) {</span><br><span>               fprintf(stderr, "Failed to create the RF service.\n");</span><br><span>             exit(1);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   rc = check_codec_pref(&bsc_gsmnet->bsc_data->mscs);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = check_codec_pref(&bsc_gsmnet->mscs);</span><br><span>     if (rc < 0) {</span><br><span>             LOGP(DMSC, LOGL_ERROR, "Configuration contains mutually exclusive codec settings -- check"</span><br><span>                                        " configuration!\n");</span><br><span>@@ -902,7 +896,7 @@</span><br><span>                 }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   llist_for_each_entry(msc, &bsc_gsmnet->bsc_data->mscs, entry) {</span><br><span style="color: hsl(120, 100%, 40%);">+     llist_for_each_entry(msc, &bsc_gsmnet->mscs, entry) {</span><br><span>                 if (osmo_bsc_msc_init(msc) != 0) {</span><br><span>                   LOGP(DMSC, LOGL_ERROR, "Failed to start up. Exiting.\n");</span><br><span>                  exit(1);</span><br><span>@@ -918,7 +912,7 @@</span><br><span>               exit(1);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (osmo_bsc_sigtran_init(&bsc_gsmnet->bsc_data->mscs) != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+      if (osmo_bsc_sigtran_init(&bsc_gsmnet->mscs) != 0) {</span><br><span>          LOGP(DNM, LOGL_ERROR, "Failed to initialize sigtran backhaul.\n");</span><br><span>                 exit(1);</span><br><span>     }</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_msc.c b/src/osmo-bsc/osmo_bsc_msc.c</span><br><span>index f766f75..30b54f3 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_msc.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_msc.c</span><br><span>@@ -150,7 +150,7 @@</span><br><span> {</span><br><span>        struct bsc_msc_data *msc_data;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      llist_for_each_entry(msc_data, &net->bsc_data->mscs, entry)</span><br><span style="color: hsl(120, 100%, 40%);">+ llist_for_each_entry(msc_data, &net->mscs, entry)</span><br><span>             if (msc_data->nr == nr)</span><br><span>                   return msc_data;</span><br><span>     return NULL;</span><br><span>@@ -183,7 +183,7 @@</span><br><span>           return NULL;</span><br><span>         }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   llist_add_tail(&msc_data->entry, &net->bsc_data->mscs);</span><br><span style="color: hsl(120, 100%, 40%);">+      llist_add_tail(&msc_data->entry, &net->mscs);</span><br><span> </span><br><span>      /* Init back pointer */</span><br><span>      msc_data->network = net;</span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_vty.c b/src/osmo-bsc/osmo_bsc_vty.c</span><br><span>index 5837316..12ff770 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_vty.c</span><br><span>@@ -35,11 +35,6 @@</span><br><span> </span><br><span> #include <time.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static struct osmo_bsc_data *osmo_bsc_data(struct vty *vty)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-        return bsc_gsmnet->bsc_data;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static struct bsc_msc_data *bsc_msc_data(struct vty *vty)</span><br><span> {</span><br><span>   return vty->index;</span><br><span>@@ -180,9 +175,8 @@</span><br><span> static int config_write_msc(struct vty *vty)</span><br><span> {</span><br><span>     struct bsc_msc_data *msc;</span><br><span style="color: hsl(0, 100%, 40%);">-       struct osmo_bsc_data *bsc = osmo_bsc_data(vty);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     llist_for_each_entry(msc, &bsc->mscs, entry)</span><br><span style="color: hsl(120, 100%, 40%);">+   llist_for_each_entry(msc, &bsc_gsmnet->mscs, entry)</span><br><span>           write_msc(vty, msc);</span><br><span> </span><br><span>     return CMD_SUCCESS;</span><br><span>@@ -190,17 +184,15 @@</span><br><span> </span><br><span> static int config_write_bsc(struct vty *vty)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct osmo_bsc_data *bsc = osmo_bsc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      vty_out(vty, "bsc%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-   vty_out(vty, " mid-call-timeout %d%s", bsc->mid_call_timeout, VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-        if (bsc->rf_ctrl_name)</span><br><span style="color: hsl(120, 100%, 40%);">+     vty_out(vty, " mid-call-timeout %d%s", bsc_gsmnet->mid_call_timeout, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (bsc_gsmnet->rf_ctrl_name)</span><br><span>             vty_out(vty, " bsc-rf-socket %s%s",</span><br><span style="color: hsl(0, 100%, 40%);">-                   bsc->rf_ctrl_name, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                   bsc_gsmnet->rf_ctrl_name, VTY_NEWLINE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (bsc->auto_off_timeout != -1)</span><br><span style="color: hsl(120, 100%, 40%);">+   if (bsc_gsmnet->auto_off_timeout != -1)</span><br><span>           vty_out(vty, " bsc-auto-rf-off %d%s",</span><br><span style="color: hsl(0, 100%, 40%);">-                 bsc->auto_off_timeout, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                       bsc_gsmnet->auto_off_timeout, VTY_NEWLINE);</span><br><span> </span><br><span>   return CMD_SUCCESS;</span><br><span> }</span><br><span>@@ -285,7 +277,7 @@</span><br><span> </span><br><span>   /* create a new array */</span><br><span>     data->audio_support =</span><br><span style="color: hsl(0, 100%, 40%);">-                talloc_zero_array(osmo_bsc_data(vty), struct gsm_audio_support *, argc);</span><br><span style="color: hsl(120, 100%, 40%);">+              talloc_zero_array(bsc_gsmnet, struct gsm_audio_support *, argc);</span><br><span>     data->audio_length = argc;</span><br><span> </span><br><span>    for (i = 0; i < argc; ++i) {</span><br><span>@@ -522,8 +514,7 @@</span><br><span>       "mid-call-timeout NR",</span><br><span>       "Switch from Grace to Off in NR seconds.\n" "Timeout in seconds\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   struct osmo_bsc_data *data = osmo_bsc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-        data->mid_call_timeout = atoi(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+    bsc_gsmnet->mid_call_timeout = atoi(argv[0]);</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -532,9 +523,7 @@</span><br><span>       "bsc-rf-socket PATH",</span><br><span>       "Set the filename for the RF control interface.\n" "RF Control path\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   struct osmo_bsc_data *data = osmo_bsc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_talloc_replace_string(data, &data->rf_ctrl_name, argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+        osmo_talloc_replace_string(bsc_gsmnet, &bsc_gsmnet->rf_ctrl_name, argv[0]);</span><br><span>   return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -543,8 +532,7 @@</span><br><span>       "bsc-auto-rf-off <1-65000>",</span><br><span>       "Disable RF on MSC Connection\n" "Timeout\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        struct osmo_bsc_data *data = osmo_bsc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-        data->auto_off_timeout = atoi(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+    bsc_gsmnet->auto_off_timeout = atoi(argv[0]);</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -553,8 +541,7 @@</span><br><span>       "no bsc-auto-rf-off",</span><br><span>       NO_STR "Disable RF on MSC Connection\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct osmo_bsc_data *data = osmo_bsc_data(vty);</span><br><span style="color: hsl(0, 100%, 40%);">-        data->auto_off_timeout = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+       bsc_gsmnet->auto_off_timeout = -1;</span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -573,7 +560,7 @@</span><br><span>       SHOW_STR "MSC Connections and State\n")</span><br><span> {</span><br><span>   struct bsc_msc_data *msc;</span><br><span style="color: hsl(0, 100%, 40%);">-       llist_for_each_entry(msc, &bsc_gsmnet->bsc_data->mscs, entry) {</span><br><span style="color: hsl(120, 100%, 40%);">+     llist_for_each_entry(msc, &bsc_gsmnet->mscs, entry) {</span><br><span>                 vty_out(vty, "%d %s %s ",</span><br><span>                  msc->a.cs7_instance,</span><br><span>                      osmo_ss7_asp_protocol_name(msc->a.asp_proto),</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/18500">change 18500</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bsc/+/18500"/><meta itemprop="name" content="View Change"/></div></div>

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