From dea8aa8e6181f0ce0b793aa7b124ba4869227c4a Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Tue, 26 Sep 2023 18:39:51 +0200 Subject: vty: make NCC Permitted (SI2) configurable Related: SYS#6579 Change-Id: I71bb855c35378f8f0598bc11a42bd274b7232a5e --- src/osmo-bsc/bts_vty.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/bts_features.vty | 31 ++++++++++++++++++++ 2 files changed, 108 insertions(+) diff --git a/src/osmo-bsc/bts_vty.c b/src/osmo-bsc/bts_vty.c index 6602ad1ed..3af7296f4 100644 --- a/src/osmo-bsc/bts_vty.c +++ b/src/osmo-bsc/bts_vty.c @@ -1405,6 +1405,61 @@ DEFUN_USRATTR(cfg_bts_penalty_time_rsvd, 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 @@ 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, 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 @@ 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 +4979,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_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 3768a4d52..1ab803901 100644 --- a/tests/bts_features.vty +++ b/tests/bts_features.vty @@ -25,3 +25,34 @@ 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 +... +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 -- cgit v1.2.3