<p>lynxis lazus has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/23454">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gprs_ns2: add vty command `nsvc <nsvci> reset`<br><br>Change-Id: I436dd0367e83548acfc8f8e36ae4707496a252d9<br>---<br>M src/gb/gprs_ns2_internal.h<br>M src/gb/gprs_ns2_vc_fsm.c<br>M src/gb/gprs_ns2_vty.c<br>3 files changed, 27 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/54/23454/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gb/gprs_ns2_internal.h b/src/gb/gprs_ns2_internal.h</span><br><span>index 4883efd..1792979 100644</span><br><span>--- a/src/gb/gprs_ns2_internal.h</span><br><span>+++ b/src/gb/gprs_ns2_internal.h</span><br><span>@@ -390,6 +390,7 @@</span><br><span> int ns2_vc_is_alive(struct gprs_ns2_vc *nsvc);</span><br><span> int ns2_vc_is_unblocked(struct gprs_ns2_vc *nsvc);</span><br><span> int ns2_vc_block(struct gprs_ns2_vc *nsvc);</span><br><span style="color: hsl(120, 100%, 40%);">+int ns2_vc_reset(struct gprs_ns2_vc *nsvc);</span><br><span> int ns2_vc_unblock(struct gprs_ns2_vc *nsvc);</span><br><span> void ns2_vty_dump_nsvc(struct vty *vty, struct gprs_ns2_vc *nsvc, bool stats);</span><br><span> </span><br><span>diff --git a/src/gb/gprs_ns2_vc_fsm.c b/src/gb/gprs_ns2_vc_fsm.c</span><br><span>index 548806e..3cc97cb 100644</span><br><span>--- a/src/gb/gprs_ns2_vc_fsm.c</span><br><span>+++ b/src/gb/gprs_ns2_vc_fsm.c</span><br><span>@@ -115,6 +115,7 @@</span><br><span>       GPRS_NS2_EV_RX_UNITDATA,</span><br><span> </span><br><span>         GPRS_NS2_EV_REQ_FORCE_UNCONFIGURED,     /* called via vty for tests */</span><br><span style="color: hsl(120, 100%, 40%);">+        GPRS_NS2_EV_REQ_OM_RESET,               /* vty cmd: reset */</span><br><span>         GPRS_NS2_EV_REQ_OM_BLOCK,               /* vty cmd: block */</span><br><span>         GPRS_NS2_EV_REQ_OM_UNBLOCK,             /* vty cmd: unblock*/</span><br><span> };</span><br><span>@@ -132,6 +133,7 @@</span><br><span>    { GPRS_NS2_EV_RX_STATUS,                "RX-STATUS" },</span><br><span>     { GPRS_NS2_EV_RX_UNITDATA,              "RX-UNITDATA" },</span><br><span>   { GPRS_NS2_EV_REQ_FORCE_UNCONFIGURED,   "REQ-FORCE_UNCONFIGURED" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { GPRS_NS2_EV_REQ_OM_RESET,             "REQ-O&M-RESET"},</span><br><span>      { GPRS_NS2_EV_REQ_OM_BLOCK,             "REQ-O&M-BLOCK"},</span><br><span>      { GPRS_NS2_EV_REQ_OM_UNBLOCK,           "REQ-O&M-UNBLOCK"},</span><br><span>    { 0, NULL }</span><br><span>@@ -583,6 +585,15 @@</span><br><span>   struct msgb *msg = data;</span><br><span> </span><br><span>         switch (event) {</span><br><span style="color: hsl(120, 100%, 40%);">+      case GPRS_NS2_EV_REQ_OM_RESET:</span><br><span style="color: hsl(120, 100%, 40%);">+                if (priv->nsvc->mode != GPRS_NS2_VC_MODE_BLOCKRESET)</span><br><span style="color: hsl(120, 100%, 40%);">+                    break;</span><br><span style="color: hsl(120, 100%, 40%);">+                /* move the FSM into reset */</span><br><span style="color: hsl(120, 100%, 40%);">+         if (fi->state != GPRS_NS2_ST_RESET) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      priv->initiate_reset = true;</span><br><span style="color: hsl(120, 100%, 40%);">+                       osmo_fsm_inst_state_chg(fi, GPRS_NS2_ST_RESET, nsi->timeout[NS_TOUT_TNS_RESET], NS_TOUT_TNS_RESET);</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             break;</span><br><span>       case GPRS_NS2_EV_RX_RESET:</span><br><span>           if (priv->nsvc->mode != GPRS_NS2_VC_MODE_BLOCKRESET)</span><br><span>                   break;</span><br><span>@@ -682,6 +693,7 @@</span><br><span>                                S(GPRS_NS2_EV_RX_ALIVE) |</span><br><span>                            S(GPRS_NS2_EV_RX_ALIVE_ACK) |</span><br><span>                                S(GPRS_NS2_EV_REQ_FORCE_UNCONFIGURED) |</span><br><span style="color: hsl(120, 100%, 40%);">+                               S(GPRS_NS2_EV_REQ_OM_RESET) |</span><br><span>                                S(GPRS_NS2_EV_REQ_OM_BLOCK) |</span><br><span>                                S(GPRS_NS2_EV_REQ_OM_UNBLOCK),</span><br><span>        .allstate_action = ns2_vc_fsm_allstate_action,</span><br><span>@@ -755,6 +767,14 @@</span><br><span>        return osmo_fsm_inst_dispatch(nsvc->fi, GPRS_NS2_EV_REQ_OM_UNBLOCK, NULL);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Reset a NS-VC.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param nsvc the virtual circuit</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \return 0 on success; negative on error */</span><br><span style="color: hsl(120, 100%, 40%);">+int ns2_vc_reset(struct gprs_ns2_vc *nsvc)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        return osmo_fsm_inst_dispatch(nsvc->fi, GPRS_NS2_EV_REQ_OM_RESET, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! entry point for messages from the driver/VL</span><br><span>  *  \param nsvc virtual circuit on which the message was received</span><br><span>  *  \param msg message that was received</span><br><span>diff --git a/src/gb/gprs_ns2_vty.c b/src/gb/gprs_ns2_vty.c</span><br><span>index a27a90c..32639c2 100644</span><br><span>--- a/src/gb/gprs_ns2_vty.c</span><br><span>+++ b/src/gb/gprs_ns2_vty.c</span><br><span>@@ -1886,11 +1886,12 @@</span><br><span> }</span><br><span> </span><br><span> DEFUN(nsvc_block, nsvc_block_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "nsvc <0-65535> (block|unblock)",</span><br><span style="color: hsl(120, 100%, 40%);">+      "nsvc <0-65535> (block|unblock|reset)",</span><br><span>       "NS Virtual Connection\n"</span><br><span>       NSVCI_STR</span><br><span>       "Block a NSVC. As cause code O&M intervention will be used.\n"</span><br><span style="color: hsl(0, 100%, 40%);">-      "Unblock a NSVC. As cause code O&M intervention will be used.\n")</span><br><span style="color: hsl(120, 100%, 40%);">+      "Unblock a NSVC. As cause code O&M intervention will be used.\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Reset a NSVC. As cause code O&M intervention will be used.\n")</span><br><span> {</span><br><span>       struct gprs_ns2_inst *nsi = vty_nsi;</span><br><span>         struct gprs_ns2_vc *nsvc;</span><br><span>@@ -1905,8 +1906,10 @@</span><br><span> </span><br><span>       if (!strcmp(argv[1], "block")) {</span><br><span>           ns2_vc_block(nsvc);</span><br><span style="color: hsl(0, 100%, 40%);">-     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+      } else if (!strcmp(argv[1], "unblock")) {</span><br><span>          ns2_vc_unblock(nsvc);</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              ns2_vc_reset(nsvc);</span><br><span>  }</span><br><span> </span><br><span>        return CMD_SUCCESS;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/23454">change 23454</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/libosmocore/+/23454"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I436dd0367e83548acfc8f8e36ae4707496a252d9 </div>
<div style="display:none"> Gerrit-Change-Number: 23454 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>