aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/osmo-bsc/osmo_bsc_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/osmo-bsc/osmo_bsc_main.c')
-rw-r--r--openbsc/src/osmo-bsc/osmo_bsc_main.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_main.c b/openbsc/src/osmo-bsc/osmo_bsc_main.c
index 65ef4e0a2..484eb66e8 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_main.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_main.c
@@ -141,6 +141,8 @@ static struct vty_app_info vty_info = {
extern int bsc_shutdown_net(struct gsm_network *net);
static void signal_handler(int signal)
{
+ struct osmo_msc_data *msc;
+
fprintf(stdout, "signal %u received\n", signal);
switch (signal) {
@@ -160,11 +162,8 @@ static void signal_handler(int signal)
case SIGUSR2:
if (!bsc_gsmnet->bsc_data)
return;
- if (!bsc_gsmnet->bsc_data->msc.msc_con)
- return;
- if (!bsc_gsmnet->bsc_data->msc.msc_con->is_connected)
- return;
- bsc_msc_lost(bsc_gsmnet->bsc_data->msc.msc_con);
+ llist_for_each_entry(msc, &bsc_gsmnet->bsc_data->mscs, entry)
+ bsc_msc_lost(msc->msc_con);
break;
default:
break;
@@ -173,6 +172,7 @@ static void signal_handler(int signal)
int main(int argc, char **argv)
{
+ struct osmo_msc_data *msc;
struct osmo_bsc_data *data;
int rc;
@@ -232,11 +232,14 @@ int main(int argc, char **argv)
}
}
- if (osmo_bsc_msc_init(&bsc_gsmnet->bsc_data->msc) != 0) {
- LOGP(DNAT, LOGL_ERROR, "Failed to start up. Exiting.\n");
- exit(1);
+ llist_for_each_entry(msc, &bsc_gsmnet->bsc_data->mscs, entry) {
+ if (osmo_bsc_msc_init(msc) != 0) {
+ LOGP(DNAT, LOGL_ERROR, "Failed to start up. Exiting.\n");
+ exit(1);
+ }
}
+
if (osmo_bsc_sccp_init(bsc_gsmnet) != 0) {
LOGP(DNM, LOGL_ERROR, "Failed to register SCCP.\n");
exit(1);