GBP: fix and print GBP BD flags 91/17991/2
authorNeale Ranns <nranns@cisco.com>
Mon, 4 Mar 2019 09:14:24 +0000 (01:14 -0800)
committerDamjan Marion <dmarion@me.com>
Mon, 4 Mar 2019 11:16:23 +0000 (11:16 +0000)
Change-Id: If3fe2752c9339049123ff4674e3a29449b520374
Signed-off-by: Neale Ranns <nranns@cisco.com>
extras/vom/vom/gbp_bridge_domain.cpp
extras/vom/vom/gbp_bridge_domain_cmds.cpp
src/plugins/gbp/gbp_bridge_domain.c
src/plugins/gbp/gbp_bridge_domain.h
src/plugins/gbp/gbp_learn_node.c

index 78f7d8d..c8d42d2 100644 (file)
@@ -23,7 +23,7 @@ namespace VOM {
 
 const gbp_bridge_domain::flags_t gbp_bridge_domain::flags_t::NONE(0, "none");
 const gbp_bridge_domain::flags_t gbp_bridge_domain::flags_t::DO_NOT_LEARN(
-  0,
+  1,
   "do-not-learn");
 
 gbp_bridge_domain::flags_t::flags_t(int v, const std::string& s)
@@ -200,7 +200,8 @@ std::string
 gbp_bridge_domain::to_string() const
 {
   std::ostringstream s;
-  s << "gbp-bridge-domain:[" << m_bd->to_string();
+  s << "gbp-bridge-domain:[" << m_bd->to_string()
+    << " flags:" << m_flags.to_string();
 
   if (m_bvi)
     s << " bvi:" << m_bvi->to_string();
index f5a6888..6fa8c49 100644 (file)
@@ -65,7 +65,8 @@ create_cmd::to_string() const
 {
   std::ostringstream s;
   s << "gbp-bridge-domain: " << m_hw_item.to_string()
-    << " bvi:" << m_bvi.to_string() << " uu-fwd:" << m_uu_fwd.to_string();
+    << " flags:" << m_flags.to_string() << " bvi:" << m_bvi.to_string()
+    << " uu-fwd:" << m_uu_fwd.to_string();
 
   return (s.str());
 }
index 049c89b..261b568 100644 (file)
@@ -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, "noe");
+    }
+  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");
 
index 95b53dc..25498ee 100644 (file)
@@ -91,6 +91,7 @@ typedef int (*gbp_bridge_domain_cb_t) (gbp_bridge_domain_t * gb, void *ctx);
 extern void gbp_bridge_domain_walk (gbp_bridge_domain_cb_t bgpe, void *ctx);
 
 extern u8 *format_gbp_bridge_domain (u8 * s, va_list * args);
+extern u8 *format_gbp_bridge_domain_flags (u8 * s, va_list * args);
 
 /**
  * DB of bridge_domains
index d7a70bb..ebb1217 100644 (file)
@@ -162,6 +162,7 @@ typedef struct gbp_learn_l2_trace_t_
   u32 throttled;
   u32 epg;
   u32 d_bit;
+  gbp_bridge_domain_flags_t gb_flags;
 } gbp_learn_l2_trace_t;
 
 always_inline void
@@ -317,6 +318,7 @@ VLIB_NODE_FN (gbp_learn_l2_node) (vlib_main_t * vm,
              t->throttled = t0;
              t->sw_if_index = sw_if_index0;
              t->epg = epg0;
+             t->gb_flags = gb0->gb_flags;
              t->d_bit = ! !(vnet_buffer2 (b0)->gbp.flags &
                             VXLAN_GBP_GPFLAGS_D);
            }
@@ -341,9 +343,11 @@ format_gbp_learn_l2_trace (u8 * s, va_list * args)
   CLIB_UNUSED (vlib_node_t * node) = va_arg (*args, vlib_node_t *);
   gbp_learn_l2_trace_t *t = va_arg (*args, gbp_learn_l2_trace_t *);
 
-  s = format (s, "new:%d throttled:%d d-bit:%d mac:%U itf:%d epg:%d",
+  s = format (s, "new:%d throttled:%d d-bit:%d mac:%U itf:%d epg:%d"
+             " gb-flags:%U",
              t->new, t->throttled, t->d_bit,
-             format_mac_address_t, &t->mac, t->sw_if_index, t->epg);
+             format_mac_address_t, &t->mac, t->sw_if_index, t->epg,
+             format_gbp_bridge_domain_flags, t->gb_flags);
 
   return s;
 }