]> git.puffer.fish Git - matthieu/frr.git/commitdiff
[zserv] fix up custom isisd and bgpd Zserv functions for new format.
authorpaul <paul>
Tue, 17 Jan 2006 17:33:46 +0000 (17:33 +0000)
committerpaul <paul>
Tue, 17 Jan 2006 17:33:46 +0000 (17:33 +0000)
2006-01-17 Paul Jakma <paul.jakma@sun.com>

* bgp_nexthop.c: (zlookup_read*) convert to new Zserv format.
  (zlookup_query_ipv6) ditto.
  (bgp_import_check) ditto.
* isis_zebra.c: (isis_zebra_route_add_ipv4) fix for new
  zserv format.

bgpd/ChangeLog
bgpd/bgp_nexthop.c
isisd/ChangeLog
isisd/isis_zebra.c

index b555334b3b957986799ad18a5ab22d5e42cfa4ae..234ecb5dfe5454fc5482d79b1ca7ec708432ba87 100644 (file)
@@ -1,3 +1,9 @@
+2006-01-17 Paul Jakma <paul.jakma@sun.com>
+
+       * bgp_nexthop.c: (zlookup_read*) convert to new Zserv format.
+         (zlookup_query_ipv6) ditto.
+         (bgp_import_check) ditto.
+         
 2006-01-16 Paul Jakma <paul.jakma@sun.com>
 
        * bgp_aspath.c: (assegment_append_asns) XREALLOC can return
index 1f6fef87606fe1b187cc4b8794c8d104ebeee6e2..ba1752fb20fba849fb2fb01be18c2d65377ba66d 100644 (file)
@@ -738,11 +738,13 @@ static struct bgp_nexthop_cache *
 zlookup_read ()
 {
   struct stream *s;
-  u_int16_t length;
-  u_char command;
+  uint16_t length;
+  u_char marker;
+  u_char version;
+  uint16_t command;
   int nbytes;
   struct in_addr raddr;
-  u_int32_t metric;
+  uint32_t metric;
   int i;
   u_char nexthop_num;
   struct nexthop *nexthop;
@@ -755,7 +757,18 @@ zlookup_read ()
   length = stream_getw (s);
 
   nbytes = stream_read (s, zlookup->sock, length - 2);
-  command = stream_getc (s);
+  marker = stream_getc (s);
+  version = stream_getc (s);
+  
+  if (version != ZSERV_VERSION || marker != ZEBRA_HEADER_MARKER)
+    {
+      zlog_err("%s: socket %d version mismatch, marker %d, version %d",
+               __func__, zlookup->sock, marker, version);
+      return NULL;
+    }
+    
+  command = stream_getw (s);
+  
   raddr.s_addr = stream_get_ipv4 (s);
   metric = stream_getl (s);
   nexthop_num = stream_getc (s);
@@ -806,11 +819,12 @@ zlookup_query (struct in_addr addr)
 
   s = zlookup->obuf;
   stream_reset (s);
-  stream_putw (s, 7);
-  stream_putc (s, ZEBRA_IPV4_NEXTHOP_LOOKUP);
+  zclient_create_header (s, ZEBRA_IPV4_NEXTHOP_LOOKUP);
   stream_put_in_addr (s, &addr);
-
-  ret = writen (zlookup->sock, s->data, 7);
+  
+  stream_putw_at (s, 0, stream_get_endp (s));
+  
+  ret = writen (zlookup->sock, s->data, stream_get_endp (s));
   if (ret < 0)
     {
       zlog_err ("can't write to zlookup->sock");
@@ -834,11 +848,12 @@ static struct bgp_nexthop_cache *
 zlookup_read_ipv6 ()
 {
   struct stream *s;
-  u_int16_t length;
-  u_char command;
+  uint16_t length;
+  u_char version, marker;
+  uint16_t  command;
   int nbytes;
   struct in6_addr raddr;
-  u_int32_t metric;
+  uint32_t metric;
   int i;
   u_char nexthop_num;
   struct nexthop *nexthop;
@@ -851,8 +866,18 @@ zlookup_read_ipv6 ()
   length = stream_getw (s);
 
   nbytes = stream_read (s, zlookup->sock, length - 2);
-  command = stream_getc (s);
-
+  marker = stream_getc (s);
+  version = stream_getc (s);
+  
+  if (version != ZSERV_VERSION || marker != ZEBRA_HEADER_MARKER)
+    {
+      zlog_err("%s: socket %d version mismatch, marker %d, version %d",
+               __func__, zlookup->sock, marker, version);
+      return NULL;
+    }
+    
+  command = stream_getw (s);
+  
   stream_get (&raddr, s, 16);
 
   metric = stream_getl (s);
@@ -909,11 +934,11 @@ zlookup_query_ipv6 (struct in6_addr *addr)
 
   s = zlookup->obuf;
   stream_reset (s);
-  stream_putw (s, 19);
-  stream_putc (s, ZEBRA_IPV6_NEXTHOP_LOOKUP);
+  zclient_create_header (s, ZEBRA_IPV6_NEXTHOP_LOOKUP);
   stream_put (s, addr, 16);
-
-  ret = writen (zlookup->sock, s->data, 19);
+  stream_putw_at (s, 0, stream_get_endp (s));
+  
+  ret = writen (zlookup->sock, s->data, stream_get_endp (s));
   if (ret < 0)
     {
       zlog_err ("can't write to zlookup->sock");
@@ -939,8 +964,8 @@ bgp_import_check (struct prefix *p, u_int32_t *igpmetric,
 {
   struct stream *s;
   int ret;
-  u_int16_t length;
-  u_char command;
+  u_int16_t length, command;
+  u_char version, marker;
   int nbytes;
   struct in_addr addr;
   struct in_addr nexthop;
@@ -959,13 +984,15 @@ bgp_import_check (struct prefix *p, u_int32_t *igpmetric,
   /* Send query to the lookup connection */
   s = zlookup->obuf;
   stream_reset (s);
-  stream_putw (s, 8);
-  stream_putc (s, ZEBRA_IPV4_IMPORT_LOOKUP);
+  zclient_create_header (s, ZEBRA_IPV4_IMPORT_LOOKUP);
+  
   stream_putc (s, p->prefixlen);
   stream_put_in_addr (s, &p->u.prefix4);
-
+  
+  stream_putw_at (s, 0, stream_get_endp (s));
+  
   /* Write the packet. */
-  ret = writen (zlookup->sock, s->data, 8);
+  ret = writen (zlookup->sock, s->data, stream_get_endp (s));
 
   if (ret < 0)
     {
@@ -991,7 +1018,18 @@ bgp_import_check (struct prefix *p, u_int32_t *igpmetric,
 
   /* Fetch whole data. */
   nbytes = stream_read (s, zlookup->sock, length - 2);
-  command = stream_getc (s);
+  marker = stream_getc (s);
+  version = stream_getc (s);
+
+  if (version != ZSERV_VERSION || marker != ZEBRA_HEADER_MARKER)
+    {
+      zlog_err("%s: socket %d version mismatch, marker %d, version %d",
+               __func__, zlookup->sock, marker, version);
+      return 0;
+    }
+    
+  command = stream_getw (s);
+  
   addr.s_addr = stream_get_ipv4 (s);
   metric = stream_getl (s);
   nexthop_num = stream_getc (s);
index fa2a13ae4a5476594ef77e0a80797ae6e0fdc901..5e203c8c0e9ae4a2a2f9d62ea547cfc862354761 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-17 Paul Jakma <paul.jakma@sun.com>
+
+       * isis_zebra.c: (isis_zebra_route_add_ipv4) fix for new
+         zserv format.
+
 2005-11-20 Paul Jakma <paul.jakma@sun.com>
 
         * (general) remove includes of very common system headers,
index aff6a716573e897fb8ad7e9ad718b9353b4fdfaf..4631cc704bcd31220ccfc9bab119e88e09b55780 100644 (file)
@@ -267,10 +267,7 @@ isis_zebra_route_add_ipv4 (struct prefix *prefix,
 
       stream = zclient->obuf;
       stream_reset (stream);
-      /* Length place holder. */
-      stream_putw (stream, 0);
-      /* command */
-      stream_putc (stream, ZEBRA_IPV4_ROUTE_ADD);
+      zclient_create_header (stream, ZEBRA_IPV4_ROUTE_ADD);
       /* type */
       stream_putc (stream, ZEBRA_ROUTE_ISIS);
       /* flags */