static void signal_handler(int signal) { fprintf(stdout, "signal %u received\n", signal); switch (signal) { case SIGINT: bsc_shutdown_net(bsc_gsmnet); osmo_signal_dispatch(SS_GLOBAL, S_GLOBAL_SHUTDOWN, NULL); sleep(3); exit(0); break; case SIGABRT: /* in case of abort, we want to obtain a talloc report * and then return to the caller, who will abort the process */ case SIGUSR1: talloc_report(tall_vty_ctx, stderr); talloc_report_full(tall_bsc_ctx, stderr); break; case SIGUSR2: if (!bsc_gsmnet->msc_data) return; if (!bsc_gsmnet->msc_data->msc_con) return; if (!bsc_gsmnet->msc_data->msc_con->is_connected) return; bsc_msc_lost(bsc_gsmnet->msc_data->msc_con); break; default: break; } }
static void msc_con_timeout(void *_con) { struct bsc_msc_connection *con = _con; LOGP(DMSC, LOGL_ERROR, "MSC(%s) Connection timeout.\n", con->name); bsc_msc_lost(con); }