aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-03-22 11:48:36 +0800
committerHarald Welte <laforge@gnumonks.org>2010-03-22 19:02:04 +0800
commita5731cffc4b07a85a5a6c82cf6bc223baab7cd0c (patch)
treed83d094ba07e12cec883f5443c3bdec8f4f8974c
parent94036700c1ba18de7f2d243e43f3470ebcd81e23 (diff)
GPRS: make NSEI configurable from VTY
-rw-r--r--openbsc/include/openbsc/gsm_data.h1
-rw-r--r--openbsc/src/bsc_init.c4
-rw-r--r--openbsc/src/vty_interface.c20
3 files changed, 25 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 18d557b39..88e7f16c3 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -469,6 +469,7 @@ struct gsm_bts {
int enabled;
struct {
struct gsm_nm_state nm_state;
+ u_int16_t nsei;
} nse;
struct {
struct gsm_nm_state nm_state;
diff --git a/openbsc/src/bsc_init.c b/openbsc/src/bsc_init.c
index 4b2a5e797..f3436621f 100644
--- a/openbsc/src/bsc_init.c
+++ b/openbsc/src/bsc_init.c
@@ -863,6 +863,10 @@ static void patch_nm_tables(struct gsm_bts *bts)
bs11_attr_radio[5] = bts->c0->max_power_red / 2;
nanobts_attr_radio[1] = bts->c0->max_power_red / 2;
+ /* patch NSEI */
+ nanobts_attr_nse[3] = bts->gprs.nse.nsei >> 8;
+ nanobts_attr_nse[4] = bts->gprs.nse.nsei & 0xff;
+
/* patch NSVCI */
nanobts_attr_nsvc0[3] = bts->gprs.nsvc[0].nsvci >> 8;
nanobts_attr_nsvc0[4] = bts->gprs.nsvc[0].nsvci & 0xff;
diff --git a/openbsc/src/vty_interface.c b/openbsc/src/vty_interface.c
index 4d5a7821a..e8948697f 100644
--- a/openbsc/src/vty_interface.c
+++ b/openbsc/src/vty_interface.c
@@ -320,6 +320,8 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
VTY_NEWLINE);
vty_out(vty, " gprs cell bvci %u%s", bts->gprs.cell.bvci,
VTY_NEWLINE);
+ vty_out(vty, " gprs nsei %u%s", bts->gprs.nse.nsei,
+ VTY_NEWLINE);
for (i = 0; i < ARRAY_SIZE(bts->gprs.nsvc); i++) {
struct gsm_bts_gprs_nsvc *nsvc =
&bts->gprs.nsvc[i];
@@ -1643,6 +1645,23 @@ DEFUN(cfg_bts_prs_bvci, cfg_bts_gprs_bvci_cmd,
return CMD_SUCCESS;
}
+DEFUN(cfg_bts_gprs_nsei, cfg_bts_gprs_nsei_cmd,
+ "gprs nsei <0-65535>",
+ "GPRS NS Entity Identifier")
+{
+ struct gsm_bts *bts = vty->index;
+
+ if (!bts->gprs.enabled) {
+ vty_out(vty, "%% GPRS not enabled on this BTS%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ bts->gprs.nse.nsei = atoi(argv[0]);
+
+ return CMD_SUCCESS;
+}
+
+
DEFUN(cfg_bts_gprs_nsvci, cfg_bts_gprs_nsvci_cmd,
"gprs nsvc <0-1> nsvci <0-65535>",
"GPRS NS VC Identifier")
@@ -2004,6 +2023,7 @@ int bsc_vty_init(struct gsm_network *net)
install_element(BTS_NODE, &cfg_bts_gprs_enabled_cmd);
install_element(BTS_NODE, &cfg_bts_gprs_rac_cmd);
install_element(BTS_NODE, &cfg_bts_gprs_bvci_cmd);
+ install_element(BTS_NODE, &cfg_bts_gprs_nsei_cmd);
install_element(BTS_NODE, &cfg_bts_gprs_nsvci_cmd);
install_element(BTS_NODE, &cfg_bts_gprs_nsvc_lport_cmd);
install_element(BTS_NODE, &cfg_bts_gprs_nsvc_rport_cmd);