aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2011-02-17 00:00:55 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2011-02-17 19:34:28 +0100
commit5cd45e16ef243b8f22edf2ec4b6794a235817578 (patch)
tree25a9caf5355d2471c6662a39acddf280883f848d
parent2d4891ff8cbf3cf139a0e15db5b259930041f913 (diff)
bsc: Move the signal handling code over to the bsc.c
-rw-r--r--src/bsc.c43
-rw-r--r--src/main.c40
-rw-r--r--src/main_stp.c30
3 files changed, 46 insertions, 67 deletions
diff --git a/src/bsc.c b/src/bsc.c
index 090f17e..50745b0 100644
--- a/src/bsc.c
+++ b/src/bsc.c
@@ -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);
}
diff --git a/src/main.c b/src/main.c
index 07881ef..825eb8c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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)
{
}