aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Willmann <daniel@totalueberwachung.de>2011-08-05 12:22:35 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2013-01-28 16:24:40 +0100
commit0eb02cdff80d11ae6da4603440acf7c6106a7b06 (patch)
treeb91f54a3c2a37ed76032d15307ab481d663e18c9
parent883fbc9d044318791239d79f86fc1aa235cb32e6 (diff)
libctrl: Improve error handling if controlif setup fails
-rw-r--r--openbsc/src/osmo-bsc/osmo_bsc_ctrl.c22
-rw-r--r--openbsc/src/osmo-bsc/osmo_bsc_main.c4
-rw-r--r--openbsc/src/osmo-bsc_nat/bsc_nat.c10
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);
}