gbp_route_domain::gbp_route_domain(const gbp_route_domain& rd)
: m_id(rd.id())
, m_rd(rd.m_rd)
+ , m_ip4_uu_fwd(rd.m_ip4_uu_fwd)
+ , m_ip6_uu_fwd(rd.m_ip6_uu_fwd)
{
}
{
}
+gbp_route_domain::gbp_route_domain(const route_domain& rd,
+ const std::shared_ptr<interface> ip4_uu_fwd,
+ const std::shared_ptr<interface> ip6_uu_fwd)
+ : m_id(rd.table_id())
+ , m_rd(rd.singular())
+ , m_ip4_uu_fwd(ip4_uu_fwd)
+ , m_ip6_uu_fwd(ip6_uu_fwd)
+{
+ if (m_ip4_uu_fwd)
+ m_ip4_uu_fwd = m_ip4_uu_fwd->singular();
+ if (m_ip6_uu_fwd)
+ m_ip6_uu_fwd = m_ip6_uu_fwd->singular();
+}
+
gbp_route_domain::gbp_route_domain(const route_domain& rd)
: m_id(rd.table_id())
, m_rd(rd.singular())
+ , m_ip4_uu_fwd()
+ , m_ip6_uu_fwd()
{
}
return (m_rd->key());
}
-uint32_t
+route::table_id_t
gbp_route_domain::id() const
{
return (m_rd->table_id());
}
+const std::shared_ptr<route_domain>
+gbp_route_domain::get_route_domain() const
+{
+ return m_rd;
+}
+
+const std::shared_ptr<interface>
+gbp_route_domain::get_ip4_uu_fwd() const
+{
+ return m_ip4_uu_fwd;
+}
+
+const std::shared_ptr<interface>
+gbp_route_domain::get_ip6_uu_fwd() const
+{
+ return m_ip6_uu_fwd;
+}
+
bool
gbp_route_domain::operator==(const gbp_route_domain& b) const
{
gbp_route_domain::to_string() const
{
std::ostringstream s;
- s << "gbp-route-domain:[" << m_rd->to_string() << "]";
+ s << "gbp-route-domain:[" << m_rd->to_string();
+
+ if (m_ip4_uu_fwd)
+ s << " v4-uu:[" << m_ip4_uu_fwd->to_string() << "]";
+ if (m_ip6_uu_fwd)
+ s << " v6-uu:[" << m_ip6_uu_fwd->to_string() << "]";
+
+ s << "]";
return (s.str());
}
std::shared_ptr<gbp_route_domain>
gbp_route_domain::find_or_add(const gbp_route_domain& temp)
{
- return (m_db.find_or_add(temp.m_id.data(), temp));
+ return (m_db.find_or_add(temp.key(), temp));
}
std::shared_ptr<gbp_route_domain>
dependency_t
gbp_route_domain::event_handler::order() const
{
- return (dependency_t::TABLE);
+ return (dependency_t::VIRTUAL_TABLE);
}
void