]> git.puffer.fish Git - mirror/frr.git/commitdiff
*: Convert over to all -N namespace to change DAEMON_VTY_DIR
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 30 May 2019 23:55:26 +0000 (19:55 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 4 Jun 2019 23:52:46 +0000 (19:52 -0400)
When the user specifies -N namespace allow it to influence the
frr_vtydir(DAEMON_VTY_DIR) to have namespace in it's path
like so: $frrstate_dir/<namespace>

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
babeld/babel_main.c
configure.ac
lib/libfrr.c
lib/libfrr.h
vtysh/vtysh_main.c
watchfrr/watchfrr.c

index 6e2d4ecea0421c929dd368980ebe3c192b22684c..a3f2b4e7d846457bdd80fee08e68913aec3aa767 100644 (file)
@@ -68,7 +68,7 @@ const unsigned char ones[16] =
     {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
 
-static char state_file[512];
+static char state_file[1024];
 
 unsigned char protocol_group[16]; /* babel's link-local multicast address */
 int protocol_port;                /* babel's port */
index 631d847b91648b7a96c37800bd24071085bd6b27..e94cb541ec1f1906c634ec288b6b563eddb9e415 100755 (executable)
@@ -2205,7 +2205,7 @@ AC_SUBST([frr_statedir])
 AC_DEFINE_UNQUOTED([LDPD_SOCKET], ["$frr_statedir%s%s/ldpd.sock"], [ldpd control socket])
 AC_DEFINE_UNQUOTED([ZEBRA_SERV_PATH], ["$frr_statedir%s%s/zserv.api"], [zebra api socket])
 AC_DEFINE_UNQUOTED([BFDD_CONTROL_SOCKET], ["$frr_statedir%s%s/bfdd.sock"], [bfdd control socket])
-AC_DEFINE_UNQUOTED([DAEMON_VTY_DIR], ["$frr_statedir"], [daemon vty directory])
+AC_DEFINE_UNQUOTED([DAEMON_VTY_DIR], ["$frr_statedir%s%s"], [daemon vty directory])
 AC_DEFINE_UNQUOTED([DAEMON_DB_DIR], ["$frr_statedir"], [daemon database directory])
 
 dnl autoconf does this, but it does it too late...
index ae33609d9ea0bc0e8a9e748e1c3238e197117b1d..ed784fc73a18a0c52575a2d0724475d2754d5471 100644 (file)
@@ -46,7 +46,7 @@ DEFINE_KOOH(frr_early_fini, (), ())
 DEFINE_KOOH(frr_fini, (), ())
 
 const char frr_sysconfdir[] = SYSCONFDIR;
-const char frr_vtydir[] = DAEMON_VTY_DIR;
+char frr_vtydir[256];
 #ifdef HAVE_SQLITE3
 const char frr_dbdir[] = DAEMON_DB_DIR;
 #endif
@@ -57,7 +57,7 @@ char frr_protonameinst[256] = "NONE";
 
 char config_default[512];
 char frr_zclientpath[256];
-static char pidfile_default[512];
+static char pidfile_default[1024];
 #ifdef HAVE_SQLITE3
 static char dbfile_default[512];
 #endif
@@ -285,6 +285,11 @@ bool frr_zclient_addr(struct sockaddr_storage *sa, socklen_t *sa_len,
 
 static struct frr_daemon_info *di = NULL;
 
+void frr_init_vtydir(void)
+{
+       snprintf(frr_vtydir, sizeof(frr_vtydir), DAEMON_VTY_DIR, "", "");
+}
+
 void frr_preinit(struct frr_daemon_info *daemon, int argc, char **argv)
 {
        di = daemon;
@@ -307,10 +312,13 @@ void frr_preinit(struct frr_daemon_info *daemon, int argc, char **argv)
        if (di->flags & FRR_DETACH_LATER)
                nodetach_daemon = true;
 
+       frr_init_vtydir();
        snprintf(config_default, sizeof(config_default), "%s/%s.conf",
                 frr_sysconfdir, di->name);
        snprintf(pidfile_default, sizeof(pidfile_default), "%s/%s.pid",
                 frr_vtydir, di->name);
+       snprintf(frr_zclientpath, sizeof(frr_zclientpath),
+                ZEBRA_SERV_PATH, "", "");
 #ifdef HAVE_SQLITE3
        snprintf(dbfile_default, sizeof(dbfile_default), "%s/%s.db",
                 frr_dbdir, di->name);
@@ -398,6 +406,10 @@ static int frr_opt(int opt)
                        errors++;
                        break;
                }
+               if (di->zpathspace)
+                       fprintf(stderr,
+                               "-N option overriden by -z for zebra named socket path\n");
+
                if (strchr(optarg, '/') || strchr(optarg, '.')) {
                        fprintf(stderr,
                                "slashes or dots are not permitted in the --pathspace option.\n");
@@ -406,8 +418,13 @@ static int frr_opt(int opt)
                }
                di->pathspace = optarg;
 
-               snprintf(frr_zclientpath, sizeof(frr_zclientpath),
-                        ZEBRA_SERV_PATH, "/", di->pathspace);
+               if (!di->zpathspace)
+                       snprintf(frr_zclientpath, sizeof(frr_zclientpath),
+                                ZEBRA_SERV_PATH, "/", di->pathspace);
+               snprintf(frr_vtydir, sizeof(frr_vtydir), DAEMON_VTY_DIR, "/",
+                        di->pathspace);
+               snprintf(pidfile_default, sizeof(pidfile_default), "%s/%s.pid",
+                        frr_vtydir, di->name);
                break;
 #ifdef HAVE_SQLITE3
        case OPTION_DB_FILE:
@@ -427,6 +444,10 @@ static int frr_opt(int opt)
                di->terminal = 1;
                break;
        case 'z':
+               di->zpathspace = true;
+               if (di->pathspace)
+                       fprintf(stderr,
+                               "-z option overrides -N option for zebra named socket path\n");
                if (di->flags & FRR_NO_ZCLIENT)
                        return 1;
                strlcpy(frr_zclientpath, optarg, sizeof(frr_zclientpath));
@@ -513,9 +534,6 @@ int frr_getopt(int argc, char *const argv[], int *longindex)
        int opt;
        int lidx;
 
-       snprintf(frr_zclientpath, sizeof(frr_zclientpath),
-                ZEBRA_SERV_PATH, "", "");
-
        comb_next_lo->name = NULL;
 
        do {
@@ -599,8 +617,8 @@ struct thread_master *frr_init(void)
 
        snprintf(config_default, sizeof(config_default), "%s%s%s%s.conf",
                 frr_sysconfdir, p_pathspace, di->name, p_instance);
-       snprintf(pidfile_default, sizeof(pidfile_default), "%s/%s%s%s.pid",
-                frr_vtydir, p_pathspace, di->name, p_instance);
+       snprintf(pidfile_default, sizeof(pidfile_default), "%s/%s%s.pid",
+                frr_vtydir, di->name, p_instance);
 #ifdef HAVE_SQLITE3
        snprintf(dbfile_default, sizeof(dbfile_default), "%s/%s%s%s.db",
                 frr_dbdir, p_pathspace, di->name, p_instance);
@@ -884,9 +902,7 @@ static void frr_vty_serv(void)
                const char *dir;
                char defvtydir[256];
 
-               snprintf(defvtydir, sizeof(defvtydir), "%s%s%s", frr_vtydir,
-                        di->pathspace ? "/" : "",
-                        di->pathspace ? di->pathspace : "");
+               snprintf(defvtydir, sizeof(defvtydir), "%s", frr_vtydir);
 
                dir = di->vty_sock_path ? di->vty_sock_path : defvtydir;
 
index d17495e04a8dc410a34b8dbd6d2f5380bba93e3f..e2b3db74a3f762f292b6fa163c40a75765de286c 100644 (file)
@@ -81,7 +81,10 @@ struct frr_daemon_info {
 #endif
        const char *vty_path;
        const char *module_path;
+
        const char *pathspace;
+       bool zpathspace;
+
        const char *early_logging;
        const char *early_loglevel;
 
@@ -120,6 +123,7 @@ struct frr_daemon_info {
                          .version = FRR_VERSION, )                            \
 /* end */
 
+extern void frr_init_vtydir(void);
 extern void frr_preinit(struct frr_daemon_info *daemon, int argc, char **argv);
 extern void frr_opt_add(const char *optstr, const struct option *longopts,
                        const char *helpstr);
@@ -150,7 +154,7 @@ extern void frr_fini(void);
 extern char config_default[512];
 extern char frr_zclientpath[256];
 extern const char frr_sysconfdir[];
-extern const char frr_vtydir[];
+extern char frr_vtydir[256];
 extern const char frr_moduledir[];
 
 extern char frr_protoname[];
index 2e4510a45a876be3442567017e82e3e6bf356ad9..96674601891568b01f9e3bd0d53960df9b6f9ab1 100644 (file)
@@ -332,6 +332,8 @@ int main(int argc, char **argv, char **env)
        progname = ((p = strrchr(argv[0], '/')) ? ++p : argv[0]);
 
        strlcpy(sysconfdir, frr_sysconfdir, sizeof(sysconfdir));
+
+       frr_init_vtydir();
        strlcpy(vtydir, frr_vtydir, sizeof(vtydir));
 
        /* Option handling. */
index f0ce88a5b30973e8718561e80dfc3c8fcf94e874..1cc7722f4f7170bb8d89dbf4f2159f46c5f07fea 100644 (file)
@@ -648,7 +648,7 @@ static void daemon_send_ready(int exitcode)
 {
        FILE *fp;
        static int sent = 0;
-       char started[512];
+       char started[1024];
 
        if (sent)
                return;