summaryrefslogtreecommitdiff
path: root/zebra
diff options
context:
space:
mode:
authorVyacheslav Trushkin <me@dogonthesun.net>2011-11-25 18:51:48 +0400
committerDenis Ovsienko <infrastation@yandex.ru>2011-12-13 14:26:28 +0400
commitb51146856e660bcec723f535c17dc1c38b2f6efc (patch)
tree8f501c98b3714e1d5ed381bd4d82fece4106aa8c /zebra
parent2f658673fa477b58ed38caf94c156c95948de382 (diff)
quagga: option "-z" ("--socket <path>") added
All daemons modified to support custom path to zserv socket. lib: generalize a zclient connection zclient_socket_connect added. zclient_socket and zclient_socket_un were hidden under static expression. "zclient_serv_path_set" modified.
Diffstat (limited to 'zebra')
-rw-r--r--zebra/main.c12
-rw-r--r--zebra/zserv.c4
-rw-r--r--zebra/zserv.h2
3 files changed, 12 insertions, 6 deletions
diff --git a/zebra/main.c b/zebra/main.c
index d829c046..5f26ce24 100644
--- a/zebra/main.c
+++ b/zebra/main.c
@@ -71,6 +71,7 @@ struct option longopts[] =
{ "keep_kernel", no_argument, NULL, 'k'},
{ "config_file", required_argument, NULL, 'f'},
{ "pid_file", required_argument, NULL, 'i'},
+ { "socket", required_argument, NULL, 'z'},
{ "help", no_argument, NULL, 'h'},
{ "vty_addr", required_argument, NULL, 'A'},
{ "vty_port", required_argument, NULL, 'P'},
@@ -128,6 +129,7 @@ usage (char *progname, int status)
"-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"\
"-k, --keep_kernel Don't delete old routes which installed by "\
"zebra.\n"\
"-C, --dryrun Check configuration for validity and exit\n"\
@@ -214,6 +216,7 @@ main (int argc, char **argv)
char *config_file = NULL;
char *progname;
struct thread thread;
+ char *zserv_path = NULL;
/* Set umask before anything for security */
umask (0027);
@@ -229,9 +232,9 @@ main (int argc, char **argv)
int opt;
#ifdef HAVE_NETLINK
- opt = getopt_long (argc, argv, "bdkf:i:hA:P:ru:g:vs:C", longopts, 0);
+ opt = getopt_long (argc, argv, "bdkf:i:z:hA:P:ru:g:vs:C", longopts, 0);
#else
- opt = getopt_long (argc, argv, "bdkf:i:hA:P:ru:g:vC", longopts, 0);
+ opt = getopt_long (argc, argv, "bdkf:i:z:hA:P:ru:g:vC", longopts, 0);
#endif /* HAVE_NETLINK */
if (opt == EOF)
@@ -261,6 +264,9 @@ main (int argc, char **argv)
case 'i':
pid_file = optarg;
break;
+ case 'z':
+ zserv_path = optarg;
+ break;
case 'P':
/* Deal with atoi() returning 0 on failure, and zebra not
listening on zebra port... */
@@ -386,7 +392,7 @@ main (int argc, char **argv)
pid = getpid ();
/* This must be done only after locking pidfile (bug #403). */
- zebra_zserv_socket_init ();
+ zebra_zserv_socket_init (zserv_path);
/* Make vty server socket. */
vty_serv_sock (vty_addr, vty_port, ZEBRA_VTYSH_PATH);
diff --git a/zebra/zserv.c b/zebra/zserv.c
index dc3d432b..d558b2d2 100644
--- a/zebra/zserv.c
+++ b/zebra/zserv.c
@@ -1733,11 +1733,11 @@ zebra_init (void)
/* Make zebra server socket, wiping any existing one (see bug #403). */
void
-zebra_zserv_socket_init (void)
+zebra_zserv_socket_init (char *path)
{
#ifdef HAVE_TCP_ZEBRA
zebra_serv ();
#else
- zebra_serv_un (ZEBRA_SERV_PATH);
+ zebra_serv_un (path ? path : ZEBRA_SERV_PATH);
#endif /* HAVE_TCP_ZEBRA */
}
diff --git a/zebra/zserv.h b/zebra/zserv.h
index a7371830..5e8bccac 100644
--- a/zebra/zserv.h
+++ b/zebra/zserv.h
@@ -89,7 +89,7 @@ struct zebra_t
/* Prototypes. */
extern void zebra_init (void);
extern void zebra_if_init (void);
-extern void zebra_zserv_socket_init (void);
+extern void zebra_zserv_socket_init (char *path);
extern void hostinfo_get (void);
extern void rib_init (void);
extern void interface_list (void);