6rd: Move to plugin
[vpp.git] / vnet / vnet / ip / lookup.c
index 010e9e9..2d9e01f 100644 (file)
@@ -244,8 +244,8 @@ ip_update_adjacency (ip_lookup_main_t * lm,
   adj->lookup_next_index = IP_LOOKUP_NEXT_ARP;
   CLIB_MEMORY_BARRIER();
 
-  memcpy (&adj->rewrite_header, &copy_adj->rewrite_header,
-         VLIB_BUFFER_PRE_DATA_SIZE);
+  clib_memcpy (&adj->rewrite_header, &copy_adj->rewrite_header,
+              VLIB_BUFFER_PRE_DATA_SIZE);
   adj->lookup_next_index = copy_adj->lookup_next_index;
   ip_share_adjacency(lm, adj_index);
   ip_call_add_del_adjacency_callbacks (lm, adj_index, /* is_del */ 0);
@@ -343,7 +343,7 @@ static u32 ip_multipath_normalize_next_hops (ip_lookup_main_t * lm,
     }
   else
     {
-      memcpy (nhs, raw_next_hops, n_nhs * sizeof (raw_next_hops[0]));
+      clib_memcpy (nhs, raw_next_hops, n_nhs * sizeof (raw_next_hops[0]));
       qsort (nhs, n_nhs, sizeof (nhs[0]), (void *) next_hop_sort_by_weight);
     }
 
@@ -471,7 +471,7 @@ ip_multipath_adjacency_get (ip_lookup_main_t * lm,
   madj->normalized_next_hops.heap_offset
     = heap_alloc (lm->next_hop_heap, vec_len (nhs),
                  madj->normalized_next_hops.heap_handle);
-  memcpy (lm->next_hop_heap + madj->normalized_next_hops.heap_offset,
+  clib_memcpy (lm->next_hop_heap + madj->normalized_next_hops.heap_offset,
          nhs, vec_bytes (nhs));
 
   hash_set (lm->multipath_adjacency_by_next_hops,
@@ -482,7 +482,7 @@ ip_multipath_adjacency_get (ip_lookup_main_t * lm,
   madj->unnormalized_next_hops.heap_offset
     = heap_alloc (lm->next_hop_heap, vec_len (raw_next_hops),
                  madj->unnormalized_next_hops.heap_handle);
-  memcpy (lm->next_hop_heap + madj->unnormalized_next_hops.heap_offset,
+  clib_memcpy (lm->next_hop_heap + madj->unnormalized_next_hops.heap_offset,
          raw_next_hops, vec_bytes (raw_next_hops));
 
   ip_call_add_del_adjacency_callbacks (lm, adj_index, /* is_del */ 0);
@@ -947,7 +947,7 @@ u8 * format_ip_lookup_next (u8 * s, va_list * args)
     case IP_LOOKUP_NEXT_CLASSIFY: t = "classify"; break;
     case IP_LOOKUP_NEXT_MAP: t = "map"; break;
     case IP_LOOKUP_NEXT_MAP_T: t = "map-t"; break;
-    case IP_LOOKUP_NEXT_SIXRD: t = "sixrd"; break;
+    case IP_LOOKUP_NEXT_INDIRECT: t="indirect"; break;
     case IP_LOOKUP_NEXT_REWRITE:
       break;
     }
@@ -998,8 +998,9 @@ u8 * format_ip_adjacency (u8 * s, va_list * args)
        case IP_LOOKUP_NEXT_ARP:
          if (adj->if_address_index != ~0)
            s = format (s, " %U", format_ip_interface_address, lm, adj->if_address_index);
-         if (adj->arp.next_hop.ip4.as_u32)
-           s = format (s, " via %U", format_ip4_address, &adj->arp.next_hop.ip4.as_u32);
+         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, IP46_TYPE_ANY);
          break;
        case IP_LOOKUP_NEXT_LOCAL:
          if (adj->if_address_index != ~0)
@@ -1009,6 +1010,9 @@ u8 * format_ip_adjacency (u8 * s, va_list * args)
         case IP_LOOKUP_NEXT_CLASSIFY:
             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, IP46_TYPE_ANY);
        default:
          break;
        }
@@ -1091,7 +1095,7 @@ static uword unformat_ip_adjacency (unformat_input_t * input, va_list * args)
 
   if (unformat (input, "arp %U %U",
                unformat_vnet_sw_interface, vnm, &sw_if_index,
-               unformat_ip46_address, &a46, is_ip6))
+               unformat_ip46_address, &a46, is_ip6?IP46_TYPE_IP6:IP46_TYPE_IP4))
     {
       ip_lookup_main_t * lm = is_ip6 ? &ip6_main.lookup_main : &ip4_main.lookup_main;
       ip_adjacency_t * a_adj;