From 24133c39585e18cb91ac6caa731a303c45cd0e2b Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 15 May 2010 23:06:26 +0200 Subject: [GPRS] NS: VTY: Don't nsvc_delete() on 'no nse...' Rather than deleting the NSE from memory, we simply mark it as non-persistent. This makes sure that there are no invalid references (e.g. from gbprox_peer) to the gprs_nsvc structure, but at the same time ensures it will no longer be stored as part of writing the config file. --- openbsc/src/gprs/gprs_ns_vty.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'openbsc') diff --git a/openbsc/src/gprs/gprs_ns_vty.c b/openbsc/src/gprs/gprs_ns_vty.c index b4102e44..a945d865 100644 --- a/openbsc/src/gprs/gprs_ns_vty.c +++ b/openbsc/src/gprs/gprs_ns_vty.c @@ -179,7 +179,7 @@ DEFUN(show_nse, show_nse_cmd, "show ns (nsei|nsvc) <0-65535> [stats]", return CMD_SUCCESS; } -#define NSE_CMD_STR "NS Entity\n" "NS Entity ID (NSEI)\n" +#define NSE_CMD_STR "Persistent NS Entity\n" "NS Entity ID (NSEI)\n" DEFUN(cfg_nse_nsvc, cfg_nse_nsvci_cmd, "nse <0-65535> nsvci <0-65534>", @@ -273,7 +273,7 @@ DEFUN(cfg_nse_remoterole, cfg_nse_remoterole_cmd, DEFUN(cfg_no_nse, cfg_no_nse_cmd, "no nse <0-65535>", - "Delete NS Entity\n" + "Delete Persistent NS Entity\n" "Delete " NSE_CMD_STR) { uint16_t nsei = atoi(argv[0]); @@ -285,7 +285,13 @@ DEFUN(cfg_no_nse, cfg_no_nse_cmd, return CMD_WARNING; } - nsvc_delete(nsvc); + if (!nsvc->persistent) { + vty_out(vty, "NSEI %u is not a persistent NSE%s", + nsei, VTY_NEWLINE); + return CMD_WARNING; + } + + nsvc->persistent = 0; return CMD_SUCCESS; } -- cgit v1.2.3