From e42f5a37462b22c49235f04a3b582b97c1deb84c Mon Sep 17 00:00:00 2001 From: hasso Date: Sat, 28 Aug 2004 17:04:33 +0000 Subject: 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. --- ospf6d/ChangeLog | 4 +++ ospf6d/ospf6_main.c | 70 ++++++++++++++++++----------------------------------- vtysh/ChangeLog | 5 ++++ vtysh/vtysh_main.c | 15 ++++++------ 4 files changed, 41 insertions(+), 53 deletions(-) diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog index 0d5ea9af..b9181d0d 100644 --- a/ospf6d/ChangeLog +++ b/ospf6d/ChangeLog @@ -1,3 +1,7 @@ +2004-08-28 Hasso Tepper + + * ospf6_main.c: Modify for sigevents. + 2004-08-26 Hasso Tepper * ospf6_interface.c, ospf6_top.c, ospf6d.c: for vtysh. 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 (); diff --git a/vtysh/ChangeLog b/vtysh/ChangeLog index aab737b3..0dbcb0d7 100644 --- a/vtysh/ChangeLog +++ b/vtysh/ChangeLog @@ -1,3 +1,8 @@ +2004-08-28 Hasso Tepper + + * vtysh_main.c: Rename signal handling functions not to conflict + with functions from lib/sigevent.c. + 2004-08-27 Hasso Tepper * vtysh.c: Make "terminal length <0-512>" command work in vtysh. diff --git a/vtysh/vtysh_main.c b/vtysh/vtysh_main.c index e862efd6..223f0c6e 100644 --- a/vtysh/vtysh_main.c +++ b/vtysh/vtysh_main.c @@ -99,9 +99,10 @@ sigint (int sig) } } -/* Signale wrapper. */ +/* Signale wrapper for vtysh. We don't use sigevent because + * vtysh doesn't use threads. TODO */ RETSIGTYPE * -signal_set (int signo, void (*func)(int)) +vtysh_signal_set (int signo, void (*func)(int)) { int ret; struct sigaction sig; @@ -124,11 +125,11 @@ signal_set (int signo, void (*func)(int)) /* Initialization of signal handles. */ void -signal_init () +vtysh_signal_init () { - signal_set (SIGINT, sigint); - signal_set (SIGTSTP, sigtstp); - signal_set (SIGPIPE, SIG_IGN); + vtysh_signal_set (SIGINT, sigint); + vtysh_signal_set (SIGTSTP, sigtstp); + vtysh_signal_set (SIGPIPE, SIG_IGN); } /* Help information display. */ @@ -243,7 +244,7 @@ main (int argc, char **argv, char **env) line_read = NULL; /* Signal and others. */ - signal_init (); + vtysh_signal_init (); /* Make vty structure and register commands. */ vtysh_init_vty (); -- cgit v1.2.1