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
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c
index d99a8dd..fb66449 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c
@@ -1210,11 +1210,8 @@
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";
@@ -1608,17 +1605,19 @@
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) {
@@ -1631,7 +1630,7 @@
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) {
@@ -1684,7 +1683,7 @@
}
}
/* 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:
@@ -1694,7 +1693,7 @@
}
-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);