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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gprs_ns2_vty: add optional argument signalling and data weights to `nsvc udp`<br><br>A static configured UDP NSVC can have signalling and data weights<br><br>Related: SYS#5354<br>Change-Id: Id363937c64e786c55e3136401ebdb44052415e0f<br>---<br>M src/gb/gprs_ns2_vty.c<br>M tests/gb/gprs_ns2_vty.vty<br>2 files changed, 74 insertions(+), 11 deletions(-)<br><br></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 01409bb..4bd7cde 100644</span><br><span>--- a/src/gb/gprs_ns2_vty.c</span><br><span>+++ b/src/gb/gprs_ns2_vty.c</span><br><span>@@ -1038,14 +1038,8 @@</span><br><span>      return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_ns_nse_nsvc_udp, cfg_ns_nse_nsvc_udp_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-      "nsvc udp BIND " VTY_IPV46_CMD " <1-65535>",</span><br><span style="color: hsl(0, 100%, 40%);">-      "NS Virtual Connection\n"</span><br><span style="color: hsl(0, 100%, 40%);">-      "NS over UDP\n"</span><br><span style="color: hsl(0, 100%, 40%);">-      "A unique bind identifier created by ns bind\n"</span><br><span style="color: hsl(0, 100%, 40%);">-      "Remote IPv4 Address\n" "Remote IPv6 Address\n"</span><br><span style="color: hsl(0, 100%, 40%);">-      "Remote UDP Port\n"</span><br><span style="color: hsl(0, 100%, 40%);">-      )</span><br><span style="color: hsl(120, 100%, 40%);">+static int ns_nse_nsvc_udp_cmds(struct vty *vty, const char *bind_name, const char *remote_char, uint16_t port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                uint16_t sig_weight, uint16_t data_weight)</span><br><span> {</span><br><span>      struct gprs_ns2_vc_bind *bind;</span><br><span>       struct gprs_ns2_vc *nsvc;</span><br><span>@@ -1053,10 +1047,8 @@</span><br><span>   bool dialect_modified = false;</span><br><span>       bool ll_modified = false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   const char *bind_name = argv[0];</span><br><span>     struct osmo_sockaddr_str remote_str;</span><br><span>         struct osmo_sockaddr remote;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint16_t port = atoi(argv[2]);</span><br><span> </span><br><span>   if (nse->ll == GPRS_NS2_LL_UNDEF) {</span><br><span>               nse->ll = GPRS_NS2_LL_UDP;</span><br><span>@@ -1078,7 +1070,7 @@</span><br><span>                goto err;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (osmo_sockaddr_str_from_str(&remote_str, argv[1], port)) {</span><br><span style="color: hsl(120, 100%, 40%);">+     if (osmo_sockaddr_str_from_str(&remote_str, remote_char, port)) {</span><br><span>                vty_out(vty, "Can not parse IPv4/IPv6 or port.%s", VTY_NEWLINE);</span><br><span>           goto err;</span><br><span>    }</span><br><span>@@ -1106,6 +1098,8 @@</span><br><span>            vty_out(vty, "Can not create NS-VC.%s", VTY_NEWLINE);</span><br><span>              goto err;</span><br><span>    }</span><br><span style="color: hsl(120, 100%, 40%);">+     nsvc->sig_weight = sig_weight;</span><br><span style="color: hsl(120, 100%, 40%);">+     nsvc->data_weight = data_weight;</span><br><span>  nsvc->persistent = true;</span><br><span> </span><br><span>      return CMD_SUCCESS;</span><br><span>@@ -1118,6 +1112,45 @@</span><br><span>         return CMD_WARNING;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(cfg_ns_nse_nsvc_udp, cfg_ns_nse_nsvc_udp_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "nsvc udp BIND " VTY_IPV46_CMD " <1-65535>",</span><br><span style="color: hsl(120, 100%, 40%);">+      "NS Virtual Connection\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "NS over UDP\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "A unique bind identifier created by ns bind\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Remote IPv4 Address\n" "Remote IPv6 Address\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Remote UDP Port\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      const char *bind_name = argv[0];</span><br><span style="color: hsl(120, 100%, 40%);">+      const char *remote = argv[1];</span><br><span style="color: hsl(120, 100%, 40%);">+ uint16_t port = atoi(argv[2]);</span><br><span style="color: hsl(120, 100%, 40%);">+        uint16_t sig_weight = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint16_t data_weight = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return ns_nse_nsvc_udp_cmds(vty, bind_name, remote, port, sig_weight, data_weight);</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(cfg_ns_nse_nsvc_udp_weights, cfg_ns_nse_nsvc_udp_weights_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "nsvc udp BIND " VTY_IPV46_CMD " <1-65535> signalling-weight <0-254> data-weight <0-254>",</span><br><span style="color: hsl(120, 100%, 40%);">+      "NS Virtual Connection\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "NS over UDP\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "A unique bind identifier created by ns bind\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Remote IPv4 Address\n" "Remote IPv6 Address\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Remote UDP Port\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Signalling weight of the NSVC (default = 1)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Signalling weight of the NSVC (default = 1)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Data weight of the NSVC (default = 1)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+      "Data weight of the NSVC (default = 1)\n"</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%);">+        const char *bind_name = argv[0];</span><br><span style="color: hsl(120, 100%, 40%);">+      const char *remote = argv[1];</span><br><span style="color: hsl(120, 100%, 40%);">+ uint16_t port = atoi(argv[2]);</span><br><span style="color: hsl(120, 100%, 40%);">+        uint16_t sig_weight = atoi(argv[3]);</span><br><span style="color: hsl(120, 100%, 40%);">+  uint16_t data_weight = atoi(argv[4]);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       return ns_nse_nsvc_udp_cmds(vty, bind_name, remote, port, sig_weight, data_weight);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DEFUN(cfg_no_ns_nse_nsvc_udp, cfg_no_ns_nse_nsvc_udp_cmd,</span><br><span>       "no nsvc udp BIND " VTY_IPV46_CMD " <1-65535>",</span><br><span>       NO_STR</span><br><span>@@ -2033,6 +2066,7 @@</span><br><span>     install_lib_element(L_NS_NSE_NODE, &cfg_no_ns_nse_nsvci_cmd);</span><br><span>    install_lib_element(L_NS_NSE_NODE, &cfg_no_ns_nse_nsvc_fr_dlci_cmd);</span><br><span>     install_lib_element(L_NS_NSE_NODE, &cfg_ns_nse_nsvc_udp_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+     install_lib_element(L_NS_NSE_NODE, &cfg_ns_nse_nsvc_udp_weights_cmd);</span><br><span>    install_lib_element(L_NS_NSE_NODE, &cfg_no_ns_nse_nsvc_udp_cmd);</span><br><span>         install_lib_element(L_NS_NSE_NODE, &cfg_ns_nse_nsvc_ipa_cmd);</span><br><span>    install_lib_element(L_NS_NSE_NODE, &cfg_no_ns_nse_nsvc_ipa_cmd);</span><br><span>diff --git a/tests/gb/gprs_ns2_vty.vty b/tests/gb/gprs_ns2_vty.vty</span><br><span>index a748f13..a969881 100644</span><br><span>--- a/tests/gb/gprs_ns2_vty.vty</span><br><span>+++ b/tests/gb/gprs_ns2_vty.vty</span><br><span>@@ -32,3 +32,32 @@</span><br><span> UDP bind: 127.0.0.14:42999 DSCP: 0</span><br><span>   IP-SNS signalling weight: 1 data weight: 1</span><br><span>   0 NS-VC: </span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy# configure terminal</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy(config)# ns</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy(config-ns)# nse 1234</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy(config-ns-nse)# nsvc udp abc 127.0.0.15 9496</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy(config-ns-nse)# end</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy# show ns</span><br><span style="color: hsl(120, 100%, 40%);">+NSEI 01234: UDP, DEAD</span><br><span style="color: hsl(120, 100%, 40%);">+ NSVCI none: RECOVERING PERSIST data_weight=1 sig_weight=1 udp)[127.0.0.14]:42999<>[127.0.0.15]:9496</span><br><span style="color: hsl(120, 100%, 40%);">+UDP bind: 127.0.0.14:42999 DSCP: 0</span><br><span style="color: hsl(120, 100%, 40%);">+  IP-SNS signalling weight: 1 data weight: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  1 NS-VC: </span><br><span style="color: hsl(120, 100%, 40%);">+    NSVCI 00000: udp)[127.0.0.14]:42999<>[127.0.0.15]:9496</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy# configure terminal</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy(config)# ns</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy(config-ns)# nse 1234</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy(config-ns-nse)# nsvc udp abc 127.0.0.16 9496 signalling-weight 0 data-weight 9</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy(config-ns-nse)# nsvc udp abc 127.0.0.17 9496 signalling-weight 0 data-weight 0</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy(config-ns-nse)# end</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy# show ns</span><br><span style="color: hsl(120, 100%, 40%);">+NSEI 01234: UDP, DEAD</span><br><span style="color: hsl(120, 100%, 40%);">+ NSVCI none: RECOVERING PERSIST data_weight=0 sig_weight=0 udp)[127.0.0.14]:42999<>[127.0.0.17]:9496</span><br><span style="color: hsl(120, 100%, 40%);">+ NSVCI none: RECOVERING PERSIST data_weight=9 sig_weight=0 udp)[127.0.0.14]:42999<>[127.0.0.16]:9496</span><br><span style="color: hsl(120, 100%, 40%);">+ NSVCI none: RECOVERING PERSIST data_weight=1 sig_weight=1 udp)[127.0.0.14]:42999<>[127.0.0.15]:9496</span><br><span style="color: hsl(120, 100%, 40%);">+UDP bind: 127.0.0.14:42999 DSCP: 0</span><br><span style="color: hsl(120, 100%, 40%);">+  IP-SNS signalling weight: 1 data weight: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  3 NS-VC: </span><br><span style="color: hsl(120, 100%, 40%);">+    NSVCI 00000: udp)[127.0.0.14]:42999<>[127.0.0.17]:9496</span><br><span style="color: hsl(120, 100%, 40%);">+    NSVCI 00000: udp)[127.0.0.14]:42999<>[127.0.0.16]:9496</span><br><span style="color: hsl(120, 100%, 40%);">+    NSVCI 00000: udp)[127.0.0.14]:42999<>[127.0.0.15]:9496</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/22900">change 22900</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/+/22900"/><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: Id363937c64e786c55e3136401ebdb44052415e0f </div>
<div style="display:none"> Gerrit-Change-Number: 22900 </div>
<div style="display:none"> Gerrit-PatchSet: 11 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>