summaryrefslogtreecommitdiffstats
path: root/extras/vom/vom/gbp_bridge_domain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'extras/vom/vom/gbp_bridge_domain.cpp')
-rw-r--r--extras/vom/vom/gbp_bridge_domain.cpp57
1 files changed, 53 insertions, 4 deletions
diff --git a/extras/vom/vom/gbp_bridge_domain.cpp b/extras/vom/vom/gbp_bridge_domain.cpp
index 6cad1954e5d..92d1a13062b 100644
--- a/extras/vom/vom/gbp_bridge_domain.cpp
+++ b/extras/vom/vom/gbp_bridge_domain.cpp
@@ -31,6 +31,14 @@ gbp_bridge_domain::event_handler gbp_bridge_domain::m_evh;
/**
* Construct a new object matching the desried state
*/
+gbp_bridge_domain::gbp_bridge_domain(const bridge_domain& bd,
+ const interface& bvi)
+ : m_id(bd.id())
+ , m_bd(bd.singular())
+ , m_bvi(bvi.singular())
+{
+}
+
gbp_bridge_domain::gbp_bridge_domain(const bridge_domain& bd)
: m_id(bd.id())
, m_bd(bd.singular())
@@ -47,9 +55,31 @@ gbp_bridge_domain::gbp_bridge_domain(const bridge_domain& bd,
{
}
+gbp_bridge_domain::gbp_bridge_domain(const bridge_domain& bd,
+ const std::shared_ptr<interface> bvi,
+ const std::shared_ptr<interface> uu_fwd)
+ : m_id(bd.id())
+ , m_bd(bd.singular())
+ , m_bvi(bvi->singular())
+ , m_uu_fwd(uu_fwd->singular())
+{
+}
+
+gbp_bridge_domain::gbp_bridge_domain(const bridge_domain& bd,
+ const interface& bvi,
+ const std::shared_ptr<interface> uu_fwd)
+ : m_id(bd.id())
+ , m_bd(bd.singular())
+ , m_bvi(bvi.singular())
+ , m_uu_fwd(uu_fwd->singular())
+{
+}
+
gbp_bridge_domain::gbp_bridge_domain(const gbp_bridge_domain& bd)
: m_id(bd.id())
, m_bd(bd.m_bd)
+ , m_bvi(bd.m_bvi)
+ , m_uu_fwd(bd.m_uu_fwd)
{
}
@@ -65,6 +95,18 @@ gbp_bridge_domain::id() const
return (m_bd->id());
}
+const std::shared_ptr<bridge_domain>
+gbp_bridge_domain::get_bridge_domain()
+{
+ return m_bd;
+}
+
+const std::shared_ptr<interface>
+gbp_bridge_domain::get_bvi()
+{
+ return m_bvi;
+}
+
bool
gbp_bridge_domain::operator==(const gbp_bridge_domain& b) const
{
@@ -121,7 +163,14 @@ 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();
+
+ if (m_bvi)
+ s << " bvi:" << m_bvi->to_string();
+ if (m_uu_fwd)
+ s << " uu-fwd:" << m_uu_fwd->to_string();
+
+ s << "]";
return (s.str());
}
@@ -187,11 +236,11 @@ gbp_bridge_domain::event_handler::handle_populate(const client_db::key_t& key)
interface::find(payload.bd.bvi_sw_if_index);
if (uu_fwd && bvi) {
- gbp_bridge_domain bd(payload.bd.bd_id, *bvi, *uu_fwd);
+ gbp_bridge_domain bd(payload.bd.bd_id, bvi, uu_fwd);
OM::commit(key, bd);
VOM_LOG(log_level_t::DEBUG) << "dump: " << bd.to_string();
- } else {
- gbp_bridge_domain bd(payload.bd.bd_id);
+ } else if (bvi) {
+ gbp_bridge_domain bd(payload.bd.bd_id, *bvi);
OM::commit(key, bd);
VOM_LOG(log_level_t::DEBUG) << "dump: " << bd.to_string();
}