summaryrefslogtreecommitdiffstats
path: root/extras/vom/vom/gbp_bridge_domain_cmds.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'extras/vom/vom/gbp_bridge_domain_cmds.cpp')
-rw-r--r--extras/vom/vom/gbp_bridge_domain_cmds.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/extras/vom/vom/gbp_bridge_domain_cmds.cpp b/extras/vom/vom/gbp_bridge_domain_cmds.cpp
index 6fa8c49f9e5..082bd4bb48d 100644
--- a/extras/vom/vom/gbp_bridge_domain_cmds.cpp
+++ b/extras/vom/vom/gbp_bridge_domain_cmds.cpp
@@ -51,10 +51,21 @@ create_cmd::issue(connection& con)
payload.bd.uu_fwd_sw_if_index = m_uu_fwd.value();
payload.bd.bm_flood_sw_if_index = m_bm_flood.value();
- payload.bd.flags = GBP_BD_API_FLAG_NONE;
- if (gbp_bridge_domain::flags_t::DO_NOT_LEARN == m_flags)
- payload.bd.flags = GBP_BD_API_FLAG_DO_NOT_LEARN;
-
+ vapi_enum_gbp_bridge_domain_flags flags = GBP_BD_API_FLAG_NONE;
+ if (gbp_bridge_domain::flags_t::DO_NOT_LEARN & m_flags)
+ flags = static_cast<vapi_enum_gbp_bridge_domain_flags>(
+ flags | GBP_BD_API_FLAG_DO_NOT_LEARN);
+ if (gbp_bridge_domain::flags_t::UU_FWD_DROP & m_flags)
+ flags = static_cast<vapi_enum_gbp_bridge_domain_flags>(
+ flags | GBP_BD_API_FLAG_UU_FWD_DROP);
+ if (gbp_bridge_domain::flags_t::MCAST_DROP & m_flags)
+ flags = static_cast<vapi_enum_gbp_bridge_domain_flags>(
+ flags | GBP_BD_API_FLAG_MCAST_DROP);
+ if (gbp_bridge_domain::flags_t::UCAST_ARP & m_flags)
+ flags = static_cast<vapi_enum_gbp_bridge_domain_flags>(
+ flags | GBP_BD_API_FLAG_UCAST_ARP);
+
+ payload.bd.flags = flags;
VAPI_CALL(req.execute());
return (wait());