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
This commit is contained in:
parent
b59f450314
commit
c4cc3aab64
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue