#include "vom/route_domain.hpp"
#include "vom/cmd.hpp"
+#include "vom/route_domain_cmds.hpp"
namespace VOM {
+
+route_domain::event_handler route_domain::m_evh;
+
/**
* A DB of al the interfaces, key on the name
*/
{
}
+bool
+route_domain::operator==(const route_domain& r) const
+{
+ return (m_table_id == r.m_table_id);
+}
+
route::table_id_t
route_domain::table_id() const
{
route_domain::sweep()
{
if (m_hw_v4) {
- HW::enqueue(new delete_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
+ HW::enqueue(
+ new route_domain_cmds::delete_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
}
if (m_hw_v6) {
- HW::enqueue(new delete_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
+ HW::enqueue(
+ new route_domain_cmds::delete_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
}
HW::write();
}
route_domain::replay()
{
if (m_hw_v4) {
- HW::enqueue(new create_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
+ HW::enqueue(
+ new route_domain_cmds::create_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
}
if (m_hw_v6) {
- HW::enqueue(new create_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
+ HW::enqueue(
+ new route_domain_cmds::create_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
}
}
{
std::ostringstream s;
s << "route-domain:["
- << "table-id:" << m_table_id << " v4:" << m_hw_v4 << " v6:" << m_hw_v6
- << "]";
+ << "table-id:" << m_table_id << " v4:" << m_hw_v4.to_string()
+ << " v6:" << m_hw_v6.to_string() << "]";
return (s.str());
}
std::shared_ptr<route_domain>
-route_domain::find(const route_domain& temp)
+route_domain::find(const key_t& k)
{
- std::shared_ptr<route_domain> rd;
-
- auto it = m_db.cbegin();
-
- while (it != m_db.cend()) {
- /*
- * The key in the DB is a pair of the interface's name and prefix.
- * If the keys match, save the L3-config
- */
- auto key = it->first;
-
- if (temp.table_id() == key) {
- rd = it->second.lock();
- break;
- }
-
- ++it;
- }
-
- return (rd);
+ return (m_db.find(k));
}
void
* create the table if it is not yet created
*/
if (rc_t::OK != m_hw_v4.rc()) {
- HW::enqueue(new create_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
+ HW::enqueue(
+ new route_domain_cmds::create_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
}
if (rc_t::OK != m_hw_v6.rc()) {
- HW::enqueue(new create_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
+ HW::enqueue(
+ new route_domain_cmds::create_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
}
}
{
m_db.dump(os);
}
+
+void
+route_domain::event_handler::handle_populate(const client_db::key_t& key)
+{
+}
+
+route_domain::event_handler::event_handler()
+{
+ OM::register_listener(this);
+ inspect::register_handler({ "rd", "route-domain" }, "Route Domains", this);
+}
+
+void
+route_domain::event_handler::handle_replay()
+{
+ m_db.replay();
+}
+
+dependency_t
+route_domain::event_handler::order() const
+{
+ return (dependency_t::TABLE);
+}
+
+void
+route_domain::event_handler::show(std::ostream& os)
+{
+ m_db.dump(os);
}
+
+}; // namespace VOPM
+
/*
* fd.io coding-style-patch-verification: ON
*