vxlan: vxlan/vxlan.api API cleanup
[vpp.git] / src / vnet / vxlan-gbp / vxlan_gbp.c
index 7b09b57..a061cc1 100644 (file)
@@ -16,6 +16,7 @@
 #include <vnet/ip/format.h>
 #include <vnet/fib/fib_entry.h>
 #include <vnet/fib/fib_table.h>
+#include <vnet/fib/fib_entry_track.h>
 #include <vnet/mfib/mfib_table.h>
 #include <vnet/adj/adj_mcast.h>
 #include <vnet/adj/rewrite.h>
@@ -290,7 +291,7 @@ vtep_addr_unref (ip46_address_t * ip)
   uword *vtep = ip46_address_is_ip4 (ip) ?
     hash_get (vxlan_gbp_main.vtep4, ip->ip4.as_u32) :
     hash_get_mem (vxlan_gbp_main.vtep6, &ip->ip6);
-  ASSERT (vtep);
+  ALWAYS_ASSERT (vtep);
   if (--(*vtep) != 0)
     return *vtep;
   ip46_address_is_ip4 (ip) ?
@@ -316,7 +317,7 @@ mcast_shared_get (ip46_address_t * ip)
 {
   ASSERT (ip46_address_is_multicast (ip));
   uword *p = hash_get_mem (vxlan_gbp_main.mcast_shared, ip);
-  ASSERT (p);
+  ALWAYS_ASSERT (p);
   mcast_shared_t ret = {.as_u64 = *p };
   return ret;
 }
@@ -529,12 +530,11 @@ int vnet_vxlan_gbp_tunnel_add_del
           * re-stack accordingly
           */
          vtep_addr_ref (&t->src);
-         t->fib_entry_index = fib_table_entry_special_add
-           (t->encap_fib_index, &tun_dst_pfx, FIB_SOURCE_RR,
-            FIB_ENTRY_FLAG_NONE);
-         t->sibling_index = fib_entry_child_add
-           (t->fib_entry_index, FIB_NODE_TYPE_VXLAN_GBP_TUNNEL,
-            dev_instance);
+         t->fib_entry_index = fib_entry_track (t->encap_fib_index,
+                                               &tun_dst_pfx,
+                                               FIB_NODE_TYPE_VXLAN_GBP_TUNNEL,
+                                               dev_instance,
+                                               &t->sibling_index);
          vxlan_gbp_tunnel_restack_dpo (t);
        }
       else
@@ -640,8 +640,7 @@ int vnet_vxlan_gbp_tunnel_add_del
       if (!ip46_address_is_multicast (&t->dst))
        {
          vtep_addr_unref (&t->src);
-         fib_entry_child_remove (t->fib_entry_index, t->sibling_index);
-         fib_table_entry_delete_index (t->fib_entry_index, FIB_SOURCE_RR);
+         fib_entry_untrack (t->fib_entry_index, t->sibling_index);
        }
       else if (vtep_addr_unref (&t->dst) == 0)
        {
@@ -1133,7 +1132,7 @@ set_ip6_vxlan_gbp_bypass (vlib_main_t * vm,
 VLIB_CLI_COMMAND (set_interface_ip6_vxlan_gbp_bypass_command, static) = {
   .path = "set interface ip6 vxlan-gbp-bypass",
   .function = set_ip6_vxlan_gbp_bypass,
-  .short_help = "set interface ip vxlan-gbp-bypass <interface> [del]",
+  .short_help = "set interface ip6 vxlan-gbp-bypass <interface> [del]",
 };
 /* *INDENT-ON* */
 
@@ -1166,9 +1165,11 @@ vxlan_gbp_init (vlib_main_t * vm)
 
   vlib_punt_reason_alloc (punt_hdl,
                          "VXLAN-GBP-no-such-v4-tunnel",
+                         NULL, NULL,
                          &vxm->punt_no_such_tunnel[FIB_PROTOCOL_IP4]);
   vlib_punt_reason_alloc (punt_hdl,
                          "VXLAN-GBP-no-such-v6-tunnel",
+                         NULL, NULL,
                          &vxm->punt_no_such_tunnel[FIB_PROTOCOL_IP6]);
 
   return (0);