<p>daniel has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/21232">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Add VTY command to reset nsvcs<br><br>Change-Id: I83b9cd7381c25da0e8aa847038a2d422c8dd63cf<br>Related: SYS#5002<br>---<br>M src/gb/gprs_ns2_vty.c<br>1 file changed, 58 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/32/21232/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gb/gprs_ns2_vty.c b/src/gb/gprs_ns2_vty.c</span><br><span>index 65fe88e..15b9e93 100644</span><br><span>--- a/src/gb/gprs_ns2_vty.c</span><br><span>+++ b/src/gb/gprs_ns2_vty.c</span><br><span>@@ -34,6 +34,7 @@</span><br><span> </span><br><span> #include <osmocom/core/msgb.h></span><br><span> #include <osmocom/core/byteswap.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/fsm.h></span><br><span> #include <osmocom/core/talloc.h></span><br><span> #include <osmocom/core/select.h></span><br><span> #include <osmocom/core/rate_ctr.h></span><br><span>@@ -354,6 +355,61 @@</span><br><span>   return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+struct nsvc_foreach_data {</span><br><span style="color: hsl(120, 100%, 40%);">+      const char *operation;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct vty *vty;</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%);">+int nsvc_operation_cb(struct gprs_ns2_vc *nsvc, void *ctx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct nsvc_foreach_data *data = (struct nsvc_foreach_data *)ctx;</span><br><span style="color: hsl(120, 100%, 40%);">+     struct vty *vty = data->vty;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!strcmp(data->operation, "block")) {</span><br><span style="color: hsl(120, 100%, 40%);">+         vty_out(vty, "WARNING: Block not implemented%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+//            gprs_ns_tx_block(nsvc, NS_CAUSE_OM_INTERVENTION);</span><br><span style="color: hsl(120, 100%, 40%);">+     } else if (!strcmp(data->operation, "unblock")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                vty_out(vty, "WARNING: Unblock not implemented%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+//          gprs_ns_tx_unblock(nsvc);</span><br><span style="color: hsl(120, 100%, 40%);">+     } else if (!strcmp(data->operation, "reset")) {</span><br><span style="color: hsl(120, 100%, 40%);">+          vty_out(vty, "Resetting NSVC %s%s", gprs_ns2_ll_str(nsvc), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+            gprs_ns2_vc_reset(nsvc);</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%);">+</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%);">+DEFUN(nsvc_nsei, nsvc_nsei_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+   "nsvc nsei <0-65535> (block|unblock|reset)",</span><br><span style="color: hsl(120, 100%, 40%);">+  "Perform an operation on all NSVCs of an NSE\n"</span><br><span style="color: hsl(120, 100%, 40%);">+     "The NSEI\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Initiate BLOCK procedure\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Initiate UNBLOCK procedure\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Initiate RESET procedure\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    struct gprs_ns2_inst *nsi = vty_nsi;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct gprs_ns2_nse *nse;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   uint16_t id = atoi(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+  struct nsvc_foreach_data data = {</span><br><span style="color: hsl(120, 100%, 40%);">+             .operation = argv[1],</span><br><span style="color: hsl(120, 100%, 40%);">+         .vty = vty,</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        nse = gprs_ns2_nse_by_nsei(nsi, id);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (!nse) {</span><br><span style="color: hsl(120, 100%, 40%);">+           vty_out(vty, "Could not find NSE for NSEI %u%s", id, 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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Perform the operation for all nsvc */</span><br><span style="color: hsl(120, 100%, 40%);">+      gprs_ns2_nse_foreach_nsvc(nse, nsvc_operation_cb, (void *)&data);</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%);">+</span><br><span> #define NSE_CMD_STR "Persistent NS Entity\n" "NS Entity ID (NSEI)\n"</span><br><span> </span><br><span> DEFUN(cfg_nse_nsvc, cfg_nse_nsvci_cmd,</span><br><span>@@ -699,6 +755,8 @@</span><br><span>   install_lib_element_ve(&show_nse_cmd);</span><br><span>   install_lib_element_ve(&logging_fltr_nsvc_cmd);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       install_lib_element(ENABLE_NODE, &nsvc_nsei_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>      install_lib_element(CFG_LOG_NODE, &logging_fltr_nsvc_cmd);</span><br><span> </span><br><span>   install_lib_element(CONFIG_NODE, &cfg_ns_cmd);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/21232">change 21232</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/+/21232"/><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: I83b9cd7381c25da0e8aa847038a2d422c8dd63cf </div>
<div style="display:none"> Gerrit-Change-Number: 21232 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>