diff options
Diffstat (limited to 'isisd/isis_main.c')
-rw-r--r-- | isisd/isis_main.c | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/isisd/isis_main.c b/isisd/isis_main.c index 15d85d6d..7bb84d8f 100644 --- a/isisd/isis_main.c +++ b/isisd/isis_main.c @@ -34,7 +34,6 @@ #include "privs.h" #include "sigevent.h" #include "filter.h" -#include "zclient.h" #include "isisd/dict.h" #include "include-netbsd/iso.h" @@ -44,6 +43,9 @@ #include "isisd/isis_circuit.h" #include "isisd/isisd.h" #include "isisd/isis_dynhn.h" +#include "isisd/isis_spf.h" +#include "isisd/isis_route.h" +#include "isisd/isis_zebra.h" /* Default configuration file name */ #define ISISD_DEFAULT_CONFIG "isisd.conf" @@ -67,23 +69,22 @@ struct zebra_privs_t isisd_privs = { .vty_group = VTY_GROUP, #endif .caps_p = _caps_p, - .cap_num_p = 2, + .cap_num_p = sizeof (_caps_p) / sizeof (*_caps_p), .cap_num_i = 0 }; /* isisd options */ struct option longopts[] = { - {"daemon", no_argument, NULL, 'd'}, + {"daemon", no_argument, NULL, 'd'}, {"config_file", required_argument, NULL, 'f'}, - {"pid_file", required_argument, NULL, 'i'}, - {"socket", required_argument, NULL, 'z'}, - {"vty_addr", required_argument, NULL, 'A'}, - {"vty_port", required_argument, NULL, 'P'}, - {"user", required_argument, NULL, 'u'}, - {"group", required_argument, NULL, 'g'}, - {"version", no_argument, NULL, 'v'}, - {"dryrun", no_argument, NULL, 'C'}, - {"help", no_argument, NULL, 'h'}, + {"pid_file", required_argument, NULL, 'i'}, + {"vty_addr", required_argument, NULL, 'A'}, + {"vty_port", required_argument, NULL, 'P'}, + {"user", required_argument, NULL, 'u'}, + {"group", required_argument, NULL, 'g'}, + {"version", no_argument, NULL, 'v'}, + {"dryrun", no_argument, NULL, 'C'}, + {"help", no_argument, NULL, 'h'}, {0} }; @@ -132,7 +133,6 @@ Daemon which manages IS-IS routing\n\n\ -d, --daemon Runs in daemon mode\n\ -f, --config_file Set configuration file name\n\ -i, --pid_file Set process identifier file name\n\ --z, --socket Set path of zebra socket\n\ -A, --vty_addr Set vty's bind address\n\ -P, --vty_port Set vty's port number\n\ -u, --user User to run as\n\ @@ -154,7 +154,10 @@ reload () zlog_debug ("Reload"); /* FIXME: Clean up func call here */ vty_reset (); + (void) isisd_privs.change (ZPRIVS_RAISE); execve (_progpath, _argv, _envp); + zlog_err ("Reload failed: cannot exec %s: %s", _progpath, + safe_strerror (errno)); } static void @@ -249,7 +252,7 @@ main (int argc, char **argv, char **envp) /* Command line argument treatment. */ while (1) { - opt = getopt_long (argc, argv, "df:i:z:hA:p:P:u:g:vC", longopts, 0); + opt = getopt_long (argc, argv, "df:i:hA:p:P:u:g:vC", longopts, 0); if (opt == EOF) break; @@ -267,9 +270,6 @@ main (int argc, char **argv, char **envp) case 'i': pid_file = optarg; break; - case 'z': - zclient_serv_path_set (optarg); - break; case 'A': vty_addr = optarg; break; @@ -325,28 +325,31 @@ main (int argc, char **argv, char **envp) memory_init (); access_list_init(); isis_init (); - dyn_cache_init (); + isis_circuit_init (); + isis_spf_cmds_init (); + + /* create the global 'isis' instance */ + isis_new (1); + + isis_zebra_init (); + sort_node (); /* parse config file */ /* this is needed three times! because we have interfaces before the areas */ vty_read_config (config_file, config_default); - vty_read_config (config_file, config_default); - vty_read_config (config_file, config_default); /* Start execution only if not in dry-run mode */ if (dryrun) return(0); /* demonize */ - if (daemon_mode && daemon (0, 0) < 0) - { - zlog_err("ISISd daemon failed: %s", strerror(errno)); - exit (1); - } + if (daemon_mode) + daemon (0, 0); /* Process ID file creation. */ - pid_output (pid_file); + if (pid_file[0] != '\0') + pid_output (pid_file); /* Make isis vty socket. */ vty_serv_sock (vty_addr, vty_port, ISIS_VTYSH_PATH); |