#include "prefix.h"
#include "plist.h"
#include "privs.h"
+#include "sigevent.h"
#include "ospf6d.h"
/* 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);
/* SIGTERM handler. */
void
-sigterm (int sig)
+sigterm (void)
{
zlog_info ("SIGTERM received");
exit (0);
/* 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. */
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 ();
+2004-08-28 Hasso Tepper <hasso at quagga.net>
+
+ * vtysh_main.c: Rename signal handling functions not to conflict
+ with functions from lib/sigevent.c.
+
2004-08-27 Hasso Tepper <hasso at quagga.net>
* vtysh.c: Make "terminal length <0-512>" command work in vtysh.
}
}
-/* 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;
/* 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. */
line_read = NULL;
/* Signal and others. */
- signal_init ();
+ vtysh_signal_init ();
/* Make vty structure and register commands. */
vtysh_init_vty ();