diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-02-17 00:00:55 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-02-17 19:34:28 +0100 |
commit | 5cd45e16ef243b8f22edf2ec4b6794a235817578 (patch) | |
tree | 25a9caf5355d2471c6662a39acddf280883f848d /src | |
parent | 2d4891ff8cbf3cf139a0e15db5b259930041f913 (diff) |
bsc: Move the signal handling code over to the bsc.c
Diffstat (limited to 'src')
-rw-r--r-- | src/bsc.c | 43 | ||||
-rw-r--r-- | src/main.c | 40 | ||||
-rw-r--r-- | src/main_stp.c | 30 |
3 files changed, 46 insertions, 67 deletions
@@ -21,6 +21,7 @@ #include <bsc_data.h> #include <cellmgr_debug.h> +#include <msc_connection.h> #include <mtp_level3.h> #include <mtp_pcap.h> @@ -34,6 +35,8 @@ #include <string.h> #include <assert.h> #include <unistd.h> +#include <signal.h> +#include <pthread.h> #ifndef _GNU_SOURCE #define _GNU_SOURCE @@ -80,6 +83,42 @@ struct bsc_data *bsc_data_create() return bsc; } +static void sigint() +{ + static pthread_mutex_t exit_mutex = PTHREAD_MUTEX_INITIALIZER; + static int handled = 0; + + struct mtp_link_set *set; + + /* failed to lock */ + if (pthread_mutex_trylock(&exit_mutex) != 0) + return; + if (handled) + goto out; + + printf("Terminating.\n"); + handled = 1; + if (bsc) { + llist_for_each_entry(set, &bsc->linksets, entry) + link_shutdown_all(set); + } + + exit(0); + +out: + pthread_mutex_unlock(&exit_mutex); +} + +static void sigusr2() +{ + struct msc_connection *msc; + printf("Closing the MSC connection on demand.\n"); + + llist_for_each_entry(msc, &bsc->mscs, entry) + msc_close_connection(msc); +} + + static void print_usage(const char *arg) { printf("Usage: %s\n", arg); @@ -139,4 +178,8 @@ void handle_options(int argc, char **argv) break; } } + + signal(SIGPIPE, SIG_IGN); + signal(SIGINT, sigint); + signal(SIGUSR2, sigusr2); } @@ -38,8 +38,6 @@ #include <sys/stat.h> #include <sys/types.h> -#include <signal.h> - static struct log_target *stderr_target; char *config = "cellmgr_ng.cfg"; @@ -48,41 +46,6 @@ struct bsc_data *bsc; extern void cell_vty_init(void); extern void handle_options(int argc, char **argv); -static void sigint() -{ - static pthread_mutex_t exit_mutex = PTHREAD_MUTEX_INITIALIZER; - static int handled = 0; - - struct mtp_link_set *set; - - /* failed to lock */ - if (pthread_mutex_trylock(&exit_mutex) != 0) - return; - if (handled) - goto out; - - printf("Terminating.\n"); - handled = 1; - if (bsc) { - llist_for_each_entry(set, &bsc->linksets, entry) - link_shutdown_all(set); - } - - exit(0); - -out: - pthread_mutex_unlock(&exit_mutex); -} - -static void sigusr2() -{ - struct msc_connection *msc; - printf("Closing the MSC connection on demand.\n"); - - llist_for_each_entry(msc, &bsc->mscs, entry) - msc_close_connection(msc); -} - static void bsc_msc_forward_init(struct msc_connection *msc) { msc->ip = talloc_strdup(msc, "127.0.0.1"); @@ -129,9 +92,6 @@ int main(int argc, char **argv) handle_options(argc, argv); - signal(SIGPIPE, SIG_IGN); - signal(SIGINT, sigint); - signal(SIGUSR2, sigusr2); srand(time(NULL)); cell_vty_init(); diff --git a/src/main_stp.c b/src/main_stp.c index 0901b7c..6af392e 100644 --- a/src/main_stp.c +++ b/src/main_stp.c @@ -70,31 +70,6 @@ struct bsc_data *bsc; extern void cell_vty_init(void); extern void handle_options(int argc, char **argv); -static void sigint() -{ - static pthread_mutex_t exit_mutex = PTHREAD_MUTEX_INITIALIZER; - static int handled = 0; - - struct mtp_link_set *set; - - /* failed to lock */ - if (pthread_mutex_trylock(&exit_mutex) != 0) - return; - if (handled) - goto out; - - printf("Terminating.\n"); - handled = 1; - if (bsc) { - llist_for_each_entry(set, &bsc->linksets, entry) - link_shutdown_all(set); - } - exit(0); - -out: - pthread_mutex_unlock(&exit_mutex); -} - static struct mtp_link_set *find_link_set(struct bsc_data *bsc, int len, const char *buf) { @@ -250,8 +225,6 @@ int main(int argc, char **argv) handle_options(argc, argv); - signal(SIGPIPE, SIG_IGN); - signal(SIGINT, sigint); srand(time(NULL)); cell_vty_init(); @@ -332,6 +305,9 @@ void msc_mgcp_reset(struct msc_connection *msc) void msc_send_reset(struct msc_connection *bsc) { } +void msc_close_connection(struct msc_connection *bsc) +{ +} void app_resources_released(struct ss7_application *ss7) { } |