diff --git a/lib/ChangeLog b/lib/ChangeLog
index 0e98b92..eeb6404 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,13 @@
+2006-01-16 Paul Jakma <paul.jakma@sun.com>
+
+	* zclient.h: Update the Zserv protocol header with a version
+	  field.  Define the old command field to be a 'marker', to
+	  allow old Zserv and updated Zserv to be differentiated.
+	  Future updates will bump the version field obviously. New
+	  command field is made wider.  Try to stop using the
+	  'zebra_size_t' typedef in the callbacks.
+	* zclient.c: Update to read/write new format header.
+
 2006-01-11 Paul Jakma <paul.jakma@sun.com>
 
 	* if.h: (struct interface) expand flags to 8 bytes.
diff --git a/lib/zclient.c b/lib/zclient.c
index b09f558..ccd8bfc 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -270,6 +270,16 @@
   return 0;
 }
 
+static void
+zclient_create_header (struct stream *s, uint16_t command)
+{
+  /* length placeholder, caller can update */
+  stream_putw (s, ZEBRA_HEADER_SIZE);
+  stream_putc (s, ZEBRA_HEADER_MARKER);
+  stream_putc (s, ZSERV_VERSION);
+  stream_putw (s, command);
+}
+
 /* Send simple Zebra message. */
 static int
 zebra_message_send (struct zclient *zclient, int command)
@@ -281,9 +291,8 @@
   stream_reset (s);
 
   /* Send very simple command only Zebra message. */
-  stream_putw (s, 3);
-  stream_putc (s, command);
-
+  zclient_create_header (s, command);
+  
   return zclient_send_message(zclient);
 }
 
@@ -423,12 +432,10 @@
   /* Reset stream. */
   s = zclient->obuf;
   stream_reset (s);
-
-  /* Length place holder. */
-  stream_putw (s, 0);
-
-  /* Put command, type and nexthop. */
-  stream_putc (s, cmd);
+  
+  zclient_create_header (s, cmd);
+  
+  /* Put type and nexthop. */
   stream_putc (s, api->type);
   stream_putc (s, api->flags);
   stream_putc (s, api->message);
@@ -487,11 +494,9 @@
   s = zclient->obuf;
   stream_reset (s);
 
-  /* Length place holder. */
-  stream_putw (s, 0);
+  zclient_create_header (s, cmd);
 
-  /* Put command, type and nexthop. */
-  stream_putc (s, cmd);
+  /* Put type and nexthop. */
   stream_putc (s, api->type);
   stream_putc (s, api->flags);
   stream_putc (s, api->message);
@@ -543,13 +548,12 @@
 
   s = zclient->obuf;
   stream_reset(s);
-
-  /* Total length of the message. */
-  stream_putw (s, 4);
   
-  stream_putc (s, command);
+  zclient_create_header (s, command);
   stream_putc (s, type);
-
+  
+  stream_putw_at (s, 0, stream_get_endp (s));
+  
   return zclient_send_message(zclient);
 }
 
@@ -794,8 +798,8 @@
 {
   int ret;
   size_t already;
-  zebra_size_t length;
-  zebra_command_t command;
+  uint16_t length, command;
+  uint8_t marker, version;
   struct zclient *zclient;
 
   /* Get socket to zebra. */
@@ -826,10 +830,19 @@
   /* Reset to read from the beginning of the incoming packet. */
   stream_set_getp(zclient->ibuf, 0);
 
-  /* Fetch length and command. */
+  /* Fetch header values. */
   length = stream_getw (zclient->ibuf);
-  command = stream_getc (zclient->ibuf);
-
+  marker = stream_getc (zclient->ibuf);
+  version = stream_getc (zclient->ibuf);
+  command = stream_getw (zclient->ibuf);
+  
+  if (marker != ZEBRA_HEADER_MARKER || version != ZSERV_VERSION)
+    {
+      zlog_err("%s: socket %d version mismatch, marker %d, version %d",
+               __func__, zclient->sock, marker, version);
+      return zclient_failed(zclient);
+    }
+  
   if (length < ZEBRA_HEADER_SIZE) 
     {
       zlog_err("%s: socket %d message length %u is less than %d ",
diff --git a/lib/zclient.h b/lib/zclient.h
index 910db0d..bd33295 100644
--- a/lib/zclient.h
+++ b/lib/zclient.h
@@ -29,7 +29,7 @@
 #define ZEBRA_MAX_PACKET_SIZ          4096
 
 /* Zebra header size. */
-#define ZEBRA_HEADER_SIZE                3
+#define ZEBRA_HEADER_SIZE             6
 
 /* Structure for the zebra client. */
 struct zclient
@@ -68,17 +68,17 @@
   u_char default_information;
 
   /* Pointer to the callback functions. */
-  int (*router_id_update) (int, struct zclient *, zebra_size_t);
-  int (*interface_add) (int, struct zclient *, zebra_size_t);
-  int (*interface_delete) (int, struct zclient *, zebra_size_t);
-  int (*interface_up) (int, struct zclient *, zebra_size_t);
-  int (*interface_down) (int, struct zclient *, zebra_size_t);
-  int (*interface_address_add) (int, struct zclient *, zebra_size_t);
-  int (*interface_address_delete) (int, struct zclient *, zebra_size_t);
-  int (*ipv4_route_add) (int, struct zclient *, zebra_size_t);
-  int (*ipv4_route_delete) (int, struct zclient *, zebra_size_t);
-  int (*ipv6_route_add) (int, struct zclient *, zebra_size_t);
-  int (*ipv6_route_delete) (int, struct zclient *, zebra_size_t);
+  int (*router_id_update) (int, struct zclient *, uint16_t);
+  int (*interface_add) (int, struct zclient *, uint16_t);
+  int (*interface_delete) (int, struct zclient *, uint16_t);
+  int (*interface_up) (int, struct zclient *, uint16_t);
+  int (*interface_down) (int, struct zclient *, uint16_t);
+  int (*interface_address_add) (int, struct zclient *, uint16_t);
+  int (*interface_address_delete) (int, struct zclient *, uint16_t);
+  int (*ipv4_route_add) (int, struct zclient *, uint16_t);
+  int (*ipv4_route_delete) (int, struct zclient *, uint16_t);
+  int (*ipv6_route_add) (int, struct zclient *, uint16_t);
+  int (*ipv6_route_delete) (int, struct zclient *, uint16_t);
 };
 
 /* Zebra API message flag. */
@@ -87,6 +87,18 @@
 #define ZAPI_MESSAGE_DISTANCE 0x04
 #define ZAPI_MESSAGE_METRIC   0x08
 
+/* Zserv protocol message header */
+struct zserv_header
+{
+  uint16_t length;
+  uint8_t marker;	/* corresponds to command field in old zserv
+                         * always set to 255 in new zserv.
+                         */
+  uint8_t version;
+#define ZSERV_VERSION	1
+  uint16_t command;
+};
+
 /* Zebra IPv4 route message API. */
 struct zapi_ipv4
 {
diff --git a/lib/zebra.h b/lib/zebra.h
index cf7998f..00f13f5 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -397,6 +397,12 @@
 #define ZEBRA_ROUTER_ID_UPDATE            22
 #define ZEBRA_MESSAGE_MAX                 23
 
+/* Marker value used in new Zserv, in the byte location corresponding
+ * the command value in the old zserv header. To allow old and new
+ * Zserv headers to be distinguished from each other.
+ */
+#define ZEBRA_HEADER_MARKER              255
+
 /* Zebra route's types. */
 #define ZEBRA_ROUTE_SYSTEM               0
 #define ZEBRA_ROUTE_KERNEL               1
@@ -493,9 +499,9 @@
 typedef u_int16_t afi_t;
 typedef u_int8_t safi_t;
 
-/* Zebra types. */
+/* Zebra types. Used in Zserv message header. */
 typedef u_int16_t zebra_size_t;
-typedef u_int8_t zebra_command_t;
+typedef u_int16_t zebra_command_t;
 
 /* FIFO -- first in first out structure and macros.  */
 struct fifo
