Initial GENEVE TUNNEL implementation and tests.
[vpp.git] / src / vnet / dhcp / dhcp6_proxy_node.c
index de73154..ce7a8fc 100644 (file)
@@ -19,9 +19,9 @@
 #include <vnet/pg/pg.h>
 #include <vnet/dhcp/dhcp_proxy.h>
 #include <vnet/dhcp/dhcp6_packet.h>
-#include <vnet/fib/ip6_fib.h>
 #include <vnet/mfib/mfib_table.h>
 #include <vnet/mfib/ip6_mfib.h>
+#include <vnet/fib/fib.h>
 
 static char * dhcpv6_proxy_error_strings[] = {
 #define dhcpv6_proxy_error(n,s) s,
@@ -306,7 +306,7 @@ dhcpv6_proxy_to_server_input (vlib_main_t * vm,
           copy_ip6_address(&r1->link_addr, ia0);
 
         link_address_set:
-          fl = vlib_buffer_get_free_list (vm, b0->free_list_index);
+          fl = vlib_buffer_get_free_list (vm, vlib_buffer_get_free_list_index (b0));
 
           if ((b0->current_length+sizeof(*id1)+sizeof(*vss1)+sizeof(*cmac))
               > fl->n_data_bytes)
@@ -841,7 +841,8 @@ dhcp6_proxy_set_server (ip46_address_t *addr,
     return VNET_API_ERROR_INVALID_SRC_ADDRESS;
 
   rx_fib_index = mfib_table_find_or_create_and_lock(FIB_PROTOCOL_IP6,
-                                                    rx_table_id);
+                                                    rx_table_id,
+                                                    MFIB_SOURCE_DHCP);
 
   if (is_del)
     {
@@ -851,13 +852,13 @@ dhcp6_proxy_set_server (ip46_address_t *addr,
           mfib_table_entry_delete(rx_fib_index,
                                   &all_dhcp_servers,
                                   MFIB_SOURCE_DHCP);
-          mfib_table_unlock(rx_fib_index, FIB_PROTOCOL_IP6);
+          mfib_table_unlock(rx_fib_index, FIB_PROTOCOL_IP6, MFIB_SOURCE_DHCP);
       }
     }
   else
     {
      const fib_route_path_t path_for_us = {
-          .frp_proto = FIB_PROTOCOL_IP6,
+          .frp_proto = DPO_PROTO_IP6,
           .frp_addr = zero_addr,
           .frp_sw_if_index = 0xffffffff,
           .frp_fib_index = ~0,
@@ -885,11 +886,11 @@ dhcp6_proxy_set_server (ip46_address_t *addr,
                                  MFIB_SOURCE_DHCP,
                                  MFIB_RPF_ID_NONE,
                                  MFIB_ENTRY_FLAG_ACCEPT_ALL_ITF);
-         mfib_table_lock(rx_fib_index, FIB_PROTOCOL_IP6);
+         mfib_table_lock(rx_fib_index, FIB_PROTOCOL_IP6, MFIB_SOURCE_DHCP);
      }
     }
 
-  mfib_table_unlock(rx_fib_index, FIB_PROTOCOL_IP6);
+  mfib_table_unlock(rx_fib_index, FIB_PROTOCOL_IP6, MFIB_SOURCE_DHCP);
 
   return (rc);
 }
@@ -966,7 +967,7 @@ static u8 *
 format_dhcp6_proxy_server (u8 * s, va_list * args)
 {
   dhcp_proxy_t * proxy = va_arg (*args, dhcp_proxy_t *);
-  ip6_fib_t *server_fib;
+  fib_table_t *server_fib;
   dhcp_server_t *server;
   ip6_mfib_t *rx_fib;
 
@@ -985,9 +986,10 @@ format_dhcp6_proxy_server (u8 * s, va_list * args)
 
   vec_foreach(server, proxy->dhcp_servers)
   {
-      server_fib = ip6_fib_get(server->server_fib_index);
+      server_fib = fib_table_get(server->server_fib_index,
+                                 FIB_PROTOCOL_IP6);
       s = format (s, "%u,%U  ",
-                  server_fib->table_id,
+                  server_fib->ft_table_id,
                   format_ip46_address, &server->dhcp_server, IP46_TYPE_ANY);
   }