mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 01:47:29 +00:00
*: Convert over to all -N namespace to change DAEMON_VTY_DIR
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>
This commit is contained in:
parent
3c649c719f
commit
43e587c1d1
@ -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,
|
||||||
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 */
|
unsigned char protocol_group[16]; /* babel's link-local multicast address */
|
||||||
int protocol_port; /* babel's port */
|
int protocol_port; /* babel's port */
|
||||||
|
@ -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([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([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([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])
|
AC_DEFINE_UNQUOTED([DAEMON_DB_DIR], ["$frr_statedir"], [daemon database directory])
|
||||||
|
|
||||||
dnl autoconf does this, but it does it too late...
|
dnl autoconf does this, but it does it too late...
|
||||||
|
40
lib/libfrr.c
40
lib/libfrr.c
@ -46,7 +46,7 @@ DEFINE_KOOH(frr_early_fini, (), ())
|
|||||||
DEFINE_KOOH(frr_fini, (), ())
|
DEFINE_KOOH(frr_fini, (), ())
|
||||||
|
|
||||||
const char frr_sysconfdir[] = SYSCONFDIR;
|
const char frr_sysconfdir[] = SYSCONFDIR;
|
||||||
const char frr_vtydir[] = DAEMON_VTY_DIR;
|
char frr_vtydir[256];
|
||||||
#ifdef HAVE_SQLITE3
|
#ifdef HAVE_SQLITE3
|
||||||
const char frr_dbdir[] = DAEMON_DB_DIR;
|
const char frr_dbdir[] = DAEMON_DB_DIR;
|
||||||
#endif
|
#endif
|
||||||
@ -57,7 +57,7 @@ char frr_protonameinst[256] = "NONE";
|
|||||||
|
|
||||||
char config_default[512];
|
char config_default[512];
|
||||||
char frr_zclientpath[256];
|
char frr_zclientpath[256];
|
||||||
static char pidfile_default[512];
|
static char pidfile_default[1024];
|
||||||
#ifdef HAVE_SQLITE3
|
#ifdef HAVE_SQLITE3
|
||||||
static char dbfile_default[512];
|
static char dbfile_default[512];
|
||||||
#endif
|
#endif
|
||||||
@ -285,6 +285,11 @@ bool frr_zclient_addr(struct sockaddr_storage *sa, socklen_t *sa_len,
|
|||||||
|
|
||||||
static struct frr_daemon_info *di = NULL;
|
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)
|
void frr_preinit(struct frr_daemon_info *daemon, int argc, char **argv)
|
||||||
{
|
{
|
||||||
di = daemon;
|
di = daemon;
|
||||||
@ -307,10 +312,13 @@ void frr_preinit(struct frr_daemon_info *daemon, int argc, char **argv)
|
|||||||
if (di->flags & FRR_DETACH_LATER)
|
if (di->flags & FRR_DETACH_LATER)
|
||||||
nodetach_daemon = true;
|
nodetach_daemon = true;
|
||||||
|
|
||||||
|
frr_init_vtydir();
|
||||||
snprintf(config_default, sizeof(config_default), "%s/%s.conf",
|
snprintf(config_default, sizeof(config_default), "%s/%s.conf",
|
||||||
frr_sysconfdir, di->name);
|
frr_sysconfdir, di->name);
|
||||||
snprintf(pidfile_default, sizeof(pidfile_default), "%s/%s.pid",
|
snprintf(pidfile_default, sizeof(pidfile_default), "%s/%s.pid",
|
||||||
frr_vtydir, di->name);
|
frr_vtydir, di->name);
|
||||||
|
snprintf(frr_zclientpath, sizeof(frr_zclientpath),
|
||||||
|
ZEBRA_SERV_PATH, "", "");
|
||||||
#ifdef HAVE_SQLITE3
|
#ifdef HAVE_SQLITE3
|
||||||
snprintf(dbfile_default, sizeof(dbfile_default), "%s/%s.db",
|
snprintf(dbfile_default, sizeof(dbfile_default), "%s/%s.db",
|
||||||
frr_dbdir, di->name);
|
frr_dbdir, di->name);
|
||||||
@ -398,6 +406,10 @@ static int frr_opt(int opt)
|
|||||||
errors++;
|
errors++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (di->zpathspace)
|
||||||
|
fprintf(stderr,
|
||||||
|
"-N option overriden by -z for zebra named socket path\n");
|
||||||
|
|
||||||
if (strchr(optarg, '/') || strchr(optarg, '.')) {
|
if (strchr(optarg, '/') || strchr(optarg, '.')) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"slashes or dots are not permitted in the --pathspace option.\n");
|
"slashes or dots are not permitted in the --pathspace option.\n");
|
||||||
@ -406,8 +418,13 @@ static int frr_opt(int opt)
|
|||||||
}
|
}
|
||||||
di->pathspace = optarg;
|
di->pathspace = optarg;
|
||||||
|
|
||||||
snprintf(frr_zclientpath, sizeof(frr_zclientpath),
|
if (!di->zpathspace)
|
||||||
ZEBRA_SERV_PATH, "/", di->pathspace);
|
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;
|
break;
|
||||||
#ifdef HAVE_SQLITE3
|
#ifdef HAVE_SQLITE3
|
||||||
case OPTION_DB_FILE:
|
case OPTION_DB_FILE:
|
||||||
@ -427,6 +444,10 @@ static int frr_opt(int opt)
|
|||||||
di->terminal = 1;
|
di->terminal = 1;
|
||||||
break;
|
break;
|
||||||
case 'z':
|
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)
|
if (di->flags & FRR_NO_ZCLIENT)
|
||||||
return 1;
|
return 1;
|
||||||
strlcpy(frr_zclientpath, optarg, sizeof(frr_zclientpath));
|
strlcpy(frr_zclientpath, optarg, sizeof(frr_zclientpath));
|
||||||
@ -513,9 +534,6 @@ int frr_getopt(int argc, char *const argv[], int *longindex)
|
|||||||
int opt;
|
int opt;
|
||||||
int lidx;
|
int lidx;
|
||||||
|
|
||||||
snprintf(frr_zclientpath, sizeof(frr_zclientpath),
|
|
||||||
ZEBRA_SERV_PATH, "", "");
|
|
||||||
|
|
||||||
comb_next_lo->name = NULL;
|
comb_next_lo->name = NULL;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@ -599,8 +617,8 @@ struct thread_master *frr_init(void)
|
|||||||
|
|
||||||
snprintf(config_default, sizeof(config_default), "%s%s%s%s.conf",
|
snprintf(config_default, sizeof(config_default), "%s%s%s%s.conf",
|
||||||
frr_sysconfdir, p_pathspace, di->name, p_instance);
|
frr_sysconfdir, p_pathspace, di->name, p_instance);
|
||||||
snprintf(pidfile_default, sizeof(pidfile_default), "%s/%s%s%s.pid",
|
snprintf(pidfile_default, sizeof(pidfile_default), "%s/%s%s.pid",
|
||||||
frr_vtydir, p_pathspace, di->name, p_instance);
|
frr_vtydir, di->name, p_instance);
|
||||||
#ifdef HAVE_SQLITE3
|
#ifdef HAVE_SQLITE3
|
||||||
snprintf(dbfile_default, sizeof(dbfile_default), "%s/%s%s%s.db",
|
snprintf(dbfile_default, sizeof(dbfile_default), "%s/%s%s%s.db",
|
||||||
frr_dbdir, p_pathspace, di->name, p_instance);
|
frr_dbdir, p_pathspace, di->name, p_instance);
|
||||||
@ -884,9 +902,7 @@ static void frr_vty_serv(void)
|
|||||||
const char *dir;
|
const char *dir;
|
||||||
char defvtydir[256];
|
char defvtydir[256];
|
||||||
|
|
||||||
snprintf(defvtydir, sizeof(defvtydir), "%s%s%s", frr_vtydir,
|
snprintf(defvtydir, sizeof(defvtydir), "%s", frr_vtydir);
|
||||||
di->pathspace ? "/" : "",
|
|
||||||
di->pathspace ? di->pathspace : "");
|
|
||||||
|
|
||||||
dir = di->vty_sock_path ? di->vty_sock_path : defvtydir;
|
dir = di->vty_sock_path ? di->vty_sock_path : defvtydir;
|
||||||
|
|
||||||
|
@ -81,7 +81,10 @@ struct frr_daemon_info {
|
|||||||
#endif
|
#endif
|
||||||
const char *vty_path;
|
const char *vty_path;
|
||||||
const char *module_path;
|
const char *module_path;
|
||||||
|
|
||||||
const char *pathspace;
|
const char *pathspace;
|
||||||
|
bool zpathspace;
|
||||||
|
|
||||||
const char *early_logging;
|
const char *early_logging;
|
||||||
const char *early_loglevel;
|
const char *early_loglevel;
|
||||||
|
|
||||||
@ -120,6 +123,7 @@ struct frr_daemon_info {
|
|||||||
.version = FRR_VERSION, ) \
|
.version = FRR_VERSION, ) \
|
||||||
/* end */
|
/* end */
|
||||||
|
|
||||||
|
extern void frr_init_vtydir(void);
|
||||||
extern void frr_preinit(struct frr_daemon_info *daemon, int argc, char **argv);
|
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,
|
extern void frr_opt_add(const char *optstr, const struct option *longopts,
|
||||||
const char *helpstr);
|
const char *helpstr);
|
||||||
@ -150,7 +154,7 @@ extern void frr_fini(void);
|
|||||||
extern char config_default[512];
|
extern char config_default[512];
|
||||||
extern char frr_zclientpath[256];
|
extern char frr_zclientpath[256];
|
||||||
extern const char frr_sysconfdir[];
|
extern const char frr_sysconfdir[];
|
||||||
extern const char frr_vtydir[];
|
extern char frr_vtydir[256];
|
||||||
extern const char frr_moduledir[];
|
extern const char frr_moduledir[];
|
||||||
|
|
||||||
extern char frr_protoname[];
|
extern char frr_protoname[];
|
||||||
|
@ -332,6 +332,8 @@ int main(int argc, char **argv, char **env)
|
|||||||
progname = ((p = strrchr(argv[0], '/')) ? ++p : argv[0]);
|
progname = ((p = strrchr(argv[0], '/')) ? ++p : argv[0]);
|
||||||
|
|
||||||
strlcpy(sysconfdir, frr_sysconfdir, sizeof(sysconfdir));
|
strlcpy(sysconfdir, frr_sysconfdir, sizeof(sysconfdir));
|
||||||
|
|
||||||
|
frr_init_vtydir();
|
||||||
strlcpy(vtydir, frr_vtydir, sizeof(vtydir));
|
strlcpy(vtydir, frr_vtydir, sizeof(vtydir));
|
||||||
|
|
||||||
/* Option handling. */
|
/* Option handling. */
|
||||||
|
@ -648,7 +648,7 @@ static void daemon_send_ready(int exitcode)
|
|||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
static int sent = 0;
|
static int sent = 0;
|
||||||
char started[512];
|
char started[1024];
|
||||||
|
|
||||||
if (sent)
|
if (sent)
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user