Change in osmo-sgsn[master]: gbproxy: Add SGSN NRI configuration

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

daniel gerrit-no-reply at lists.osmocom.org
Mon Dec 14 16:02:26 UTC 2020


daniel has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-sgsn/+/21705 )


Change subject: gbproxy: Add SGSN NRI configuration
......................................................................

gbproxy: Add SGSN NRI configuration

In order to support SGSN pooling we need to configure the various NRI
parameters such as the bitlen, NULL NRI, and which NRIs are assigned to
which SGSN.

Related: OS#4890
Change-Id: Id67592aa7712e5e04e7264b2fb8f26d57eb7e69e
---
M doc/examples/osmo-gbproxy/osmo-gbproxy.cfg
M include/osmocom/sgsn/gb_proxy.h
M src/gbproxy/gb_proxy.c
M src/gbproxy/gb_proxy_main.c
M src/gbproxy/gb_proxy_peer.c
M src/gbproxy/gb_proxy_vty.c
M tests/Makefile.am
A tests/osmo-gbproxy_test-nodes.vty
R tests/osmo-sgsn_test_nodes.vty
9 files changed, 386 insertions(+), 14 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/05/21705/1

diff --git a/doc/examples/osmo-gbproxy/osmo-gbproxy.cfg b/doc/examples/osmo-gbproxy/osmo-gbproxy.cfg
index 29f698f..df765c0 100644
--- a/doc/examples/osmo-gbproxy/osmo-gbproxy.cfg
+++ b/doc/examples/osmo-gbproxy/osmo-gbproxy.cfg
@@ -6,13 +6,25 @@
  no login
 !
 gbproxy
- sgsn nsei 101
+  nri bitlen 4
+  nri null add 0 4
+sgsn nsei 101
+ nri add 1
+ nri add 11
+sgsn nsei 102
+ nri add 2
+ nri add 12
 ns
  nse 101 nsvci 101
  nse 101 remote-role sgsn
  nse 101 encapsulation udp
  nse 101 remote-ip 192.168.100.239
  nse 101 remote-port 7777
+ nse 102 nsvci 102
+ nse 102 remote-role sgsn
+ nse 102 encapsulation udp
+ nse 102 remote-ip 192.168.100.239
+ nse 102 remote-port 7778
  timer tns-block 3
  timer tns-block-retries 3
  timer tns-reset 3
diff --git a/include/osmocom/sgsn/gb_proxy.h b/include/osmocom/sgsn/gb_proxy.h
index 200a539..58755a6 100644
--- a/include/osmocom/sgsn/gb_proxy.h
+++ b/include/osmocom/sgsn/gb_proxy.h
@@ -7,6 +7,7 @@
 #include <osmocom/core/fsm.h>
 #include <osmocom/core/hashtable.h>
 #include <osmocom/gsm/gsm23003.h>
+#include <osmocom/gsm/gsm23236.h>
 
 #include <osmocom/gprs/gprs_ns2.h>
 #include <osmocom/vty/command.h>
@@ -55,6 +56,9 @@
 	struct {
 		/* percentage of BVC flow control advertised to each SGSN in the pool */
 		uint8_t bvc_fc_ratio;
+		/* NRI bitlen and usable NULL-NRI ranges */
+		uint8_t nri_bitlen;
+		struct osmo_nri_ranges *null_nri_ranges;
 	} pool;
 
 	/* Linked list of all BSS side Gb peers */
@@ -128,6 +132,11 @@
 
 	/* Are we facing towards a SGSN (true) or BSS (false) */
 	bool sgsn_facing;
+	/* Pool configuration for the sgsn (only valid if sgsn_facing == true) */
+	struct {
+		bool allow_attach;
+		struct osmo_nri_ranges *nri_ranges;
+	} pool;
 
 	/* List of all BVCs in this NSE */
 	DECLARE_HASHTABLE(bvcs, 10);
diff --git a/src/gbproxy/gb_proxy.c b/src/gbproxy/gb_proxy.c
index 53aecdf..337a4fd 100644
--- a/src/gbproxy/gb_proxy.c
+++ b/src/gbproxy/gb_proxy.c
@@ -44,6 +44,7 @@
 #include <osmocom/gprs/gprs_bssgp_bss.h>
 #include <osmocom/gprs/bssgp_bvc_fsm.h>
 
+#include <osmocom/gsm/gsm23236.h>
 #include <osmocom/gsm/gsm_utils.h>
 
 #include <osmocom/sgsn/signal.h>
@@ -1286,6 +1287,8 @@
 
 	/* by default we advertise 100% of the BSS-side capacity to _each_ SGSN */
 	cfg->pool.bvc_fc_ratio = 100;
+	cfg->pool.null_nri_ranges = osmo_nri_ranges_alloc(cfg);
+	cfg->pool.nri_bitlen = OSMO_NRI_BITLEN_DEFAULT;
 	hash_init(cfg->bss_nses);
 	cfg->ctrg = rate_ctr_group_alloc(tall_sgsn_ctx, &global_ctrg_desc, 0);
 	if (!cfg->ctrg) {
diff --git a/src/gbproxy/gb_proxy_main.c b/src/gbproxy/gb_proxy_main.c
index e85e951..c660ede 100644
--- a/src/gbproxy/gb_proxy_main.c
+++ b/src/gbproxy/gb_proxy_main.c
@@ -303,6 +303,8 @@
 
 	gprs_ns2_vty_create();
 
+	/* TODO: Warn if we create a gbproxy_nse for an NSEI which we don't have a bind */
+
 	/* start telnet after reading config for vty_get_bind_addr() */
 	rc = telnet_init_dynif(tall_sgsn_ctx, NULL,
 			       vty_get_bind_addr(), OSMO_VTY_PORT_GBPROXY);
diff --git a/src/gbproxy/gb_proxy_peer.c b/src/gbproxy/gb_proxy_peer.c
index c38b2f7..fd9548a 100644
--- a/src/gbproxy/gb_proxy_peer.c
+++ b/src/gbproxy/gb_proxy_peer.c
@@ -261,10 +261,13 @@
 	nse->cfg = cfg;
 	nse->sgsn_facing = sgsn_facing;
 
-	if (sgsn_facing)
+	if (sgsn_facing) {
+		nse->pool.allow_attach = true;
+		nse->pool.nri_ranges = osmo_nri_ranges_alloc(nse);
 		hash_add(cfg->sgsn_nses, &nse->list, nsei);
-	else
+	} else {
 		hash_add(cfg->bss_nses, &nse->list, nsei);
+	}
 
 	hash_init(nse->bvcs);
 
diff --git a/src/gbproxy/gb_proxy_vty.c b/src/gbproxy/gb_proxy_vty.c
index 976ac12..bae2f95 100644
--- a/src/gbproxy/gb_proxy_vty.c
+++ b/src/gbproxy/gb_proxy_vty.c
@@ -25,14 +25,17 @@
 #include <time.h>
 #include <inttypes.h>
 
+#include <osmocom/core/hashtable.h>
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/timer.h>
 #include <osmocom/core/rate_ctr.h>
-#include <osmocom/gsm/gsm48.h>
 
 #include <osmocom/gprs/gprs_ns2.h>
 #include <osmocom/gprs/bssgp_bvc_fsm.h>
+
 #include <osmocom/gsm/apn.h>
+#include <osmocom/gsm/gsm23236.h>
+#include <osmocom/gsm/gsm48.h>
 
 #include <osmocom/sgsn/debug.h>
 #include <osmocom/sgsn/gb_proxy.h>
@@ -44,6 +47,17 @@
 #include <osmocom/vty/vty.h>
 #include <osmocom/vty/misc.h>
 
+#define NRI_STR "Mapping of Network Resource Indicators to this MSC, for MSC pooling\n"
+#define NULL_NRI_STR "Define NULL-NRI values that cause re-assignment of an MS to a different MSC, for MSC pooling.\n"
+#define NRI_FIRST_LAST_STR "First value of the NRI value range, should not surpass the configured 'nri bitlen'.\n" \
+	"Last value of the NRI value range, should not surpass the configured 'nri bitlen' and be larger than the" \
+	" first value; if omitted, apply only the first value.\n"
+#define NRI_ARGS_TO_STR_FMT "%s%s%s"
+#define NRI_ARGS_TO_STR_ARGS(ARGC, ARGV) ARGV[0], (ARGC>1)? ".." : "", (ARGC>1)? ARGV[1] : ""
+#define NRI_WARN(NSE, FORMAT, args...) do { \
+		vty_out(vty, "%% Warning: NSE %05d: " FORMAT "%s", (NSE)->nsei, ##args, VTY_NEWLINE); \
+		LOGP(DLBSSGP, LOGL_ERROR, "NSE %05d: " FORMAT "\n", (NSE)->nsei, ##args); \
+	} while (0)
 
 static struct gbproxy_config *g_cfg = NULL;
 
@@ -85,18 +99,23 @@
 
 static int config_write_gbproxy(struct vty *vty)
 {
-	struct gbproxy_nse *nse;
-	int i;
+	struct osmo_nri_range *r;
 
+	/* FIXME: Proper write */
 	vty_out(vty, "gbproxy%s", VTY_NEWLINE);
 
 	if (g_cfg->pool.bvc_fc_ratio != 100)
 		vty_out(vty, " pool bvc-flow-control-ratio %u%s", g_cfg->pool.bvc_fc_ratio, VTY_NEWLINE);
 
-	hash_for_each(g_cfg->sgsn_nses, i, nse, list) {
-		vty_out(vty, " sgsn nsei %u%s", nse->nsei, VTY_NEWLINE);
-	}
+	if (g_cfg->pool.nri_bitlen != OSMO_NRI_BITLEN_DEFAULT)
+		vty_out(vty, " nri bitlen %u%s", g_cfg->pool.nri_bitlen, VTY_NEWLINE);
 
+	llist_for_each_entry(r, &g_cfg->pool.null_nri_ranges->entries, entry) {
+		vty_out(vty, " nri null add %d", r->first);
+		if (r->first != r->last)
+			vty_out(vty, " %d", r->last);
+		vty_out(vty, "%s", VTY_NEWLINE);
+	}
 	return CMD_SUCCESS;
 }
 
@@ -109,13 +128,60 @@
 	return CMD_SUCCESS;
 }
 
+/* VTY code for SGSN (pool) configuration */
 extern const struct bssgp_bvc_fsm_ops sgsn_sig_bvc_fsm_ops;
 #include <osmocom/gprs/protocol/gsm_08_18.h>
 
-DEFUN(cfg_nsip_sgsn_nsei,
-      cfg_nsip_sgsn_nsei_cmd,
+static struct cmd_node sgsn_node = {
+	SGSN_NODE,
+	"%s(config-sgsn)# ",
+	1,
+};
+
+static void sgsn_write_nri(struct vty *vty, struct gbproxy_nse *nse, bool verbose)
+{
+	struct osmo_nri_range *r;
+
+	if (verbose) {
+		vty_out(vty, "sgsn %d%s", nse->nsei, VTY_NEWLINE);
+		if (llist_empty(&nse->pool.nri_ranges->entries)) {
+			vty_out(vty, " %% no NRI mappings%s", VTY_NEWLINE);
+			return;
+		}
+	}
+
+	llist_for_each_entry(r, &nse->pool.nri_ranges->entries, entry) {
+		if (osmo_nri_range_validate(r, 255))
+			vty_out(vty, " %% INVALID RANGE:");
+		vty_out(vty, " nri add %d", r->first);
+		if (r->first != r->last)
+			vty_out(vty, " %d", r->last);
+		vty_out(vty, "%s", VTY_NEWLINE);
+	}
+}
+
+static void write_sgsn(struct vty *vty, struct gbproxy_nse *nse)
+{
+	vty_out(vty, "sgsn nsei %u%s", nse->nsei, VTY_NEWLINE);
+	vty_out(vty, " %sallow-attach%s", nse->pool.allow_attach ? "" : "no ", VTY_NEWLINE);
+	sgsn_write_nri(vty, nse, false);
+}
+
+static int config_write_sgsn(struct vty *vty)
+{
+	struct gbproxy_nse *nse;
+	int i;
+
+	hash_for_each(g_cfg->sgsn_nses, i, nse, list)
+		write_sgsn(vty, nse);
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(cfg_sgsn_nsei,
+      cfg_sgsn_nsei_cmd,
       "sgsn nsei <0-65534>",
-      "SGSN information\n"
+      "Configure the SGSN\n"
       "NSEI to be used in the connection with the SGSN\n"
       "The NSEI\n")
 {
@@ -140,6 +206,8 @@
 		osmo_fsm_inst_dispatch(bvc->fi, BSSGP_BVCFSM_E_REQ_RESET, &cause);
 	}
 
+	vty->node = SGSN_NODE;
+	vty->index = nse;
 	return CMD_SUCCESS;
 
 free_bvc:
@@ -151,6 +219,121 @@
 	return CMD_WARNING;
 }
 
+DEFUN_ATTR(cfg_sgsn_nri_add, cfg_sgsn_nri_add_cmd,
+	   "nri add <0-32767> [<0-32767>]",
+	   NRI_STR "Add NRI value or range to the NRI mapping for this MSC\n"
+	   NRI_FIRST_LAST_STR,
+	   CMD_ATTR_IMMEDIATE)
+{
+	struct gbproxy_nse *nse = vty->index;
+	struct gbproxy_nse *other_nse;
+	bool before;
+	int rc, i;
+	const char *message;
+	struct osmo_nri_range add_range;
+
+	rc = osmo_nri_ranges_vty_add(&message, &add_range, nse->pool.nri_ranges, argc, argv, g_cfg->pool.nri_bitlen);
+	if (message) {
+		NRI_WARN(nse, "%s: " NRI_ARGS_TO_STR_FMT, message, NRI_ARGS_TO_STR_ARGS(argc, argv));
+	}
+	if (rc < 0)
+		return CMD_WARNING;
+
+	/* Issue a warning about NRI range overlaps (but still allow them).
+	 * Overlapping ranges will map to whichever MSC comes fist in the bsc_gsmnet->mscs llist,
+	 * which is not necessarily in the order of increasing msc->nr. */
+	before = true;
+
+	hash_for_each(g_cfg->sgsn_nses, i, other_nse, list) {
+		if (other_nse == nse) {
+			before = false;
+			continue;
+		}
+		if (osmo_nri_range_overlaps_ranges(&add_range, other_nse->pool.nri_ranges)) {
+			NRI_WARN(nse, "NRI range [%d..%d] overlaps between NSE %05d and NSE %05d."
+				 " For overlaps, NSE %05d has higher priority than NSE %05d",
+				 add_range.first, add_range.last, nse->nsei, other_nse->nsei,
+				 before ? other_nse->nsei : nse->nsei, before ? nse->nsei : other_nse->nsei);
+		}
+	}
+	return CMD_SUCCESS;
+}
+
+DEFUN_ATTR(cfg_sgsn_nri_del, cfg_sgsn_nri_del_cmd,
+	   "nri del <0-32767> [<0-32767>]",
+	   NRI_STR "Remove NRI value or range from the NRI mapping for this MSC\n"
+	   NRI_FIRST_LAST_STR,
+	   CMD_ATTR_IMMEDIATE)
+{
+	struct gbproxy_nse *nse = vty->index;
+	int rc;
+	const char *message;
+
+	rc = osmo_nri_ranges_vty_del(&message, NULL, nse->pool.nri_ranges, argc, argv);
+	if (message) {
+		NRI_WARN(nse, "%s: " NRI_ARGS_TO_STR_FMT, message, NRI_ARGS_TO_STR_ARGS(argc, argv));
+	}
+	if (rc < 0)
+		return CMD_WARNING;
+	return CMD_SUCCESS;
+}
+
+DEFUN_ATTR(cfg_sgsn_allow_attach, cfg_sgsn_allow_attach_cmd,
+	   "allow-attach",
+	   "Allow this SGSN to attach new subscribers (default).\n",
+	   CMD_ATTR_IMMEDIATE)
+{
+	struct gbproxy_nse *nse = vty->index;
+	nse->pool.allow_attach = true;
+	return CMD_SUCCESS;
+}
+
+DEFUN_ATTR(cfg_sgsn_no_allow_attach, cfg_sgsn_no_allow_attach_cmd,
+	   "no allow-attach",
+	   NO_STR
+	   "Do not assign new subscribers to this MSC."
+	   " Useful if an MSC in an MSC pool is configured to off-load subscribers."
+	   " The MSC will still be operational for already IMSI-Attached subscribers,"
+	   " but the NAS node selection function will skip this MSC for new subscribers\n",
+	   CMD_ATTR_IMMEDIATE)
+{
+	struct gbproxy_nse *nse = vty->index;
+	nse->pool.allow_attach = false;
+	return CMD_SUCCESS;
+}
+
+DEFUN(cfg_sgsn_show_nri_all, show_nri_all_cmd,
+      "show nri all",
+      SHOW_STR NRI_STR "Show all SGSNs\n")
+{
+	struct gbproxy_nse *nse;
+	int i;
+
+	hash_for_each(g_cfg->sgsn_nses, i, nse, list) {
+		sgsn_write_nri(vty, nse, true);
+	}
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(show_nri, show_nri_nsei_cmd,
+      "show nri nsei <0-65535>",
+      SHOW_STR NRI_STR "Identify SGSN by NSEI\n"
+      "NSEI of the SGSN\n")
+{
+	struct gbproxy_nse *nse;
+	int nsei = atoi(argv[0]);
+
+	nse = gbproxy_nse_by_nsei(g_cfg, nsei, NSE_F_SGSN);
+	if (!nse) {
+		vty_out(vty, "%% No SGSN with found for NSEI %05d%s", nsei, VTY_NEWLINE);
+		return CMD_SUCCESS;
+	}
+	sgsn_write_nri(vty, nse, true);
+
+	return CMD_SUCCESS;
+}
+
 DEFUN(cfg_pool_bvc_fc_ratio,
       cfg_pool_bvc_fc_ratio_cmd,
       "pool bvc-flow-control-ratio <1-100>",
@@ -161,6 +344,56 @@
 	g_cfg->pool.bvc_fc_ratio = atoi(argv[0]);
 	return CMD_SUCCESS;
 }
+DEFUN_ATTR(cfg_gbproxy_nri_bitlen,
+	   cfg_gbproxy_nri_bitlen_cmd,
+	   "nri bitlen <1-15>",
+	   NRI_STR
+	   "Set number of bits that an NRI has, to extract from TMSI identities (always starting just after the TMSI's most significant octet).\n"
+	   "bit count (default: " OSMO_STRINGIFY_VAL(NRI_BITLEN_DEFAULT) ")\n",
+	   CMD_ATTR_IMMEDIATE)
+{
+	g_cfg->pool.nri_bitlen = atoi(argv[0]);
+	return CMD_SUCCESS;
+}
+
+DEFUN_ATTR(cfg_gbproxy_nri_null_add,
+	   cfg_gbproxy_nri_null_add_cmd,
+	   "nri null add <0-32767> [<0-32767>]",
+	   NRI_STR NULL_NRI_STR "Add NULL-NRI value (or range)\n"
+	   NRI_FIRST_LAST_STR,
+	   CMD_ATTR_IMMEDIATE)
+{
+	int rc;
+	const char *message;
+	rc = osmo_nri_ranges_vty_add(&message, NULL, g_cfg->pool.null_nri_ranges, argc, argv,
+				     g_cfg->pool.nri_bitlen);
+	if (message) {
+		vty_out(vty, "%% %s: " NRI_ARGS_TO_STR_FMT "%s", message, NRI_ARGS_TO_STR_ARGS(argc, argv),
+			VTY_NEWLINE);
+	}
+	if (rc < 0)
+		return CMD_WARNING;
+	return CMD_SUCCESS;
+}
+
+DEFUN_ATTR(cfg_gbproxy_nri_null_del,
+	   cfg_gbproxy_nri_null_del_cmd,
+	   "nri null del <0-32767> [<0-32767>]",
+	   NRI_STR NULL_NRI_STR "Remove NRI value or range from the NRI mapping for this MSC\n"
+	   NRI_FIRST_LAST_STR,
+	   CMD_ATTR_IMMEDIATE)
+{
+	int rc;
+	const char *message;
+	rc = osmo_nri_ranges_vty_del(&message, NULL, g_cfg->pool.null_nri_ranges, argc, argv);
+	if (message) {
+		vty_out(vty, "%% %s: " NRI_ARGS_TO_STR_FMT "%s", message, NRI_ARGS_TO_STR_ARGS(argc, argv),
+			VTY_NEWLINE);
+	}
+	if (rc < 0)
+		return CMD_WARNING;
+	return CMD_SUCCESS;
+}
 
 static void log_set_bvc_filter(struct log_target *target,
 				const uint16_t *bvci)
@@ -336,15 +569,26 @@
 {
 	install_element_ve(&show_gbproxy_cmd);
 	install_element_ve(&show_gbproxy_links_cmd);
+	install_element_ve(&show_nri_all_cmd);
+	install_element_ve(&show_nri_nsei_cmd);
 	install_element_ve(&logging_fltr_bvc_cmd);
 
 	install_element(ENABLE_NODE, &delete_gb_bvci_cmd);
 	install_element(ENABLE_NODE, &delete_gb_nsei_cmd);
 
+	install_element(CONFIG_NODE, &cfg_sgsn_nsei_cmd);
+	install_node(&sgsn_node, config_write_sgsn);
+	install_element(SGSN_NODE, &cfg_sgsn_allow_attach_cmd);
+	install_element(SGSN_NODE, &cfg_sgsn_no_allow_attach_cmd);
+	install_element(SGSN_NODE, &cfg_sgsn_nri_add_cmd);
+	install_element(SGSN_NODE, &cfg_sgsn_nri_del_cmd);
+
 	install_element(CONFIG_NODE, &cfg_gbproxy_cmd);
 	install_node(&gbproxy_node, config_write_gbproxy);
-	install_element(GBPROXY_NODE, &cfg_nsip_sgsn_nsei_cmd);
 	install_element(GBPROXY_NODE, &cfg_pool_bvc_fc_ratio_cmd);
+	install_element(GBPROXY_NODE, &cfg_gbproxy_nri_bitlen_cmd);
+	install_element(GBPROXY_NODE, &cfg_gbproxy_nri_null_add_cmd);
+	install_element(GBPROXY_NODE, &cfg_gbproxy_nri_null_del_cmd);
 
 	return 0;
 }
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 4a9449a..a1b4c4d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -61,9 +61,13 @@
 #   make vty-transcript-test U=-u
 vty-transcript-test:
 	osmo_verify_transcript_vty.py -v \
+		-n OsmoGbProxy -p 4246 \
+		-r "$(top_builddir)/src/gbproxy/osmo-gbproxy -c $(top_srcdir)/doc/examples/osmo-gbproxy/osmo-gbproxy.cfg" \
+		$(U) $${T:-$(srcdir)/osmo-gbproxy*.vty}
+	osmo_verify_transcript_vty.py -v \
 		-n OsmoSGSN -p 4245 \
 		-r "$(top_builddir)/src/sgsn/osmo-sgsn -c $(top_srcdir)/doc/examples/osmo-sgsn/osmo-sgsn.cfg" \
-		$(U) $${T:-$(srcdir)/*.vty}
+		$(U) $${T:-$(srcdir)/osmo-sgsn*.vty}
 	rm -f $(builddir)/sms.db $(builddir)/gsn_restart
 
 # don't run multiple tests concurrently so that the ports don't conflict
diff --git a/tests/osmo-gbproxy_test-nodes.vty b/tests/osmo-gbproxy_test-nodes.vty
new file mode 100644
index 0000000..7267c1d
--- /dev/null
+++ b/tests/osmo-gbproxy_test-nodes.vty
@@ -0,0 +1,95 @@
+OsmoGbProxy> enable
+OsmoGbProxy# show nri all
+sgsn 101
+ nri add 1
+ nri add 11
+sgsn 102
+ nri add 2
+ nri add 12
+OsmoGbProxy# configure terminal
+OsmoGbProxy(config)# list
+  help
+  list [with-flags]
+  show vty-attributes
+  show vty-attributes (application|library|global)
+  write terminal
+  write file [PATH]
+  write memory
+  write
+  show running-config
+  exit
+  end
+  hostname WORD
+  no hostname [HOSTNAME]
+  password (8|) WORD
+  password LINE
+  enable password (8|) WORD
+  enable password LINE
+  no enable password
+  banner motd default
+  banner motd file [FILE]
+  no banner motd
+  service terminal-length <0-512>
+  no service terminal-length [<0-512>]
+  line vty
+  service advanced-vty
+  no service advanced-vty
+  show history
+  log stderr
+  no log stderr
+  log file .FILENAME
+  no log file .FILENAME
+  log alarms <2-32700>
+  no log alarms
+  log syslog (authpriv|cron|daemon|ftp|lpr|mail|news|user|uucp)
+  log syslog local <0-7>
+  no log syslog
+  log systemd-journal [raw]
+  no log systemd-journal
+  log gsmtap [HOSTNAME]
+  stats reporter statsd
+  no stats reporter statsd
+  stats reporter log
+  no stats reporter log
+  stats interval <0-65535>
+  sgsn nsei <0-65534>
+  gbproxy
+  ns
+
+OsmoGbProxy(config)# sgsn nsei 101
+OsmoGbProxy(config-sgsn)# list
+  help
+  list [with-flags]
+  show vty-attributes
+  show vty-attributes (application|library|global)
+  write terminal
+  write file [PATH]
+  write memory
+  write
+  show running-config
+  exit
+  end
+  allow-attach
+  no allow-attach
+  nri add <0-32767> [<0-32767>]
+  nri del <0-32767> [<0-32767>]
+
+OsmoGbProxy(config-sgsn)# exit
+OsmoGbProxy(config)# gbproxy
+
+OsmoGbProxy(config-gbproxy)# list
+  help
+  list [with-flags]
+  show vty-attributes
+  show vty-attributes (application|library|global)
+  write terminal
+  write file [PATH]
+  write memory
+  write
+  show running-config
+  exit
+  end
+  pool bvc-flow-control-ratio <1-100>
+  nri bitlen <1-15>
+  nri null add <0-32767> [<0-32767>]
+  nri null del <0-32767> [<0-32767>]
diff --git a/tests/test_nodes.vty b/tests/osmo-sgsn_test_nodes.vty
similarity index 100%
rename from tests/test_nodes.vty
rename to tests/osmo-sgsn_test_nodes.vty

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

Gerrit-Project: osmo-sgsn
Gerrit-Branch: master
Gerrit-Change-Id: Id67592aa7712e5e04e7264b2fb8f26d57eb7e69e
Gerrit-Change-Number: 21705
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201214/f3752b63/attachment.htm>


More information about the gerrit-log mailing list