diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-02-26 10:03:44 +0100 |
---|---|---|
committer | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2014-01-13 16:10:12 +0400 |
commit | 8f107cb3c6fd265a9fb344c6718795de4978c938 (patch) | |
tree | d24f0f53420fb3b352207427070db3455a3bc4e9 | |
parent | 3e8ef24ca40c1208cb32a9a8967cac44cea1b6dc (diff) |
nitb: Add ctrl command to add/remove the BTS neighbor list
-rw-r--r-- | openbsc/src/osmo-nitb/ctrl_commands.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/openbsc/src/osmo-nitb/ctrl_commands.c b/openbsc/src/osmo-nitb/ctrl_commands.c index 7ce77e4be..69b7b104b 100644 --- a/openbsc/src/osmo-nitb/ctrl_commands.c +++ b/openbsc/src/osmo-nitb/ctrl_commands.c @@ -178,6 +178,45 @@ static int set_bts_neighbor_mode(struct ctrl_cmd *cmd, void *data) } CTRL_CMD_DEFINE(bts_neighbor_mode, "neighbor-mode"); +static int set_bts_neighbor_add(struct ctrl_cmd *cmd, void *data) +{ + int arfcn; + struct gsm_bts *bts = cmd->node; + + if (bts->neigh_list_manual_mode != NL_MODE_MANUAL) { + cmd->reply = "neighbor-mode must be manual"; + return CTRL_CMD_ERROR; + } + + arfcn = atoi(cmd->value); + bitvec_set_bit_pos(&bts->si_common.neigh_list, arfcn, 1); + cmd->reply = "Added"; + return CTRL_CMD_REPLY; +} + +static int set_bts_neighbor_del(struct ctrl_cmd *cmd, void *data) +{ + int arfcn; + struct gsm_bts *bts = cmd->node; + + if (bts->neigh_list_manual_mode != NL_MODE_MANUAL) { + cmd->reply = "neighbor-mode must be manual"; + return CTRL_CMD_ERROR; + } + + arfcn = atoi(cmd->value); + bitvec_set_bit_pos(&bts->si_common.neigh_list, arfcn, 0); + cmd->reply = "Removed"; + return CTRL_CMD_REPLY; +} + +CTRL_HELPER_VERIFY_RANGE(bts_neighbor_add, 0, 1023); +CTRL_HELPER_VERIFY_RANGE(bts_neighbor_del, 0, 1023); +CTRL_CMD_RAW(bts_neighbor_add, "neighbor-add", NULL, + set_bts_neighbor_add, verify_bts_neighbor_add); +CTRL_CMD_RAW(bts_neighbor_del, "neighbor-del", NULL, + set_bts_neighbor_del, verify_bts_neighbor_del); + int bsc_ctrl_cmds_install(void) { @@ -207,6 +246,8 @@ int bsc_ctrl_cmds_install(void) rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_ci); rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_ms_max_power); rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_neighbor_mode); + rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_neighbor_add); + rc |= ctrl_cmd_install(CTRL_NODE_BTS, &cmd_bts_neighbor_del); return rc; } |