]> git.proxmox.com Git - mirror_frr.git/blobdiff - isisd/isis_main.c
isisd: implement sighup handler
[mirror_frr.git] / isisd / isis_main.c
index 4d6a6da5d602b2b883d4b0ba75055a22bf3d70da..9126e40d4233a0fd0d1dbbe47975cbc929812ecd 100644 (file)
 #include "isisd/isis_te.h"
 #include "isisd/isis_errors.h"
 #include "isisd/isis_vty_common.h"
+#include "isisd/isis_bfd.h"
+#include "isisd/isis_lsp.h"
+#include "isisd/isis_mt.h"
+#include "isisd/fabricd.h"
 
 /* Default configuration file name */
 #define ISISD_DEFAULT_CONFIG "isisd.conf"
@@ -103,12 +107,23 @@ static __attribute__((__noreturn__)) void terminate(int i)
 /*
  * Signal handlers
  */
-
+#ifdef FABRICD
 void sighup(void)
 {
-       zlog_notice("SIGHUP/reload is not implemented for isisd");
+       zlog_notice("SIGHUP/reload is not implemented for fabricd");
        return;
 }
+#else
+static struct frr_daemon_info isisd_di;
+void sighup(void)
+{
+       zlog_info("SIGHUP received");
+
+       /* Reload config file. */
+       vty_read_config(NULL, isisd_di.config_file, config_default);
+}
+
+#endif
 
 __attribute__((__noreturn__)) void sigint(void)
 {
@@ -147,6 +162,14 @@ struct quagga_signal_t isisd_signals[] = {
        },
 };
 
+
+static const struct frr_yang_module_info *isisd_yang_modules[] = {
+       &frr_interface_info,
+#ifndef FABRICD
+       &frr_isisd_info,
+#endif /* ifndef FABRICD */
+};
+
 #ifdef FABRICD
 FRR_DAEMON_INFO(fabricd, OPEN_FABRIC, .vty_port = FABRICD_VTY_PORT,
 
@@ -163,7 +186,8 @@ FRR_DAEMON_INFO(isisd, ISIS, .vty_port = ISISD_VTY_PORT,
                .signals = isisd_signals,
                .n_signals = array_size(isisd_signals),
 
-               .privs = &isisd_privs, )
+               .privs = &isisd_privs, .yang_modules = isisd_yang_modules,
+               .n_yang_modules = array_size(isisd_yang_modules), )
 
 /*
  * Main routine of isisd. Parse arguments and handle IS-IS state machine.
@@ -195,7 +219,6 @@ int main(int argc, char **argv, char **envp)
                }
        }
 
-       vty_config_lockless();
        /* thread master */
        master = frr_init();
 
@@ -209,15 +232,22 @@ int main(int argc, char **argv, char **envp)
        isis_init();
        isis_circuit_init();
        isis_vty_init();
+#ifndef FABRICD
+       isis_cli_init();
+#endif /* ifdef FABRICD */
        isis_spf_cmds_init();
        isis_redist_init();
        isis_route_map_init();
        isis_mpls_te_init();
+       lsp_init();
+       mt_init();
 
        /* create the global 'isis' instance */
        isis_new(1);
 
        isis_zebra_init(master);
+       isis_bfd_init();
+       fabricd_init();
 
        frr_config_fork();
        frr_run(master);