diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-02-26 10:03:44 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-03-06 23:05:13 +0100 |
commit | ff53df711ef2b1ee3105356bc350549799d99f89 (patch) | |
tree | 33ca27d7c51b8e243df92cd8ef33b1448ec87dc9 | |
parent | db6f5a26bb8ab3a20f5066cd66d1f616ea215ffe (diff) |
nitb: Add ctrl command to add/remove the BTS neighbor list
-rw-r--r-- | openbsc/src/libbsc/bsc_ctrl_commands.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/openbsc/src/libbsc/bsc_ctrl_commands.c b/openbsc/src/libbsc/bsc_ctrl_commands.c index ff0a9dfc3..840c65a2c 100644 --- a/openbsc/src/libbsc/bsc_ctrl_commands.c +++ b/openbsc/src/libbsc/bsc_ctrl_commands.c @@ -236,6 +236,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_base_ctrl_cmds_install(void) { @@ -266,6 +305,8 @@ int bsc_base_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; } |