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)
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();
{
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());
}
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)
{
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");
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
u32 throttled;
u32 epg;
u32 d_bit;
+ gbp_bridge_domain_flags_t gb_flags;
} gbp_learn_l2_trace_t;
always_inline void
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);
}
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;
}