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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">vty: actually trigger Assignment for 'assignment', not HO<br><br>Related: SYS#5315 OS#4940<br>Change-Id: Iee11f1ae0533d7db844e68a5c4c48d0fe3e27297<br>---<br>M src/osmo-bsc/bsc_vty.c<br>1 file changed, 32 insertions(+), 20 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index 7ede51a..09aec2b 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -78,6 +78,7 @@</span><br><span> #include <osmocom/bsc/bts.h></span><br><span> #include <osmocom/mgcp_client/mgcp_client_endpoint_fsm.h></span><br><span> #include <osmocom/bsc/bsc_subscr_conn_fsm.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/bsc/assignment_fsm.h></span><br><span> </span><br><span> #include <inttypes.h></span><br><span> </span><br><span>@@ -1867,23 +1868,32 @@</span><br><span>      return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int trigger_ho_or_as(struct vty *vty, struct gsm_lchan *from_lchan, struct gsm_bts *to_bts)</span><br><span style="color: hsl(120, 100%, 40%);">+static int trigger_as(struct vty *vty, struct gsm_lchan *from_lchan, struct gsm_lchan *to_lchan)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!to_bts || from_lchan->ts->trx->bts == to_bts) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DHO, LOGL_NOTICE, "%s Manually triggering Assignment from VTY\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                     gsm_lchan_name(from_lchan));</span><br><span style="color: hsl(0, 100%, 40%);">-               to_bts = from_lchan->ts->trx->bts;</span><br><span style="color: hsl(0, 100%, 40%);">-     } else</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGP(DHO, LOGL_NOTICE, "%s (ARFCN %u) --> BTS %u Manually triggering Handover from VTY\n",</span><br><span style="color: hsl(0, 100%, 40%);">-              gsm_lchan_name(from_lchan), from_lchan->ts->trx->arfcn, to_bts->nr);</span><br><span style="color: hsl(0, 100%, 40%);">-   {</span><br><span style="color: hsl(0, 100%, 40%);">-               struct handover_out_req req = {</span><br><span style="color: hsl(0, 100%, 40%);">-                 .from_hodec_id = HODEC_USER,</span><br><span style="color: hsl(0, 100%, 40%);">-                    .old_lchan = from_lchan,</span><br><span style="color: hsl(0, 100%, 40%);">-                };</span><br><span style="color: hsl(0, 100%, 40%);">-              bts_cell_ab(&req.target_cell_ab, to_bts);</span><br><span style="color: hsl(0, 100%, 40%);">-           handover_request(&req);</span><br><span style="color: hsl(120, 100%, 40%);">+   LOG_LCHAN(from_lchan, LOGL_NOTICE, "Manually triggering Assignment from VTY\n");</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!to_lchan) {</span><br><span style="color: hsl(120, 100%, 40%);">+              to_lchan = lchan_select_by_type(from_lchan->ts->trx->bts, from_lchan->type);</span><br><span style="color: hsl(120, 100%, 40%);">+              vty_out(vty, "Error: cannot find free lchan of type %s%s",</span><br><span style="color: hsl(120, 100%, 40%);">+                  gsm_lchant_name(from_lchan->type), VTY_NEWLINE);</span><br><span>  }</span><br><span style="color: hsl(120, 100%, 40%);">+     if (reassignment_request_to_lchan(ACTIVATE_FOR_VTY, from_lchan, to_lchan)) {</span><br><span style="color: hsl(120, 100%, 40%);">+          vty_out(vty, "Error: not allowed to start assignment for %s%s",</span><br><span style="color: hsl(120, 100%, 40%);">+                     gsm_lchan_name(from_lchan), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+             return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     return CMD_SUCCESS;</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 trigger_ho(struct vty *vty, struct gsm_lchan *from_lchan, struct gsm_bts *to_bts)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     struct handover_out_req req = {</span><br><span style="color: hsl(120, 100%, 40%);">+               .from_hodec_id = HODEC_USER,</span><br><span style="color: hsl(120, 100%, 40%);">+          .old_lchan = from_lchan,</span><br><span style="color: hsl(120, 100%, 40%);">+      };</span><br><span style="color: hsl(120, 100%, 40%);">+    bts_cell_ab(&req.target_cell_ab, to_bts);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DHO, LOGL_NOTICE, "%s (ARFCN %u) --> BTS %u Manually triggering Handover from VTY\n",</span><br><span style="color: hsl(120, 100%, 40%);">+            gsm_lchan_name(from_lchan), from_lchan->ts->trx->arfcn, to_bts->nr);</span><br><span style="color: hsl(120, 100%, 40%);">+ handover_request(&req);</span><br><span>  return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -1897,11 +1907,10 @@</span><br><span>       unsigned int trx_nr = atoi(argv[1]);</span><br><span>         unsigned int ts_nr = atoi(argv[2]);</span><br><span>  unsigned int ss_nr = atoi(argv[3]);</span><br><span style="color: hsl(0, 100%, 40%);">-     unsigned int bts_nr_new;</span><br><span>     const char *action;</span><br><span> </span><br><span>      if (argc > 4) {</span><br><span style="color: hsl(0, 100%, 40%);">-              bts_nr_new = atoi(argv[4]);</span><br><span style="color: hsl(120, 100%, 40%);">+           unsigned int bts_nr_new = atoi(argv[4]);</span><br><span> </span><br><span>                 /* Lookup the BTS where we want to handover to */</span><br><span>            llist_for_each_entry(bts, &net->bts_list, list) {</span><br><span>@@ -1930,7 +1939,10 @@</span><br><span>                conn->lchan->ts->nr == ts_nr && conn->lchan->nr == ss_nr) {</span><br><span>                       vty_out(vty, "starting %s for lchan %s...%s", action, conn->lchan->name, VTY_NEWLINE);</span><br><span>                       lchan_dump_full_vty(vty, conn->lchan);</span><br><span style="color: hsl(0, 100%, 40%);">-                       return trigger_ho_or_as(vty, conn->lchan, new_bts);</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (new_bts)</span><br><span style="color: hsl(120, 100%, 40%);">+                          return trigger_ho(vty, conn->lchan, new_bts);</span><br><span style="color: hsl(120, 100%, 40%);">+                      else</span><br><span style="color: hsl(120, 100%, 40%);">+                          return trigger_as(vty, conn->lchan, NULL);</span><br><span>                }</span><br><span>    }</span><br><span> </span><br><span>@@ -2055,7 +2067,7 @@</span><br><span>        if (!to_bts)</span><br><span>                 return CMD_WARNING;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- return trigger_ho_or_as(vty, from_lchan, to_bts);</span><br><span style="color: hsl(120, 100%, 40%);">+     return trigger_ho(vty, from_lchan, to_bts);</span><br><span> }</span><br><span> </span><br><span> DEFUN(assignment_any, assignment_any_cmd,</span><br><span>@@ -2070,7 +2082,7 @@</span><br><span>    if (!from_lchan)</span><br><span>             return CMD_WARNING;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- return trigger_ho_or_as(vty, from_lchan, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+       return trigger_as(vty, from_lchan, NULL);</span><br><span> }</span><br><span> </span><br><span> DEFUN(handover_any_to_arfcn_bsic, handover_any_to_arfcn_bsic_cmd,</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/24363">change 24363</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/+/24363"/><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: Iee11f1ae0533d7db844e68a5c4c48d0fe3e27297 </div>
<div style="display:none"> Gerrit-Change-Number: 24363 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>