From: Max <[email protected]>

It's useful for debugging and is similar to existing nsvc reset vty
command.
---
 src/gb/gprs_bssgp_vty.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/src/gb/gprs_bssgp_vty.c b/src/gb/gprs_bssgp_vty.c
index 080867b..2725d1f 100644
--- a/src/gb/gprs_bssgp_vty.c
+++ b/src/gb/gprs_bssgp_vty.c
@@ -33,6 +33,7 @@
 #include <osmocom/core/rate_ctr.h>
 #include <osmocom/gprs/gprs_ns.h>
 #include <osmocom/gprs/gprs_bssgp.h>
+#include <osmocom/gprs/gprs_bssgp_bss.h>

 #include <osmocom/vty/vty.h>
 #include <osmocom/vty/command.h>
@@ -113,6 +114,31 @@ static void dump_bssgp(struct vty *vty, int stats)
        }
 }

+DEFUN(bvc_reset, bvc_reset_cmd,
+       "bvc reset nsei <0-65535> bvci <0-65535>",
+       "Initiate BVC RESET procedure for a given NSEI and BVCI\n")
+{
+       uint16_t nsei = atoi(argv[0]), bvci = atoi(argv[1]);
+       struct bssgp_bvc_ctx *bvc;
+
+       if (!strcmp(argv[0], "reset"))
+               return CMD_WARNING;
+
+       if (argc != 2)
+               return CMD_WARNING;
+
+       bvc = btsctx_by_bvci_nsei(bvci, nsei);
+       if (!bvc) {
+               vty_out(vty, "No BVC for NSEI %d BVCI %d%s", nsei, bvci,
+                       VTY_NEWLINE);
+               return CMD_WARNING;
+       }
+       int r = bssgp_tx_bvc_reset(bvc, bvci, BSSGP_CAUSE_OML_INTERV);
+       vty_out(vty, "Sent BVC RESET for NSEI %d BVCI %d: %d%s", nsei, bvci, r,
+               VTY_NEWLINE);
+       return CMD_SUCCESS;
+}
+
 #define BSSGP_STR "Show information about the BSSGP protocol\n"

 DEFUN(show_bssgp, show_bssgp_cmd, "show bssgp",
@@ -185,6 +211,7 @@ int bssgp_vty_init(void)
        install_element_ve(&show_bssgp_stats_cmd);
        install_element_ve(&show_bvc_cmd);
        install_element_ve(&logging_fltr_bvc_cmd);
+       install_element_ve(&bvc_reset_cmd);

        install_element(CFG_LOG_NODE, &logging_fltr_bvc_cmd);

-- 
2.7.3

Reply via email to