GBP: use sclass in the DP for policy
[vpp.git] / src / plugins / gbp / gbp_bridge_domain.c
index 049c89b..02ed97d 100644 (file)
@@ -15,7 +15,7 @@
 
 #include <plugins/gbp/gbp_bridge_domain.h>
 #include <plugins/gbp/gbp_endpoint.h>
-#include <plugins/gbp/gbp_sclass.h>
+#include <plugins/gbp/gbp_learn.h>
 
 #include <vnet/dpo/dvr_dpo.h>
 #include <vnet/fib/fib_table.h>
@@ -113,6 +113,23 @@ gbp_bridge_domain_db_remove (gbp_bridge_domain_t * gb)
   gbp_bridge_domain_db.gbd_by_bd_index[gb->gb_bd_index] = INDEX_INVALID;
 }
 
+u8 *
+format_gbp_bridge_domain_flags (u8 * s, va_list * args)
+{
+  gbp_bridge_domain_flags_t gf = va_arg (*args, gbp_bridge_domain_flags_t);
+
+  if (gf)
+    {
+      if (gf & GBP_BD_FLAG_DO_NOT_LEARN)
+       s = format (s, "do-not-learn");
+    }
+  else
+    {
+      s = format (s, "none");
+    }
+  return (s);
+}
+
 static u8 *
 format_gbp_bridge_domain_ptr (u8 * s, va_list * args)
 {
@@ -120,13 +137,13 @@ format_gbp_bridge_domain_ptr (u8 * s, va_list * args)
   vnet_main_t *vnm = vnet_get_main ();
 
   if (NULL != gb)
-    s = format (s, "[%d] bd:[%d,%d], bvi:%U uu-flood:%U locks:%d",
+    s = format (s, "[%d] bd:[%d,%d], bvi:%U uu-flood:%U flags:%U locks:%d",
                gb - gbp_bridge_domain_pool,
                gb->gb_bd_id,
                gb->gb_bd_index,
                format_vnet_sw_if_index_name, vnm, gb->gb_bvi_sw_if_index,
                format_vnet_sw_if_index_name, vnm, gb->gb_uu_fwd_sw_if_index,
-               gb->gb_locks);
+               format_gbp_bridge_domain_flags, gb->gb_flags, gb->gb_locks);
   else
     s = format (s, "NULL");
 
@@ -193,14 +210,13 @@ gbp_bridge_domain_add_and_lock (u32 bd_id,
          set_int_l2_mode (vlib_get_main (), vnet_get_main (),
                           MODE_L2_BRIDGE, gb->gb_uu_fwd_sw_if_index,
                           bd_index, L2_BD_PORT_TYPE_UU_FWD, 0, 0);
-         gbp_sclass_enable_l2 (gb->gb_uu_fwd_sw_if_index);
        }
       if (~0 != gb->gb_bm_flood_sw_if_index)
        {
          set_int_l2_mode (vlib_get_main (), vnet_get_main (),
                           MODE_L2_BRIDGE, gb->gb_bm_flood_sw_if_index,
                           bd_index, L2_BD_PORT_TYPE_NORMAL, 0, 0);
-         gbp_sclass_enable_l2 (gb->gb_bm_flood_sw_if_index);
+         gbp_learn_enable (gb->gb_bm_flood_sw_if_index, GBP_LEARN_MODE_L2);
        }
 
       /*
@@ -250,14 +266,13 @@ gbp_bridge_domain_unlock (index_t index)
          set_int_l2_mode (vlib_get_main (), vnet_get_main (),
                           MODE_L3, gb->gb_uu_fwd_sw_if_index,
                           gb->gb_bd_index, L2_BD_PORT_TYPE_UU_FWD, 0, 0);
-         gbp_sclass_disable_l2 (gb->gb_uu_fwd_sw_if_index);
        }
       if (~0 != gb->gb_bm_flood_sw_if_index)
        {
          set_int_l2_mode (vlib_get_main (), vnet_get_main (),
                           MODE_L3, gb->gb_bm_flood_sw_if_index,
                           gb->gb_bd_index, L2_BD_PORT_TYPE_NORMAL, 0, 0);
-         gbp_sclass_disable_l2 (gb->gb_bm_flood_sw_if_index);
+         gbp_learn_enable (gb->gb_bm_flood_sw_if_index, GBP_LEARN_MODE_L2);
        }
 
       gbp_bridge_domain_db_remove (gb);