cnat: Fix session flag initialization
[vpp.git] / src / plugins / gbp / gbp_endpoint.c
index c6cab3f..b0cf64c 100644 (file)
 #include <plugins/gbp/gbp_policy_dpo.h>
 #include <plugins/gbp/gbp_vxlan.h>
 
-#include <vnet/ethernet/arp.h>
 #include <vnet/l2/l2_input.h>
 #include <vnet/l2/l2_output.h>
 #include <vnet/l2/feat_bitmap.h>
 #include <vnet/l2/l2_fib.h>
 #include <vnet/fib/fib_table.h>
-#include <vnet/ip/ip_neighbor.h>
+#include <vnet/ip-neighbor/ip_neighbor.h>
+#include <vnet/ip-neighbor/ip4_neighbor.h>
+#include <vnet/ip-neighbor/ip6_neighbor.h>
 #include <vnet/fib/fib_walk.h>
 #include <vnet/vxlan-gbp/vxlan_gbp.h>
 
@@ -208,12 +209,6 @@ gbp_endpoint_index (const gbp_endpoint_t * ge)
   return (ge - gbp_endpoint_pool);
 }
 
-static ip46_type_t
-ip46_address_get_type (const ip46_address_t * a)
-{
-  return (ip46_address_is_ip4 (a) ? IP46_TYPE_IP4 : IP46_TYPE_IP6);
-}
-
 static int
 gbp_endpoint_ip_is_equal (const fib_prefix_t * fp, const ip46_address_t * ip)
 {
@@ -776,13 +771,15 @@ gbb_endpoint_fwd_recalc (gbp_endpoint_t * ge)
            gbp_endpoint_add_itf (gbp_itf_get_sw_if_index (gef->gef_itf),
                                  gei);
            if (FIB_PROTOCOL_IP4 == pfx->fp_proto)
-             send_ip4_garp_w_addr (vlib_get_main (),
-                                   &pfx->fp_addr.ip4,
-                                   gg->gg_uplink_sw_if_index);
+             ip4_neighbor_advertise (vlib_get_main (),
+                                     vnet_get_main (),
+                                     gg->gg_uplink_sw_if_index,
+                                     &pfx->fp_addr.ip4);
            else
-             send_ip6_na_w_addr (vlib_get_main (),
-                                 &pfx->fp_addr.ip6,
-                                 gg->gg_uplink_sw_if_index);
+             ip6_neighbor_advertise (vlib_get_main (),
+                                     vnet_get_main (),
+                                     gg->gg_uplink_sw_if_index,
+                                     &pfx->fp_addr.ip6);
          }
       }
   }
@@ -1066,11 +1063,11 @@ gbp_endpoint_walk (gbp_endpoint_cb_t cb, void *ctx)
   u32 index;
 
   /* *INDENT-OFF* */
-  pool_foreach_index(index, gbp_endpoint_pool,
+  pool_foreach_index (index, gbp_endpoint_pool)
   {
     if (!cb(index, ctx))
       break;
-  });
+  }
   /* *INDENT-ON* */
 }
 
@@ -1408,8 +1405,8 @@ gbp_endpoint_scan_l2 (vlib_main_t * vm)
          last_start = vlib_time_now (vm);
        }
 
-      b = &gte_table->buckets[i];
-      if (b->offset == 0)
+      b = clib_bihash_get_bucket_16_8 (gte_table, i);
+      if (clib_bihash_bucket_is_empty_16_8 (b))
        continue;
       v = clib_bihash_get_value_16_8 (gte_table, b->offset);
 
@@ -1426,7 +1423,7 @@ gbp_endpoint_scan_l2 (vlib_main_t * vm)
               * Note: we may have just freed the bucket's backing
               * storage, so check right here...
               */
-             if (b->offset == 0)
+             if (clib_bihash_bucket_is_empty_16_8 (b))
                goto doublebreak;
            }
          v++;
@@ -1463,8 +1460,8 @@ gbp_endpoint_scan_l3 (vlib_main_t * vm)
          last_start = vlib_time_now (vm);
        }
 
-      b = &gte_table->buckets[i];
-      if (b->offset == 0)
+      b = clib_bihash_get_bucket_24_8 (gte_table, i);
+      if (clib_bihash_bucket_is_empty_24_8 (b))
        continue;
       v = clib_bihash_get_value_24_8 (gte_table, b->offset);
 
@@ -1481,7 +1478,7 @@ gbp_endpoint_scan_l3 (vlib_main_t * vm)
               * Note: we may have just freed the bucket's backing
               * storage, so check right here...
               */
-             if (b->offset == 0)
+             if (clib_bihash_bucket_is_empty_24_8 (b))
                goto doublebreak;
            }
          v++;