aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Smith <osmith@sysmocom.de>2023-09-26 18:39:51 +0200
committerOliver Smith <osmith@sysmocom.de>2023-09-27 10:42:51 +0200
commit767b6e1dcd5426dbca41431081be4c887bc7a762 (patch)
treeaa2d280986525a5db2a302c8b9401e4e235147b6
parenteff19b55b0c752c5de2c9d0b4fc72920ae4dd99b (diff)
vty: make NCC Permitted (SI2) configurableosmith/wip
-rw-r--r--src/osmo-bsc/bts_vty.c70
-rw-r--r--tests/bts_features.vty22
2 files changed, 92 insertions, 0 deletions
diff --git a/src/osmo-bsc/bts_vty.c b/src/osmo-bsc/bts_vty.c
index 6602ad1ed..69b9dc88b 100644
--- a/src/osmo-bsc/bts_vty.c
+++ b/src/osmo-bsc/bts_vty.c
@@ -1405,6 +1405,54 @@ DEFUN_USRATTR(cfg_bts_penalty_time_rsvd,
return CMD_SUCCESS;
}
+#define NCC_STR "Network Colour Code\n"
+
+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",
+ "Set permitted " NCC_STR "s\n"
+ NCC_STR NCC_STR NCC_STR NCC_STR NCC_STR NCC_STR NCC_STR)
+{
+ struct gsm_bts *bts = vty->index;
+ int i;
+ int ncc;
+ int ncc_prev = -1;
+
+ /* Check if NCCs are in order (like get_amr_from_arg) */
+ for (i = 0; i < argc; i++) {
+ 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;
+ }
+
+ bts->si_common.ncc_permitted = 0x00;
+ for (i = 0; i < argc; i++)
+ bts->si_common.ncc_permitted |= 1 << (atoi(argv[i]) - 1);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN_USRATTR(cfg_bts_no_ncc_permitted,
+ cfg_bts_no_ncc_permitted_cmd,
+ X(BSC_VTY_ATTR_RESTART_ABIS_RSL_LINK),
+ "no ncc-permitted",
+ NO_STR "Permit all " NCC_STR "s (default)\n")
+{
+ struct gsm_bts *bts = vty->index;
+
+ bts->si_common.ncc_permitted = 0xff;
+ 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 +4391,24 @@ static void config_write_power_ctrl(struct vty *vty, unsigned int indent,
#undef cfg_out
+static void config_write_bts_ncc_permitted(struct vty *vty, struct gsm_bts *bts)
+{
+ int i;
+ uint8_t ncc_permitted = bts->si_common.ncc_permitted;
+
+ if (ncc_permitted == 0xff)
+ return;
+
+ vty_out(vty, " ncc-permitted");
+
+ 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 +4788,8 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
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 +4972,8 @@ int bts_vty_init(void)
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_cmd);
+ install_element(BTS_NODE, &cfg_bts_no_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 3768a4d52..38f11d3bf 100644
--- a/tests/bts_features.vty
+++ b/tests/bts_features.vty
@@ -25,3 +25,25 @@ OsmoBSC(config-net-bts-trx-ts)# hopping enabled 1
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
+...