#include "vom/vxlan_tunnel.hpp"
#include "vom/logger.hpp"
+#include "vom/singular_db_funcs.hpp"
+#include "vom/vxlan_tunnel_cmds.hpp"
namespace VOM {
const std::string VXLAN_TUNNEL_NAME = "vxlan-tunnel-itf";
{
}
-vxlan_tunnel::vxlan_tunnel(const handle_t& hdl,
- const boost::asio::ip::address& src,
- const boost::asio::ip::address& dst,
- uint32_t vni)
- : interface(hdl,
- l2_address_t::ZERO,
- mk_name(src, dst, vni),
- interface::type_t::VXLAN,
- interface::admin_state_t::UP)
- , m_tep(src, dst, vni)
-{
-}
-
vxlan_tunnel::vxlan_tunnel(const vxlan_tunnel& o)
: interface(o)
, m_tep(o.m_tep)
vxlan_tunnel::sweep()
{
if (m_hdl) {
- HW::enqueue(new delete_cmd(m_hdl, m_tep));
+ HW::enqueue(new vxlan_tunnel_cmds::delete_cmd(m_hdl, m_tep));
}
HW::write();
}
vxlan_tunnel::replay()
{
if (m_hdl) {
- HW::enqueue(new create_cmd(m_hdl, name(), m_tep));
+ HW::enqueue(new vxlan_tunnel_cmds::create_cmd(m_hdl, name(), m_tep));
}
}
* the desired state is always that the interface should be created
*/
if (!m_hdl) {
- HW::enqueue(new create_cmd(m_hdl, name(), m_tep));
+ HW::enqueue(new vxlan_tunnel_cmds::create_cmd(m_hdl, name(), m_tep));
}
}
void
vxlan_tunnel::dump(std::ostream& os)
{
- m_db.dump(os);
+ db_dump(m_db, os);
}
void
vxlan_tunnel::event_handler::handle_populate(const client_db::key_t& key)
{
/*
- * dump VPP current states
- */
- std::shared_ptr<vxlan_tunnel::dump_cmd> cmd(new vxlan_tunnel::dump_cmd());
+ * dump VPP current states
+ */
+ std::shared_ptr<vxlan_tunnel_cmds::dump_cmd> cmd =
+ std::make_shared<vxlan_tunnel_cmds::dump_cmd>();
HW::enqueue(cmd);
HW::write();
boost::asio::ip::address dst =
from_bytes(payload.is_ipv6, payload.dst_address);
- vxlan_tunnel vt(hdl, src, dst, payload.vni);
+ std::shared_ptr<vxlan_tunnel> vt =
+ vxlan_tunnel(src, dst, payload.vni).singular();
+ vt->set(hdl);
- VOM_LOG(log_level_t::DEBUG) << "dump: " << vt.to_string();
+ VOM_LOG(log_level_t::DEBUG) << "dump: " << vt->to_string();
- OM::commit(key, vt);
+ OM::commit(key, *vt);
}
}
void
vxlan_tunnel::event_handler::show(std::ostream& os)
{
- m_db.dump(os);
-}
+ // dumped by the interface handler
}
+
+}; // namespace VOM
+
/*
* fd.io coding-style-patch-verification: ON
*