aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2013-02-26 10:03:44 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-03-06 23:05:13 +0100
commitff53df711ef2b1ee3105356bc350549799d99f89 (patch)
tree33ca27d7c51b8e243df92cd8ef33b1448ec87dc9
parentdb6f5a26bb8ab3a20f5066cd66d1f616ea215ffe (diff)
nitb: Add ctrl command to add/remove the BTS neighbor list
-rw-r--r--openbsc/src/libbsc/bsc_ctrl_commands.c41
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;
}