ip: Use .api declared error counters
[vpp.git] / src / vnet / ip / ip6_format.c
index b1a8adf..1a1bef2 100644 (file)
@@ -127,13 +127,12 @@ format_ip6_address_and_mask (u8 * s, va_list * args)
     return format (s, "any");
 
   if (am->mask.as_u64[0] == ~0 && am->mask.as_u64[1] == ~0)
-    return format (s, "%U", format_ip4_address, &am->addr);
+    return format (s, "%U", format_ip6_address, &am->addr);
 
   return format (s, "%U/%U", format_ip6_address, &am->addr,
-                format_ip4_address, &am->mask);
+                format_ip6_address, &am->mask);
 }
 
-
 /* Parse an IP6 address. */
 uword
 unformat_ip6_address (unformat_input_t * input, va_list * args)
@@ -235,8 +234,8 @@ unformat_ip6_address_and_mask (unformat_input_t * input, va_list * args)
   ip6_address_and_mask_t *am = va_arg (*args, ip6_address_and_mask_t *);
   ip6_address_t addr, mask;
 
-  memset (&addr, 0, sizeof (ip6_address_t));
-  memset (&mask, 0, sizeof (ip6_address_t));
+  clib_memset (&addr, 0, sizeof (ip6_address_t));
+  clib_memset (&mask, 0, sizeof (ip6_address_t));
 
   if (unformat (input, "any"))
     ;
@@ -289,7 +288,7 @@ format_ip6_header (u8 * s, va_list * args)
            "\n%Utos 0x%02x, flow label 0x%x, hop limit %d, payload length %d",
            format_white_space, indent, traffic_class, flow_label,
            ip->hop_limit, clib_net_to_host_u16 (ip->payload_length));
-
+#if 0
   /* Recurse into next protocol layer. */
   if (max_header_bytes != 0 && sizeof (ip[0]) < max_header_bytes)
     {
@@ -302,7 +301,7 @@ format_ip6_header (u8 * s, va_list * args)
                    /* next protocol header */ (void *) (ip + 1),
                    max_header_bytes - sizeof (ip[0]));
     }
-
+#endif
   return s;
 }
 
@@ -323,7 +322,7 @@ unformat_ip6_header (unformat_input_t * input, va_list * args)
     ip = p;
   }
 
-  memset (ip, 0, sizeof (ip[0]));
+  clib_memset (ip, 0, sizeof (ip[0]));
   ip->ip_version_traffic_class_and_flow_label =
     clib_host_to_net_u32 (6 << 28);
 
@@ -417,6 +416,25 @@ format_ip46_address (u8 * s, va_list * args)
     format (s, "%U", format_ip6_address, &ip46->ip6);
 }
 
+u8 *
+format_ip6_frag_hdr (u8 * s, va_list * args)
+{
+  ip6_frag_hdr_t *h = va_arg (*args, ip6_frag_hdr_t *);
+  u32 max_header_bytes = va_arg (*args, u32);
+  u32 header_bytes;
+
+  header_bytes = sizeof (h[0]);
+  if (max_header_bytes != 0 && header_bytes > max_header_bytes)
+    return format (s, "ipv6 frag header truncated");
+
+  s =
+    format (s,
+           "IPV6_FRAG_HDR: next_hdr: %u, rsv: %u, frag_offset_and_more: %u, id: %u",
+           h->next_hdr, h->rsv, h->fragment_offset_and_more,
+           clib_net_to_host_u32 (h->identification));
+  return s;
+}
+
 /*
  * fd.io coding-style-patch-verification: ON
  *