diff options
author | Daniel Willmann <daniel@totalueberwachung.de> | 2011-08-25 16:58:27 +0200 |
---|---|---|
committer | Daniel Willmann <daniel@totalueberwachung.de> | 2011-08-25 17:08:07 +0200 |
commit | c4cc3aab64f373101960cd0cbf56e088f5470f06 (patch) | |
tree | 323f9116ec9d351a9ea0e02f9e3e319f774968d1 /openbsc/src/osmo-bsc_nat | |
parent | b59f450314140968e57f5a6bbbf7e6128fff3d6e (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
Diffstat (limited to 'openbsc/src/osmo-bsc_nat')
-rw-r--r-- | openbsc/src/osmo-bsc_nat/bsc_nat.c | 25 |
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); |