Explicity specify IP address type for format_ip46_address function 25/1525/3
authorDamjan Marion <damarion@cisco.com>
Tue, 24 May 2016 21:19:11 +0000 (23:19 +0200)
committerDamjan Marion <damarion@cisco.com>
Mon, 13 Jun 2016 17:04:12 +0000 (19:04 +0200)
Change-Id: I3379517535a98a7a5fbd3173503f288a81378821
Signed-off-by: Damjan Marion <damarion@cisco.com>
vnet/vnet/ethernet/arp.c
vnet/vnet/ip/ip6_format.c
vnet/vnet/ip/ip6_neighbor.c
vnet/vnet/ip/lookup.c
vnet/vnet/vxlan/vxlan.c
vpp-api-test/vat/api_format.c
vpp/api/custom_dump.c

index aa37f25..d9e4b9b 100644 (file)
@@ -1314,7 +1314,7 @@ arp_add_del_adj_cb (struct ip_lookup_main_t * lm,
        {
          if (!e)
            clib_warning("Adjacency contains unknown ARP next hop %U (del)",
-                        format_ip46_address, &adj->arp.next_hop);
+                        format_ip46_address, &adj->arp.next_hop, IP46_TYPE_IP4);
          else
            arp_ip4_entry_del_adj(e, adj->heap_handle);
        }
@@ -1322,7 +1322,7 @@ arp_add_del_adj_cb (struct ip_lookup_main_t * lm,
        {
          if (!e)
            clib_warning("Adjacency contains unknown ARP next hop %U (add)",
-                        format_ip46_address, &adj->arp.next_hop);
+                        format_ip46_address, &adj->arp.next_hop, IP46_TYPE_IP4);
          else
            arp_ip4_entry_add_adj(e, adj->heap_handle);
        }
index ad834f4..5d32189 100644 (file)
@@ -341,7 +341,23 @@ uword unformat_ip46_address (unformat_input_t * input, va_list * args)
 u8 * format_ip46_address (u8 * s, va_list * args)
 {
   ip46_address_t *ip46 = va_arg (*args, ip46_address_t *);
-  return ip46_address_is_ip4(ip46)?
+  ip46_type_t type = va_arg (*args, ip46_type_t);
+  int is_ip4 = 1;
+
+  switch (type)
+    {
+      case IP46_TYPE_ANY:
+       is_ip4 = ip46_address_is_ip4(ip46);
+       break;
+      case IP46_TYPE_IP4:
+       is_ip4 = 1;
+       break;
+      case IP46_TYPE_IP6:
+       is_ip4 = 0;
+       break;
+    }
+
+  return is_ip4 ?
       format(s, "%U", format_ip4_address, &ip46->ip4):
       format(s, "%U", format_ip6_address, &ip46->ip6);
 }
index 19eb5a8..0dad232 100644 (file)
@@ -3241,7 +3241,7 @@ ip6_neighbor_add_del_adj_cb (struct ip_lookup_main_t * lm,
         {
           if (!n)
             clib_warning("Adjacency contains unknown ND next hop %U (del)",
-                         format_ip46_address, &adj->arp.next_hop);
+                         format_ip46_address, &adj->arp.next_hop, IP46_TYPE_IP6);
           else
             ip6_neighbor_entry_del_adj(n, adj->heap_handle);
         }
@@ -3249,7 +3249,7 @@ ip6_neighbor_add_del_adj_cb (struct ip_lookup_main_t * lm,
         {
           if (!n)
             clib_warning("Adjacency contains unknown ND next hop %U (add)",
-                         format_ip46_address, &adj->arp.next_hop);
+                         format_ip46_address, &adj->arp.next_hop, IP46_TYPE_IP6);
           else
             ip6_neighbor_entry_add_adj(n, adj->heap_handle);
         }
index 2f638f7..5a56870 100644 (file)
@@ -1000,7 +1000,8 @@ u8 * format_ip_adjacency (u8 * s, va_list * args)
          if (adj->if_address_index != ~0)
            s = format (s, " %U", format_ip_interface_address, lm, adj->if_address_index);
          if (adj->arp.next_hop.ip6.as_u64[0] || adj->arp.next_hop.ip6.as_u64[1])
-           s = format (s, " via %U", format_ip46_address, &adj->arp.next_hop);
+           s = format (s, " via %U", format_ip46_address,
+                       &adj->arp.next_hop, IP46_TYPE_ANY);
          break;
        case IP_LOOKUP_NEXT_LOCAL:
          if (adj->if_address_index != ~0)
@@ -1011,7 +1012,8 @@ u8 * format_ip_adjacency (u8 * s, va_list * args)
             s = format (s, " table %d", adj->classify.table_index);
 
         case IP_LOOKUP_NEXT_INDIRECT:
-           s = format (s, " via %U", format_ip46_address, &adj->indirect.next_hop);
+           s = format (s, " via %U", format_ip46_address,
+                       &adj->indirect.next_hop, IP46_TYPE_ANY);
        default:
          break;
        }
index 133fc6f..86d4924 100644 (file)
@@ -45,8 +45,8 @@ u8 * format_vxlan_tunnel (u8 * s, va_list * args)
   s = format (s, 
               "[%d] %U (src) %U (dst) vni %d encap_fib_index %d",
               t - ngm->tunnels,
-              format_ip46_address, &t->src,
-              format_ip46_address, &t->dst,
+              format_ip46_address, &t->src, IP46_TYPE_ANY,
+              format_ip46_address, &t->dst, IP46_TYPE_ANY,
               t->vni,
               t->encap_fib_index);
   s = format (s, " decap_next %U\n", format_decap_next, t->decap_next_index);
index 666a4bd..410bab5 100644 (file)
@@ -474,7 +474,23 @@ u8 * format_ip6_address (u8 * s, va_list * args)
 u8 * format_ip46_address (u8 * s, va_list * args)
 {
   ip46_address_t *ip46 = va_arg (*args, ip46_address_t *);
-  return ip46_address_is_ip4(ip46)?
+  ip46_type_t type = va_arg (*args, ip46_type_t);
+  int is_ip4 = 1;
+
+  switch (type)
+    {
+      case IP46_TYPE_ANY:
+       is_ip4 = ip46_address_is_ip4(ip46);
+       break;
+      case IP46_TYPE_IP4:
+       is_ip4 = 1;
+       break;
+      case IP46_TYPE_IP6:
+       is_ip4 = 0;
+       break;
+    }
+
+  return is_ip4 ?
       format(s, "%U", format_ip4_address, &ip46->ip4):
       format(s, "%U", format_ip6_address, &ip46->ip6);
 }
@@ -7522,7 +7538,9 @@ static void vl_api_vxlan_tunnel_details_t_handler
     fformat(vam->ofp, "%11d%24U%24U%14d%18d%13d\n",
             ntohl(mp->sw_if_index),
             format_ip46_address, &(mp->src_address[0]),
+           IP46_TYPE_ANY,
             format_ip46_address, &(mp->dst_address[0]),
+           IP46_TYPE_ANY,
             ntohl(mp->encap_vrf_id),
             ntohl(mp->decap_next_index),
             ntohl(mp->vni));
index 638c4a7..f49e1b0 100644 (file)
@@ -1335,10 +1335,12 @@ static void * vl_api_vxlan_add_del_tunnel_t_print
     s = format (0, "SCRIPT: vxlan_add_del_tunnel ");
 
     s = format (s, "dst %U ", format_ip46_address,
-                (ip46_address_t *)&(mp->dst_address));
+                (ip46_address_t *)&(mp->dst_address),
+               mp->is_ipv6 ? IP46_TYPE_IP6 : IP46_TYPE_IP4);
 
     s = format (s, "src %U ", format_ip46_address,
-                (ip46_address_t *)&(mp->src_address));
+                (ip46_address_t *)&(mp->src_address),
+               mp->is_ipv6 ? IP46_TYPE_IP6 : IP46_TYPE_IP4);
 
     if (mp->encap_vrf_id)
         s = format (s, "encap-vrf-id %d ", ntohl(mp->encap_vrf_id));