lynxis lazus has submitted this change. ( 
https://gerrit.osmocom.org/c/libosmocore/+/22900 )

Change subject: gprs_ns2_vty: add optional argument signalling and data weights 
to `nsvc udp`
......................................................................

gprs_ns2_vty: add optional argument signalling and data weights to `nsvc udp`

A static configured UDP NSVC can have signalling and data weights

Related: SYS#5354
Change-Id: Id363937c64e786c55e3136401ebdb44052415e0f
---
M src/gb/gprs_ns2_vty.c
M tests/gb/gprs_ns2_vty.vty
2 files changed, 74 insertions(+), 11 deletions(-)

Approvals:
  laforge: Looks good to me, but someone else must approve
  daniel: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/gb/gprs_ns2_vty.c b/src/gb/gprs_ns2_vty.c
index 01409bb..4bd7cde 100644
--- a/src/gb/gprs_ns2_vty.c
+++ b/src/gb/gprs_ns2_vty.c
@@ -1038,14 +1038,8 @@
        return CMD_SUCCESS;
 }

-DEFUN(cfg_ns_nse_nsvc_udp, cfg_ns_nse_nsvc_udp_cmd,
-      "nsvc udp BIND " VTY_IPV46_CMD " <1-65535>",
-      "NS Virtual Connection\n"
-      "NS over UDP\n"
-      "A unique bind identifier created by ns bind\n"
-      "Remote IPv4 Address\n" "Remote IPv6 Address\n"
-      "Remote UDP Port\n"
-      )
+static int ns_nse_nsvc_udp_cmds(struct vty *vty, const char *bind_name, const 
char *remote_char, uint16_t port,
+                               uint16_t sig_weight, uint16_t data_weight)
 {
        struct gprs_ns2_vc_bind *bind;
        struct gprs_ns2_vc *nsvc;
@@ -1053,10 +1047,8 @@
        bool dialect_modified = false;
        bool ll_modified = false;

-       const char *bind_name = argv[0];
        struct osmo_sockaddr_str remote_str;
        struct osmo_sockaddr remote;
-       uint16_t port = atoi(argv[2]);

        if (nse->ll == GPRS_NS2_LL_UNDEF) {
                nse->ll = GPRS_NS2_LL_UDP;
@@ -1078,7 +1070,7 @@
                goto err;
        }

-       if (osmo_sockaddr_str_from_str(&remote_str, argv[1], port)) {
+       if (osmo_sockaddr_str_from_str(&remote_str, remote_char, port)) {
                vty_out(vty, "Can not parse IPv4/IPv6 or port.%s", VTY_NEWLINE);
                goto err;
        }
@@ -1106,6 +1098,8 @@
                vty_out(vty, "Can not create NS-VC.%s", VTY_NEWLINE);
                goto err;
        }
+       nsvc->sig_weight = sig_weight;
+       nsvc->data_weight = data_weight;
        nsvc->persistent = true;

        return CMD_SUCCESS;
@@ -1118,6 +1112,45 @@
        return CMD_WARNING;
 }

+DEFUN(cfg_ns_nse_nsvc_udp, cfg_ns_nse_nsvc_udp_cmd,
+      "nsvc udp BIND " VTY_IPV46_CMD " <1-65535>",
+      "NS Virtual Connection\n"
+      "NS over UDP\n"
+      "A unique bind identifier created by ns bind\n"
+      "Remote IPv4 Address\n" "Remote IPv6 Address\n"
+      "Remote UDP Port\n")
+{
+       const char *bind_name = argv[0];
+       const char *remote = argv[1];
+       uint16_t port = atoi(argv[2]);
+       uint16_t sig_weight = 1;
+       uint16_t data_weight = 1;
+
+       return ns_nse_nsvc_udp_cmds(vty, bind_name, remote, port, sig_weight, 
data_weight);
+}
+
+DEFUN(cfg_ns_nse_nsvc_udp_weights, cfg_ns_nse_nsvc_udp_weights_cmd,
+      "nsvc udp BIND " VTY_IPV46_CMD " <1-65535> signalling-weight <0-254> 
data-weight <0-254>",
+      "NS Virtual Connection\n"
+      "NS over UDP\n"
+      "A unique bind identifier created by ns bind\n"
+      "Remote IPv4 Address\n" "Remote IPv6 Address\n"
+      "Remote UDP Port\n"
+      "Signalling weight of the NSVC (default = 1)\n"
+      "Signalling weight of the NSVC (default = 1)\n"
+      "Data weight of the NSVC (default = 1)\n"
+      "Data weight of the NSVC (default = 1)\n"
+      )
+{
+       const char *bind_name = argv[0];
+       const char *remote = argv[1];
+       uint16_t port = atoi(argv[2]);
+       uint16_t sig_weight = atoi(argv[3]);
+       uint16_t data_weight = atoi(argv[4]);
+
+       return ns_nse_nsvc_udp_cmds(vty, bind_name, remote, port, sig_weight, 
data_weight);
+}
+
 DEFUN(cfg_no_ns_nse_nsvc_udp, cfg_no_ns_nse_nsvc_udp_cmd,
       "no nsvc udp BIND " VTY_IPV46_CMD " <1-65535>",
       NO_STR
@@ -2033,6 +2066,7 @@
        install_lib_element(L_NS_NSE_NODE, &cfg_no_ns_nse_nsvci_cmd);
        install_lib_element(L_NS_NSE_NODE, &cfg_no_ns_nse_nsvc_fr_dlci_cmd);
        install_lib_element(L_NS_NSE_NODE, &cfg_ns_nse_nsvc_udp_cmd);
+       install_lib_element(L_NS_NSE_NODE, &cfg_ns_nse_nsvc_udp_weights_cmd);
        install_lib_element(L_NS_NSE_NODE, &cfg_no_ns_nse_nsvc_udp_cmd);
        install_lib_element(L_NS_NSE_NODE, &cfg_ns_nse_nsvc_ipa_cmd);
        install_lib_element(L_NS_NSE_NODE, &cfg_no_ns_nse_nsvc_ipa_cmd);
diff --git a/tests/gb/gprs_ns2_vty.vty b/tests/gb/gprs_ns2_vty.vty
index a748f13..a969881 100644
--- a/tests/gb/gprs_ns2_vty.vty
+++ b/tests/gb/gprs_ns2_vty.vty
@@ -32,3 +32,32 @@
 UDP bind: 127.0.0.14:42999 DSCP: 0
   IP-SNS signalling weight: 1 data weight: 1
   0 NS-VC:
+OsmoNSdummy# configure terminal
+OsmoNSdummy(config)# ns
+OsmoNSdummy(config-ns)# nse 1234
+OsmoNSdummy(config-ns-nse)# nsvc udp abc 127.0.0.15 9496
+OsmoNSdummy(config-ns-nse)# end
+OsmoNSdummy# show ns
+NSEI 01234: UDP, DEAD
+ NSVCI none: RECOVERING PERSIST data_weight=1 sig_weight=1 
udp)[127.0.0.14]:42999<>[127.0.0.15]:9496
+UDP bind: 127.0.0.14:42999 DSCP: 0
+  IP-SNS signalling weight: 1 data weight: 1
+  1 NS-VC:
+    NSVCI 00000: udp)[127.0.0.14]:42999<>[127.0.0.15]:9496
+OsmoNSdummy# configure terminal
+OsmoNSdummy(config)# ns
+OsmoNSdummy(config-ns)# nse 1234
+OsmoNSdummy(config-ns-nse)# nsvc udp abc 127.0.0.16 9496 signalling-weight 0 
data-weight 9
+OsmoNSdummy(config-ns-nse)# nsvc udp abc 127.0.0.17 9496 signalling-weight 0 
data-weight 0
+OsmoNSdummy(config-ns-nse)# end
+OsmoNSdummy# show ns
+NSEI 01234: UDP, DEAD
+ NSVCI none: RECOVERING PERSIST data_weight=0 sig_weight=0 
udp)[127.0.0.14]:42999<>[127.0.0.17]:9496
+ NSVCI none: RECOVERING PERSIST data_weight=9 sig_weight=0 
udp)[127.0.0.14]:42999<>[127.0.0.16]:9496
+ NSVCI none: RECOVERING PERSIST data_weight=1 sig_weight=1 
udp)[127.0.0.14]:42999<>[127.0.0.15]:9496
+UDP bind: 127.0.0.14:42999 DSCP: 0
+  IP-SNS signalling weight: 1 data weight: 1
+  3 NS-VC:
+    NSVCI 00000: udp)[127.0.0.14]:42999<>[127.0.0.17]:9496
+    NSVCI 00000: udp)[127.0.0.14]:42999<>[127.0.0.16]:9496
+    NSVCI 00000: udp)[127.0.0.14]:42999<>[127.0.0.15]:9496

--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/22900
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Id363937c64e786c55e3136401ebdb44052415e0f
Gerrit-Change-Number: 22900
Gerrit-PatchSet: 11
Gerrit-Owner: lynxis lazus <lyn...@fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillm...@sysmocom.de>
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: lynxis lazus <lyn...@fe80.eu>
Gerrit-Reviewer: pespin <pes...@sysmocom.de>
Gerrit-MessageType: merged

Reply via email to