diff --git a/doc/pimd.8 b/doc/pimd.8
index 3995cfe..0dd170a 100644
--- a/doc/pimd.8
+++ b/doc/pimd.8
@@ -12,6 +12,9 @@
 .B \-i
 .I pid-file
 ] [
+.B \-z
+.I path
+] [
 .B \-P
 .I port-number
 ] [
@@ -52,6 +55,10 @@
 \fB\fIpid-file\fR.  The init system uses the recorded PID to stop or
 restart pimd.  The likely default is \fB\fI/var/run/pimd.pid\fR.
 .TP
+\fB\-z\fR, \fB\-\-socket \fR\fIpath\fR
+Specify the socket path for contacting the zebra daemon.
+The likely default is \fB\fI/var/run/zserv.api\fR.
+.TP
 \fB\-P\fR, \fB\-\-vty_port \fR\fIport-number\fR 
 Specify the port that the pimd VTY will listen on. This defaults to
 2611, as specified in \fB\fI/etc/services\fR.
@@ -80,6 +87,16 @@
 .B pimd
 config file.
 .TP
+.BI /var/run/pimd.pid
+The default location of the 
+.B pimd
+pid file.
+.TP
+.BI /var/run/zserv.api
+The default location of the 
+.B zebra
+unix socket file.
+.TP
 .BI $(PWD)/pimd.log 
 If the 
 .B pimd
diff --git a/lib/zclient.c b/lib/zclient.c
index c3a4905..9361436 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -229,7 +229,7 @@
 #ifdef HAVE_TCP_ZEBRA
   zclient->sock = zclient_socket ();
 #else
-  zclient->sock = zclient_socket_un (zclient_serv_path ? zclient_serv_path : ZEBRA_SERV_PATH);
+  zclient->sock = zclient_socket_un (zclient_serv_path_get());
 #endif
   return zclient->sock;
 }
@@ -1053,6 +1053,11 @@
     }
 }
 
+const char *const zclient_serv_path_get()
+{
+  return zclient_serv_path ? zclient_serv_path : ZEBRA_SERV_PATH;
+}
+
 void
 zclient_serv_path_set (char *path)
 {
diff --git a/lib/zclient.h b/lib/zclient.h
index 6a5e626..c7d4d22 100644
--- a/lib/zclient.h
+++ b/lib/zclient.h
@@ -136,6 +136,7 @@
 extern int zclient_socket_un (const char *path);
 extern int  zclient_socket_connect (struct zclient *);
 extern void zclient_serv_path_set  (char *path);
+extern const char *const zclient_serv_path_get (void);
 
 /* Send redistribute command to zebra daemon. Do not update zclient state. */
 extern int zebra_redistribute_send (int command, struct zclient *, int type);
diff --git a/pimd/pim_main.c b/pimd/pim_main.c
index 64d7787..b314df2 100644
--- a/pimd/pim_main.c
+++ b/pimd/pim_main.c
@@ -98,6 +98,7 @@
 -d, --daemon         Run 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\
 -v, --version        Print program version\n\
@@ -125,6 +126,7 @@
   int vty_port = -1;
   int daemon_mode = 0;
   char *config_file = NULL;
+  char *zebra_sock_path = NULL;
   struct thread thread;
           
   umask(0027);
@@ -138,7 +140,7 @@
   while (1) {
     int opt;
             
-    opt = getopt_long (argc, argv, "df:i:A:P:vZh", longopts, 0);
+    opt = getopt_long (argc, argv, "df:i:z:A:P:vZh", longopts, 0);
                       
     if (opt == EOF)
       break;
@@ -155,6 +157,9 @@
     case 'i':
       pid_file = optarg;
       break;
+    case 'z':
+      zebra_sock_path = optarg;
+      break;
     case 'A':
       vty_addr = optarg;
       break;
@@ -298,10 +303,11 @@
   zlog_notice("!HAVE_CLOCK_MONOTONIC");
 #endif
 
+
   /*
     Initialize zclient "update" and "lookup" sockets
    */
-  pim_zebra_init();
+  pim_zebra_init(zebra_sock_path);
     
   while (thread_fetch(master, &thread))
     thread_call(&thread);
diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c
index 44046db..321e317 100644
--- a/pimd/pim_zebra.c
+++ b/pimd/pim_zebra.c
@@ -642,14 +642,17 @@
   return 0;
 }
 
-void pim_zebra_init()
+void pim_zebra_init(char *zebra_sock_path)
 {
   int i;
 
+  if (zebra_sock_path)
+    zclient_serv_path_set(zebra_sock_path);
+
 #ifdef HAVE_TCP_ZEBRA
   zlog_notice("zclient update contacting ZEBRA daemon at socket TCP %s,%d", "127.0.0.1", ZEBRA_PORT);
 #else
-  zlog_notice("zclient update contacting ZEBRA daemon at socket UNIX %s", ZEBRA_SERV_PATH);
+  zlog_notice("zclient update contacting ZEBRA daemon at socket UNIX %s", zclient_serv_path_get());
 #endif
 
   /* Socket for receiving updates from Zebra daemon */
diff --git a/pimd/pim_zebra.h b/pimd/pim_zebra.h
index 474e7a2..d624c86 100644
--- a/pimd/pim_zebra.h
+++ b/pimd/pim_zebra.h
@@ -26,7 +26,7 @@
 #include "pim_igmp.h"
 #include "pim_ifchannel.h"
 
-void pim_zebra_init(void);
+void pim_zebra_init(char *zebra_sock_path);
 
 void pim_scan_oil(void);
 
diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c
index be0499e..ed47e67 100644
--- a/pimd/pim_zlookup.c
+++ b/pimd/pim_zlookup.c
@@ -66,16 +66,19 @@
 		__PRETTY_FUNCTION__, "127.0.0.1", ZEBRA_PORT);
   }
 #else
-  zlog_debug("%s: FIXME blocking connect: zclient_socket_un()",
-	     __PRETTY_FUNCTION__);
-  zlookup->sock = zclient_socket_un(ZEBRA_SERV_PATH);
-  if (zlookup->sock < 0) {
-    zlog_warn("%s: failure connecting UNIX socket %s",
-	      __PRETTY_FUNCTION__, ZEBRA_SERV_PATH);
-  }
-  else if (zclient_debug) { 
-    zlog_notice("%s: connected UNIX socket %s",
-		__PRETTY_FUNCTION__, ZEBRA_SERV_PATH);
+  {
+    const char *const path = zclient_serv_path_get();
+    zlog_debug("%s: FIXME blocking connect: zclient_socket_un()",
+	       __PRETTY_FUNCTION__);
+    zlookup->sock = zclient_socket_un(path);
+    if (zlookup->sock < 0) {
+      zlog_warn("%s: failure connecting UNIX socket %s",
+		__PRETTY_FUNCTION__, path);
+    }
+    else if (zclient_debug) { 
+      zlog_notice("%s: connected UNIX socket %s",
+		  __PRETTY_FUNCTION__, path);
+    }
   }
 #endif /* HAVE_TCP_ZEBRA */
 
