X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Fvom%2Fvom%2Fvxlan_tunnel.cpp;fp=extras%2Fvom%2Fvom%2Fvxlan_tunnel.cpp;h=2bc386c1ba7e8259631b38c000ac33277b8e41ef;hb=cf3ecb1a42c9c40f386ed59964117c3dab15fa5c;hp=2abff7615eba06788eb40410456443b7625d235f;hpb=11312ef90b334c43966c057591c5a54750d911d2;p=vpp.git diff --git a/extras/vom/vom/vxlan_tunnel.cpp b/extras/vom/vom/vxlan_tunnel.cpp index 2abff7615eb..2bc386c1ba7 100644 --- a/extras/vom/vom/vxlan_tunnel.cpp +++ b/extras/vom/vom/vxlan_tunnel.cpp @@ -91,6 +91,21 @@ vxlan_tunnel::vxlan_tunnel(const boost::asio::ip::address& src, interface::admin_state_t::UP) , m_tep(src, dst, vni) , m_mode(mode) + , m_mcast_itf() +{ +} + +vxlan_tunnel::vxlan_tunnel(const boost::asio::ip::address& src, + const boost::asio::ip::address& dst, + uint32_t vni, + const interface& mcast_itf, + const mode_t& mode) + : interface(mk_name(src, dst, mode, vni), + interface::type_t::VXLAN, + interface::admin_state_t::UP) + , m_tep(src, dst, vni) + , m_mode(mode) + , m_mcast_itf(mcast_itf.singular()) { } @@ -130,9 +145,13 @@ vxlan_tunnel::replay() { if (m_hdl) { if (mode_t::STANDARD == m_mode) - HW::enqueue(new vxlan_tunnel_cmds::create_cmd(m_hdl, name(), m_tep)); + HW::enqueue(new vxlan_tunnel_cmds::create_cmd( + m_hdl, name(), m_tep, + (m_mcast_itf ? m_mcast_itf->handle() : handle_t::INVALID))); else if (mode_t::GBP == m_mode) - HW::enqueue(new vxlan_gbp_tunnel_cmds::create_cmd(m_hdl, name(), m_tep)); + HW::enqueue(new vxlan_gbp_tunnel_cmds::create_cmd( + m_hdl, name(), m_tep, + (m_mcast_itf ? m_mcast_itf->handle() : handle_t::INVALID))); } } @@ -160,9 +179,13 @@ vxlan_tunnel::update(const vxlan_tunnel& desired) */ if (!m_hdl) { if (mode_t::STANDARD == m_mode) - HW::enqueue(new vxlan_tunnel_cmds::create_cmd(m_hdl, name(), m_tep)); + HW::enqueue(new vxlan_tunnel_cmds::create_cmd( + m_hdl, name(), m_tep, + (m_mcast_itf ? m_mcast_itf->handle() : handle_t::INVALID))); else if (mode_t::GBP == m_mode) - HW::enqueue(new vxlan_gbp_tunnel_cmds::create_cmd(m_hdl, name(), m_tep)); + HW::enqueue(new vxlan_gbp_tunnel_cmds::create_cmd( + m_hdl, name(), m_tep, + (m_mcast_itf ? m_mcast_itf->handle() : handle_t::INVALID))); } }