]> git.proxmox.com Git - mirror_frr.git/commitdiff
ldpd: Allow for -N <namespace> to influence location of LDPD_SOCKET
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 30 May 2019 23:23:15 +0000 (19:23 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 4 Jun 2019 14:37:19 +0000 (10:37 -0400)
If --ctl_socket is used this will override any other option and will
be used

If -N <namespace> is used, then we will setup the LDPD_SOCKET
in $frr_statedir/<namespace>/ldpd.sock

If neither option is used, then we will use $frr_statedir/ldpd.sock

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
configure.ac
ldpd/ldpd.c

index 5d17071fb320ad25df3a48fac02390dd02f95c09..631d847b91648b7a96c37800bd24071085bd6b27 100755 (executable)
@@ -2202,7 +2202,7 @@ fi
 AC_MSG_RESULT([${frr_statedir}])
 AC_SUBST([frr_statedir])
 
-AC_DEFINE_UNQUOTED([LDPD_SOCKET], ["$frr_statedir/ldpd.sock"], [ldpd control socket])
+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])
index 771d3b7459a0ce97521e3151b7872a2f63ca8a1a..5aaa2ec3253d53a1a1c38e553d2b10dad166c70c 100644 (file)
@@ -116,7 +116,7 @@ struct zebra_privs_t ldpd_privs =
 };
 
 /* CTL Socket path */
-char ctl_sock_path[MAXPATHLEN] = LDPD_SOCKET;
+char ctl_sock_path[MAXPATHLEN];
 
 /* LDPd options. */
 #define OPTION_CTLSOCK 1001
@@ -219,6 +219,10 @@ main(int argc, char *argv[])
        int                      pipe_parent2lde[2], pipe_parent2lde_sync[2];
        char                    *ctl_sock_name;
        struct thread           *thread = NULL;
+       bool                    ctl_sock_used = false;
+
+       snprintf(ctl_sock_path, sizeof(ctl_sock_path), LDPD_SOCKET,
+                "", "");
 
        ldpd_process = PROC_MAIN;
        log_procname = log_procnames[ldpd_process];
@@ -244,6 +248,7 @@ main(int argc, char *argv[])
                case 0:
                        break;
                case OPTION_CTLSOCK:
+                       ctl_sock_used = true;
                        ctl_sock_name = strrchr(LDPD_SOCKET, '/');
                        if (ctl_sock_name)
                                /* skip '/' */
@@ -277,6 +282,10 @@ main(int argc, char *argv[])
                }
        }
 
+       if (ldpd_di.pathspace && !ctl_sock_used)
+               snprintf(ctl_sock_path, sizeof(ctl_sock_path), LDPD_SOCKET,
+                        "/", ldpd_di.pathspace);
+
        strlcpy(init.user, ldpd_privs.user, sizeof(init.user));
        strlcpy(init.group, ldpd_privs.group, sizeof(init.group));
        strlcpy(init.ctl_sock_path, ctl_sock_path, sizeof(init.ctl_sock_path));