osmith submitted this change.

View Change


Approvals: osmith: Looks good to me, approved Jenkins Builder: Verified
vty: make NCC Permitted (SI2) configurable

Related: SYS#6579
Change-Id: I71bb855c35378f8f0598bc11a42bd274b7232a5e
---
M src/osmo-bsc/bts_vty.c
M tests/bts_features.vty
2 files changed, 118 insertions(+), 0 deletions(-)

diff --git a/src/osmo-bsc/bts_vty.c b/src/osmo-bsc/bts_vty.c
index 6602ad1..3af7296 100644
--- a/src/osmo-bsc/bts_vty.c
+++ b/src/osmo-bsc/bts_vty.c
@@ -1405,6 +1405,61 @@
return CMD_SUCCESS;
}

+#define NCC_STR "Network Colour Code\n"
+#define NCC_PERMITTED_STR "Set permitted NCCs\n"
+
+DEFUN_USRATTR(cfg_bts_ncc_permitted_all,
+ cfg_bts_ncc_permitted_all_cmd,
+ X(BSC_VTY_ATTR_RESTART_ABIS_RSL_LINK),
+ "ncc-permitted all\n",
+ NCC_PERMITTED_STR
+ "Permit all NCCs (default)\n")
+{
+ struct gsm_bts *bts = vty->index;
+
+ bts->si_common.ncc_permitted = 0xff;
+ return CMD_SUCCESS;
+}
+
+DEFUN_USRATTR(cfg_bts_ncc_permitted,
+ cfg_bts_ncc_permitted_cmd,
+ X(BSC_VTY_ATTR_RESTART_ABIS_RSL_LINK),
+ "ncc-permitted <1-8> [<1-8>] [<1-8>] [<1-8>] [<1-8>] [<1-8>] [<1-8>]\n",
+ NCC_PERMITTED_STR
+ NCC_STR NCC_STR NCC_STR NCC_STR NCC_STR NCC_STR NCC_STR)
+{
+ struct gsm_bts *bts = vty->index;
+ int i;
+ int ncc_prev = -1;
+
+ if (argc == 1 && !strcmp(argv[0], "all")) {
+ bts->si_common.ncc_permitted = 0xff;
+ return CMD_SUCCESS;
+ }
+
+ bts->si_common.ncc_permitted = 0x00;
+
+ /* Check if NCCs are in order (like get_amr_from_arg) */
+ for (i = 0; i < argc; i++) {
+ int ncc = atoi(argv[i]);
+ if (ncc_prev > ncc) {
+ vty_out(vty, "%% NCCs must be listed in order%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ if (ncc_prev == ncc) {
+ vty_out(vty, "%% NCCs must be unique%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+ ncc_prev = ncc;
+ }
+
+ for (i = 0; i < argc; i++)
+ bts->si_common.ncc_permitted |= 1 << (atoi(argv[i]) - 1);
+
+ return CMD_SUCCESS;
+}
+
DEFUN_USRATTR(cfg_bts_radio_link_timeout,
cfg_bts_radio_link_timeout_cmd,
X(BSC_VTY_ATTR_RESTART_ABIS_OML_LINK),
@@ -4343,6 +4398,24 @@

#undef cfg_out

+static void config_write_bts_ncc_permitted(struct vty *vty, const char *prefix, const struct gsm_bts *bts)
+{
+ int i;
+ uint8_t ncc_permitted = bts->si_common.ncc_permitted;
+
+ if (ncc_permitted == 0xff)
+ return;
+
+ vty_out(vty, "%sncc-permitted", prefix);
+
+ for (i = 0; i < 8; i++) {
+ if ((ncc_permitted & (1 << i)))
+ vty_out(vty, " %d", i + 1);
+ }
+
+ vty_out(vty, "%s", VTY_NEWLINE);
+}
+
static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
{
int i;
@@ -4722,6 +4795,8 @@
config_write_power_ctrl(vty, 2, bts, &bts->bs_power_ctrl);
config_write_power_ctrl(vty, 2, bts, &bts->ms_power_ctrl);

+ config_write_bts_ncc_permitted(vty, " ", bts);
+
config_write_bts_model(vty, bts);
}

@@ -4904,6 +4979,8 @@
install_element(BTS_NODE, &cfg_bts_immediate_assignment_cmd);
install_element(BTS_NODE, &cfg_bts_nch_position_cmd);
install_element(BTS_NODE, &cfg_bts_no_nch_position_cmd);
+ install_element(BTS_NODE, &cfg_bts_ncc_permitted_all_cmd);
+ install_element(BTS_NODE, &cfg_bts_ncc_permitted_cmd);

neighbor_ident_vty_init();
/* See also handover commands added on bts level from handover_vty.c */
diff --git a/tests/bts_features.vty b/tests/bts_features.vty
index 3768a4d..1ab8039 100644
--- a/tests/bts_features.vty
+++ b/tests/bts_features.vty
@@ -25,3 +25,34 @@
OsmoBSC(config-net-bts-trx-ts)# exit
OsmoBSC(config-net-bts-trx)# exit
OsmoBSC(config-net-bts)# exit
+
+OsmoBSC(config-net)# exit
+OsmoBSC(config)# exit
+
+OsmoBSC# ### test ncc-permitted
+OsmoBSC# show running-config
+... !ncc-permitted
+OsmoBSC# configure terminal
+OsmoBSC(config)# network
+OsmoBSC(config-net)# bts 0
+OsmoBSC(config-net-bts)# ncc-permitted 3 2
+% NCCs must be listed in order
+OsmoBSC(config-net-bts)# ncc-permitted 2 2
+% NCCs must be unique
+OsmoBSC(config-net-bts)# ncc-permitted 2 3 4 5 6 7 8
+OsmoBSC(config-net-bts)# exit
+OsmoBSC(config-net)# exit
+OsmoBSC(config)# exit
+OsmoBSC# show running-config
+...
+ ncc-permitted 2 3 4 5 6 7 8
+...
+OsmoBSC# configure terminal
+OsmoBSC(config)# network
+OsmoBSC(config-net)# bts 0
+OsmoBSC(config-net-bts)# ncc-permitted all
+OsmoBSC(config-net-bts)# exit
+OsmoBSC(config-net)# exit
+OsmoBSC(config)# exit
+OsmoBSC# show running-config
+... !ncc-permitted

To view, visit change 34543. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I71bb855c35378f8f0598bc11a42bd274b7232a5e
Gerrit-Change-Number: 34543
Gerrit-PatchSet: 5
Gerrit-Owner: osmith <osmith@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: osmith <osmith@sysmocom.de>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-MessageType: merged