diff options
author | Daniel Willmann <daniel@totalueberwachung.de> | 2011-08-05 12:22:35 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-01-28 16:24:40 +0100 |
commit | 0eb02cdff80d11ae6da4603440acf7c6106a7b06 (patch) | |
tree | b91f54a3c2a37ed76032d15307ab481d663e18c9 | |
parent | 883fbc9d044318791239d79f86fc1aa235cb32e6 (diff) |
libctrl: Improve error handling if controlif setup fails
-rw-r--r-- | openbsc/src/osmo-bsc/osmo_bsc_ctrl.c | 22 | ||||
-rw-r--r-- | openbsc/src/osmo-bsc/osmo_bsc_main.c | 4 | ||||
-rw-r--r-- | openbsc/src/osmo-bsc_nat/bsc_nat.c | 10 |
3 files changed, 21 insertions, 15 deletions
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c index 2a035f0e3..0df3f8052 100644 --- a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c +++ b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c @@ -449,20 +449,20 @@ static int verify_net_rf_lock(struct ctrl_cmd *cmd, const char *value, void *dat return 0; } -static int msc_signal_handler(unsigned int subsys, unsigned int signal, +int bsc_ctrl_cmds_install() void *handler_data, void *signal_data) { - struct msc_signal_data *msc; - struct gsm_network *net; - struct gsm_bts *bts; - - if (subsys != SS_MSC) - return 0; - if (signal != S_MSC_AUTHENTICATED) - return 0; - - msc = signal_data; + int rc; + rc = ctrl_cmd_install(CTRL_NODE_NET, &cmd_net_loc); + if (rc) + goto end; + rc = ctrl_cmd_install(CTRL_NODE_NET, &cmd_net_rf_lock); + if (rc) + goto end; + rc = ctrl_cmd_install(CTRL_NODE_TRX, &cmd_trx_rf_lock); +end: + return rc; net = msc->data->network; llist_for_each_entry(bts, &net->bts_list, list) generate_location_state_trap(bts, msc->data->msc_con); diff --git a/openbsc/src/osmo-bsc/osmo_bsc_main.c b/openbsc/src/osmo-bsc/osmo_bsc_main.c index 864d62970..376001dca 100644 --- a/openbsc/src/osmo-bsc/osmo_bsc_main.c +++ b/openbsc/src/osmo-bsc/osmo_bsc_main.c @@ -218,13 +218,13 @@ int main(int argc, char **argv) exit(1); } - rc = bsc_ctrl_cmds_install(bsc_gsmnet); + rc = bsc_ctrl_cmds_install(); if (rc < 0) { fprintf(stderr, "Failed to install control commands. Exiting.\n"); exit(1); } - data = bsc_gsmnet->bsc_data; + data = bsc_gsmnet->msc_data; if (rf_ctrl) bsc_replace_string(data, &data->rf_ctrl_name, rf_ctrl); diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c index dd06a70b6..77155fedc 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c @@ -1509,9 +1509,15 @@ int main(int argc, char **argv) exit(1); } - nat->ctrl = bsc_nat_controlif_setup(nat, 4250); + nat->ctrl = controlif_setup(NULL, 4250); if (!nat->ctrl) { - fprintf(stderr, "Creating the control interface failed.\n"); + fprintf(stderr, "Failed to initialize the control interface. Exiting.\n"); + exit(1); + } + + rc = ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_fwd_cmd); + if (rc) { + fprintf(stderr, "Failed to install the control command. Exiting.\n"); exit(1); } |