diff --git a/ChangeLog b/ChangeLog
index ab9b67c..c249328 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2004-01-19 Paul Jakma <paul@dishone.st>
+
+	* tests/test-sig.c: New file, regression test for sigevents.
+	* lib/Makefile.am: add sigevent.{c,h}
+	* (isis|rip|ripng|ospf|ospf6|bgp)d/\1_main.c: modify for sigevents.
+	* zebra/main.c: ditto.
+	
 2004-01-10 Paul Jakma <paul@dishone.st>
 
 	* Makefile.am: redhat/ is a dist subdir too.
diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c
index 0472922..effdddd 100644
--- a/bgpd/bgp_main.c
+++ b/bgpd/bgp_main.c
@@ -30,6 +30,7 @@
 #include "prefix.h"
 #include "log.h"
 #include "privs.h"
+#include "sigevent.h"
 
 #include "bgpd/bgpd.h"
 #include "bgpd/bgp_attr.h"
@@ -52,6 +53,27 @@
   { 0 }
 };
 
+/* signal definitions */
+void sighup (void);
+void sigint (void);
+void sigusr1 (void);
+
+struct quagga_signal_t bgp_signals[] = 
+{
+  { 
+    .signal = SIGHUP, 
+    .handler = &sighup,
+  },
+  {
+    .signal = SIGUSR1,
+    .handler = &sigusr1,
+  },
+  {
+    .signal = SIGINT,
+    .handler = &sigint,
+  },
+};
+
 /* Configuration file and directory. */
 char config_current[] = BGP_DEFAULT_CONFIG;
 char config_default[] = SYSCONFDIR BGP_DEFAULT_CONFIG;
@@ -123,7 +145,7 @@
 
 /* SIGHUP handler. */
 void 
-sighup (int sig)
+sighup (void)
 {
   zlog (NULL, LOG_INFO, "SIGHUP received");
 
@@ -143,7 +165,7 @@
 
 /* SIGINT handler. */
 void
-sigint (int sig)
+sigint (void)
 {
   zlog (NULL, LOG_INFO, "Terminating on signal");
 
@@ -155,44 +177,10 @@
 
 /* SIGUSR1 handler. */
 void
-sigusr1 (int sig)
+sigusr1 (void)
 {
   zlog_rotate (NULL);
 }
-
-/* Signale wrapper. */
-RETSIGTYPE *
-signal_set (int signo, void (*func)(int))
-{
-  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, sigint);
-  signal_set (SIGPIPE, SIG_IGN);
-  signal_set (SIGUSR1, sigusr1);
-}
 
 /* Main routine of bgpd. Treatment of argument and start bgp finite
    state machine is handled at here. */
@@ -282,7 +270,7 @@
 
   /* Initializations. */
   srand (time (NULL));
-  signal_init ();
+  signal_init (master, Q_SIGC(bgp_signals), bgp_signals);
   zprivs_init (&bgpd_privs);
   cmd_init (1);
   vty_init (master);
diff --git a/isisd/isis_main.c b/isisd/isis_main.c
index 5681350..51249c5 100644
--- a/isisd/isis_main.c
+++ b/isisd/isis_main.c
@@ -34,6 +34,7 @@
 #include "stream.h"
 #include "if.h"
 #include "privs.h"
+#include "sigevent.h"
 
 #include "isisd/dict.h"
 #include "include-netbsd/iso.h"
@@ -148,8 +149,9 @@
 /*
  * Signal handlers
  */
+
 void 
-sighup (int sig)
+sighup (void)
 {
   zlog_info ("SIGHUP received");
   reload ();
@@ -158,7 +160,7 @@
 }
 
 void
-sigint (int sig)
+sigint (void)
 {
   zlog_info ("SIGINT received");
   terminate (0);
@@ -167,62 +169,38 @@
 }
 
 void
-sigterm (int sig)
+sigterm (void)
 {
   zlog_info ("SIGTERM received");
   terminate (0);
 }
 
 void
-sigusr1 (int sig)
+sigusr1 (void)
 {
   zlog_info ("SIGUSR1 received");
   zlog_rotate (NULL);
 }
 
-/*
- * Signal wrapper. 
- */
-RETSIGTYPE *
-signal_set (int signo, void (*func)(int))
-{
-  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);
-}
-
-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);
-}
+struct quagga_signal_t isisd_signals[] =
+{   
+  { 
+    .signal = SIGHUP,  
+    .handler = &sighup,
+  },
+  {
+    .signal = SIGUSR1,  
+    .handler = &sigusr1,
+  },
+  {
+    .signal = SIGINT,  
+    .handler = &sigint,
+  },
+  {
+    .signal = SIGTERM,
+    .handler = &sigterm,
+  },
+};
 
 /*
  * Main routine of isisd. Parse arguments and handle IS-IS state machine.
@@ -315,7 +293,7 @@
    *  initializations
    */
   zprivs_init (&isisd_privs);
-  signal_init ();
+  signal_init (master, Q_SIGC(isisd_signals), isisd_signals);
   cmd_init (1);
   vty_init (master);
   memory_init ();
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 391c2b7..d8621c5 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -10,7 +10,8 @@
 	print_version.c checksum.c vector.c linklist.c vty.c command.c \
 	sockunion.c prefix.c thread.c if.c memory.c buffer.c table.c hash.c \
 	filter.c routemap.c distribute.c stream.c str.c log.c plist.c \
-	zclient.c sockopt.c smux.c md5.c if_rmap.c keychain.c privs.c debug.c
+	zclient.c sockopt.c smux.c md5.c if_rmap.c keychain.c privs.c \
+	debug.c sigevent.c
 
 libzebra_a_DEPENDENCIES = @LIB_REGEX@
 
@@ -21,7 +22,7 @@
 	memory.h network.h prefix.h routemap.h distribute.h sockunion.h \
 	str.h stream.h table.h thread.h vector.h version.h vty.h zebra.h \
 	plist.h zclient.h sockopt.h smux.h md5-gnu.h if_rmap.h keychain.h \
-	privs.h debug.h
+	privs.h debug.h sigevent.h
 
 EXTRA_DIST = regex.c regex-gnu.h
 
diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c
index 51fa7b5..3f1e4fd 100644
--- a/ospfd/ospf_main.c
+++ b/ospfd/ospf_main.c
@@ -38,6 +38,7 @@
 #include "memory.h"
 #include "privs.h"
 #include "debug.h"
+#include "sigevent.h"
 
 #include "ospfd/ospfd.h"
 #include "ospfd/ospf_interface.h"
@@ -125,14 +126,14 @@
 
 /* SIGHUP handler. */
 void 
-sighup (int sig)
+sighup (void)
 {
   zlog (NULL, LOG_INFO, "SIGHUP received");
 }
 
 /* SIGINT handler. */
 void
-sigint (int sig)
+sigint (void)
 {
   zlog (NULL, LOG_INFO, "Terminating on signal");
 
@@ -143,58 +144,26 @@
 
 /* SIGUSR1 handler. */
 void
-sigusr1 (int sig)
+sigusr1 (void)
 {
   zlog_rotate (NULL);
 }
 
-/* Signal wrapper. */
-RETSIGTYPE *
-signal_set (int signo, void (*func)(int))
+struct quagga_signal_t ospf_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, sigint);
-  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);
-#ifdef HAVE_GLIBC_BACKTRACE
-  signal_set (SIGBUS, debug_print_trace);
-  signal_set (SIGSEGV, debug_print_trace);
-  signal_set (SIGILL, debug_print_trace); 
-#endif /* HAVE_GLIBC_BACKTRACE */
-}
+  {
+    .signal = SIGHUP,
+    .handler = &sighup,
+  },
+  {
+    .signal = SIGUSR1,
+    .handler = &sigusr1,
+  },  
+  {
+    .signal = SIGINT,
+    .handler = &sigint,
+  },
+};
 
 /* OSPFd main routine. */
 int
@@ -285,7 +254,7 @@
 
   /* Library inits. */
   zprivs_init (&ospfd_privs);
-  signal_init ();
+  signal_init (master, Q_SIGC(ospf_signals), ospf_signals);
   cmd_init (1);
   debug_init ();
   vty_init (master);
diff --git a/ripd/rip_main.c b/ripd/rip_main.c
index a87e3b7..8b0d216 100644
--- a/ripd/rip_main.c
+++ b/ripd/rip_main.c
@@ -31,6 +31,7 @@
 #include "keychain.h"
 #include "log.h"
 #include "privs.h"
+#include "sigevent.h"
 
 #include "ripd/ripd.h"
 
@@ -120,32 +121,9 @@
   exit (status);
 }
 
-/* Signale wrapper. */
-RETSIGTYPE *
-signal_set (int signo, void (*func)(int))
-{
-  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);
-}
-
 /* SIGHUP handler. */
 void 
-sighup (int sig)
+sighup (void)
 {
   zlog_info ("SIGHUP received");
   rip_clean ();
@@ -163,7 +141,7 @@
 
 /* SIGINT handler. */
 void
-sigint (int sig)
+sigint (void)
 {
   zlog (NULL, LOG_INFO, "Terminating on signal");
 
@@ -175,21 +153,26 @@
 
 /* SIGUSR1 handler. */
 void
-sigusr1 (int sig)
+sigusr1 (void)
 {
   zlog_rotate (NULL);
 }
 
-/* Initialization of signal handles. */
-void
-signal_init ()
+struct quagga_signal_t ripd_signals[] =
 {
-  signal_set (SIGHUP, sighup);
-  signal_set (SIGINT, sigint);
-  signal_set (SIGTERM, sigint);
-  signal_set (SIGPIPE, SIG_IGN);
-  signal_set (SIGUSR1, sigusr1);
-}
+  { 
+    .signal = SIGHUP,
+    .handler = &sighup,
+  },
+  { 
+    .signal = SIGUSR1,
+    .handler = &sigusr1,
+  },
+  {
+    .signal = SIGINT,
+    .handler = &sigusr1,
+  },
+};  
 
 /* Main routine of ripd. */
 int
@@ -271,7 +254,7 @@
 
   /* Library initialization. */
   zprivs_init (&ripd_privs);
-  signal_init ();
+  signal_init (master, Q_SIGC(ripd_signals), ripd_signals);
   cmd_init (1);
   vty_init (master);
   memory_init ();
diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c
index 9b76267..3beb227 100644
--- a/ripngd/ripng_main.c
+++ b/ripngd/ripng_main.c
@@ -33,6 +33,7 @@
 #include "prefix.h"
 #include "if.h"
 #include "privs.h"
+#include "sigevent.h"
 
 #include "ripngd/ripngd.h"
 
@@ -126,7 +127,7 @@
 
 /* SIGHUP handler. */
 void 
-sighup (int sig)
+sighup (void)
 {
   zlog_info ("SIGHUP received");
   ripng_clean ();
@@ -143,7 +144,7 @@
 
 /* SIGINT handler. */
 void
-sigint (int sig)
+sigint (void)
 {
   zlog_info ("Terminating on signal");
 
@@ -155,44 +156,26 @@
 
 /* SIGUSR1 handler. */
 void
-sigusr1 (int sig)
+sigusr1 (void)
 {
   zlog_rotate (NULL);
 }
 
-/* Signale wrapper. */
-RETSIGTYPE *
-signal_set (int signo, void (*func)(int))
+struct quagga_signal_t ripng_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, sigint);
-  signal_set (SIGPIPE, SIG_IGN);
-  signal_set (SIGUSR1, sigusr1);
-}
+  { 
+    .signal = SIGHUP, 
+    .handler = &sighup,
+  },
+  {
+    .signal = SIGUSR1,
+    .handler = &sigusr1,
+  },
+  {
+    .signal = SIGINT,
+    .handler = &sigint,
+  },
+};
 
 /* RIPngd main routine. */
 int
@@ -275,7 +258,7 @@
 
   /* Library inits. */
   zprivs_init (&ripngd_privs);
-  signal_init ();
+  signal_init (master, Q_SIGC(ripng_signals), ripng_signals);
   cmd_init (1);
   vty_init (master);
   memory_init ();
diff --git a/zebra/main.c b/zebra/main.c
index 98227ea..a66734c 100644
--- a/zebra/main.c
+++ b/zebra/main.c
@@ -30,6 +30,7 @@
 #include "prefix.h"
 #include "log.h"
 #include "privs.h"
+#include "sigevent.h"
 
 #include "zebra/rib.h"
 #include "zebra/zserv.h"
@@ -131,7 +132,7 @@
 
 /* SIGHUP handler. */
 void 
-sighup (int sig)
+sighup (void)
 {
   zlog_info ("SIGHUP received");
 
@@ -141,7 +142,7 @@
 
 /* SIGINT handler. */
 void
-sigint (int sig)
+sigint (void)
 {
   /* Decrared in rib.c */
   void rib_close ();
@@ -156,44 +157,26 @@
 
 /* SIGUSR1 handler. */
 void
-sigusr1 (int sig)
+sigusr1 (void)
 {
   zlog_rotate (NULL);
 }
 
-/* Signale wrapper. */
-RETSIGTYPE *
-signal_set (int signo, void (*func)(int))
+struct quagga_signal_t zebra_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, sigint);
-  signal_set (SIGPIPE, SIG_IGN);
-  signal_set (SIGUSR1, sigusr1);
-}
+  { 
+    .signal = SIGHUP, 
+    .handler = &sighup,
+  },
+  {
+    .signal = SIGUSR1,
+    .handler = &sigusr1,
+  },
+  {
+    .signal = SIGINT,
+    .handler = &sigusr1,
+  },
+};
 
 /* Main startup routine. */
 int
@@ -289,7 +272,7 @@
   zprivs_init (&zserv_privs);
 
   /* Vty related initialize. */
-  signal_init ();
+  signal_init (zebrad.master, Q_SIGC(zebra_signals), zebra_signals);
   cmd_init (1);
   vty_init (zebrad.master);
   memory_init ();
