Ripngd part of 6Wind patch.
diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c
index 3a7ed4a..44c3876 100644
--- a/ripngd/ripng_main.c
+++ b/ripngd/ripng_main.c
@@ -27,6 +27,7 @@
#include "vector.h"
#include "vty.h"
#include "command.h"
+#include "memory.h"
#include "thread.h"
#include "log.h"
#include "prefix.h"
@@ -37,6 +38,7 @@
/* Configuration filename and directory. */
char config_current[] = RIPNG_DEFAULT_CONFIG;
char config_default[] = SYSCONFDIR RIPNG_DEFAULT_CONFIG;
+char *config_file = NULL;
/* RIPngd options. */
struct option longopts[] =
@@ -58,6 +60,12 @@
/* Route retain mode flag. */
int retain_mode = 0;
+/* RIPng VTY bind address. */
+char *vty_addr = NULL;
+
+/* RIPng VTY connection port. */
+int vty_port = RIPNG_VTY_PORT;
+
/* Master of threads. */
struct thread_master *master;
@@ -93,17 +101,27 @@
void
sighup (int sig)
{
- zlog (NULL, LOG_INFO, "SIGHUP received");
+ zlog_info ("SIGHUP received");
+ ripng_clean ();
+ ripng_reset ();
+ zlog_info ("Terminating on signal");
+
+ /* Reload config file. */
+ vty_read_config (config_file, config_current, config_default);
+ /* Create VTY's socket */
+ vty_serv_sock (vty_addr, vty_port, RIPNG_VTYSH_PATH);
+
+ /* Try to return to normal operation. */
}
/* SIGINT handler. */
void
sigint (int sig)
{
- zlog (NULL, LOG_INFO, "Terminating on signal");
+ zlog_info ("Terminating on signal");
if (! retain_mode)
- ripng_terminate ();
+ ripng_clean ();
exit (0);
}
@@ -154,10 +172,8 @@
main (int argc, char **argv)
{
char *p;
- char *vty_addr = NULL;
int vty_port = RIPNG_VTY_PORT;
int daemon_mode = 0;
- char *config_file = NULL;
char *progname;
struct thread thread;
@@ -231,10 +247,14 @@
signal_init ();
cmd_init (1);
vty_init ();
+ memory_init ();
/* RIPngd inits. */
ripng_init ();
zebra_init ();
+ ripng_peer_init ();
+
+ /* Sort all installed commands. */
sort_node ();
/* Get configuration file. */