diff options
author | hasso <hasso> | 2004-08-28 17:04:33 +0000 |
---|---|---|
committer | hasso <hasso> | 2004-08-28 17:04:33 +0000 |
commit | e42f5a37462b22c49235f04a3b582b97c1deb84c (patch) | |
tree | 830ca9ab54224b7aac003c11b9c209472ddff860 /ospf6d/ospf6_main.c | |
parent | 69f1fc22f70b4baed62582cbaaefaf374665791c (diff) |
Port ospf6d to sigevent and rename signal handling functions in vtysh not to
conflict the ones in lib/sigevent.c. Fixes compiling with --disable-shared.
Diffstat (limited to 'ospf6d/ospf6_main.c')
-rw-r--r-- | ospf6d/ospf6_main.c | 70 |
1 files changed, 24 insertions, 46 deletions
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c index 2a0b2dc9..b5e64033 100644 --- a/ospf6d/ospf6_main.c +++ b/ospf6d/ospf6_main.c @@ -33,6 +33,7 @@ #include "prefix.h" #include "plist.h" #include "privs.h" +#include "sigevent.h" #include "ospf6d.h" @@ -119,14 +120,14 @@ Report bugs to zebra@zebra.org\n", progname); /* SIGHUP handler. */ void -sighup (int sig) +sighup (void) { zlog_info ("SIGHUP received"); } /* SIGINT handler. */ void -sigint (int sig) +sigint (void) { zlog_info ("SIGINT received"); exit (0); @@ -134,7 +135,7 @@ sigint (int sig) /* SIGTERM handler. */ void -sigterm (int sig) +sigterm (void) { zlog_info ("SIGTERM received"); exit (0); @@ -142,54 +143,31 @@ sigterm (int sig) /* SIGUSR1 handler. */ void -sigusr1 (int sig) +sigusr1 (void) { zlog_info ("SIGUSR1 received"); zlog_rotate (NULL); } -/* Signale wrapper. */ -RETSIGTYPE * -signal_set (int signo, void (*func)(int)) +struct quagga_signal_t ospf6_signals[] = { - int ret; - struct sigaction sig; - struct sigaction osig; - - sig.sa_handler = func; - sigemptyset (&sig.sa_mask); - sig.sa_flags = 0; -#ifdef SA_RESTART - sig.sa_flags |= SA_RESTART; -#endif /* SA_RESTART */ - - ret = sigaction (signo, &sig, &osig); - - if (ret < 0) - return (SIG_ERR); - else - return (osig.sa_handler); -} - -/* Initialization of signal handles. */ -void -signal_init () -{ - signal_set (SIGHUP, sighup); - signal_set (SIGINT, sigint); - signal_set (SIGTERM, sigterm); - signal_set (SIGPIPE, SIG_IGN); -#ifdef SIGTSTP - signal_set (SIGTSTP, SIG_IGN); -#endif -#ifdef SIGTTIN - signal_set (SIGTTIN, SIG_IGN); -#endif -#ifdef SIGTTOU - signal_set (SIGTTOU, SIG_IGN); -#endif - signal_set (SIGUSR1, sigusr1); -} + { + .signal = SIGHUP, + .handler = &sighup, + }, + { + .signal = SIGINT, + .handler = &sigint, + }, + { + .signal = SIGTERM, + .handler = &sigterm, + }, + { + .signal = SIGUSR1, + .handler = &sigusr1, + }, +}; /* Main routine of ospf6d. Treatment of argument and starting ospf finite state machine is handled here. */ @@ -275,7 +253,7 @@ main (int argc, char *argv[], char *envp[]) LOG_DAEMON); zprivs_init (&ospf6d_privs); /* initialize zebra libraries */ - signal_init (); + signal_init (master, Q_SIGC(ospf6_signals), ospf6_signals); cmd_init (1); vty_init (master); memory_init (); |