aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Willmann <daniel@totalueberwachung.de>2011-08-25 16:58:27 +0200
committerDaniel Willmann <daniel@totalueberwachung.de>2011-08-25 17:08:07 +0200
commitc4cc3aab64f373101960cd0cbf56e088f5470f06 (patch)
tree323f9116ec9d351a9ea0e02f9e3e319f774968d1
parentb59f450314140968e57f5a6bbbf7e6128fff3d6e (diff)
nat: Change the ctrl command path
The commands net.<netid>.bsc.<bscid>.* are now forwarded to the appropriate osmo-bsc. <netid> for now is just 0. <bscid> is not the LAC anymore (since that could be ambiguous), but instead the number as configured in bsc-nat.cfg
-rw-r--r--openbsc/src/osmo-bsc_nat/bsc_nat.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c
index 25ab1a91b..f0ca6fdb0 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c
@@ -1204,11 +1204,8 @@ static int handle_ctrlif_msg(struct bsc_connection *bsc, struct msgb *msg)
if (bsc->cfg && !llist_empty(&bsc->cfg->lac_list)) {
if (cmd->variable) {
- struct bsc_lac_entry *bsc_lac;
- bsc_lac = llist_entry(bsc->cfg->lac_list.next,
- struct bsc_lac_entry, entry);
- var = talloc_asprintf(cmd, "bsc.%i.%s", bsc_lac->lac,
- cmd->variable);
+ var = talloc_asprintf(cmd, "net.0.bsc.%i.%s", bsc->cfg->nr,
+ cmd->variable);
if (!var) {
cmd->type = CTRL_TYPE_ERROR;
cmd->reply = "OOM";
@@ -1601,17 +1598,19 @@ static int forward_to_bsc(struct ctrl_cmd *cmd)
struct ctrl_cmd *bsc_cmd = NULL;
struct bsc_connection *bsc;
struct bsc_cmd_list *pending;
- unsigned int lac;
- char *lac_str, *tmp, *saveptr;
+ unsigned int nr;
+ char *nr_str, *tmp, *saveptr;
/* Skip over the beginning (bsc.) */
tmp = strtok_r(cmd->variable, ".", &saveptr);
- lac_str = strtok_r(NULL, ".", &saveptr);
- if (!lac_str) {
+ tmp = strtok_r(NULL, ".", &saveptr);
+ tmp = strtok_r(NULL, ".", &saveptr);
+ nr_str = strtok_r(NULL, ".", &saveptr);
+ if (!nr_str) {
cmd->reply = "command incomplete";
goto err;
}
- lac = atoi(lac_str);
+ nr = atoi(nr_str);
tmp = strtok_r(NULL, "\0", &saveptr);
if (!tmp) {
@@ -1624,7 +1623,7 @@ static int forward_to_bsc(struct ctrl_cmd *cmd)
continue;
if (!bsc->authenticated)
continue;
- if (bsc_config_handles_lac(bsc->cfg, lac)) {
+ if (bsc->cfg->nr == nr) {
/* Add pending command to list */
pending = talloc_zero(bsc, struct bsc_cmd_list);
if (!pending) {
@@ -1677,7 +1676,7 @@ static int forward_to_bsc(struct ctrl_cmd *cmd)
}
}
/* We end up here if there's no bsc to handle our LAC */
- cmd->reply = "no BSC with this LAC";
+ cmd->reply = "no BSC with this nr";
err:
ret = CTRL_CMD_ERROR;
done:
@@ -1687,7 +1686,7 @@ done:
}
-CTRL_CMD_DEFINE(fwd_cmd, "bsc *");
+CTRL_CMD_DEFINE(fwd_cmd, "net 0 bsc *");
static int get_fwd_cmd(struct ctrl_cmd *cmd, void *data)
{
return forward_to_bsc(cmd);