X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Fvom%2Fvom%2Fvxlan_tunnel.cpp;h=ca0790103fff23fae9d4ec7be681cd9d5e641246;hb=4079161fd9182a356b7b845d66bc5314ee880715;hp=2abff7615eba06788eb40410456443b7625d235f;hpb=193c47d900bfbc15e4e46ede7c25ecf1ca95b898;p=vpp.git diff --git a/extras/vom/vom/vxlan_tunnel.cpp b/extras/vom/vom/vxlan_tunnel.cpp index 2abff7615eb..ca0790103ff 100644 --- a/extras/vom/vom/vxlan_tunnel.cpp +++ b/extras/vom/vom/vxlan_tunnel.cpp @@ -26,8 +26,8 @@ const std::string VXLAN_TUNNEL_NAME = "vxlan-tunnel-itf"; vxlan_tunnel::event_handler vxlan_tunnel::m_evh; const vxlan_tunnel::mode_t vxlan_tunnel::mode_t::STANDARD(0, "standard"); -const vxlan_tunnel::mode_t vxlan_tunnel::mode_t::GBP(0, "GBP"); -const vxlan_tunnel::mode_t vxlan_tunnel::mode_t::GPE(0, "GPE"); +const vxlan_tunnel::mode_t vxlan_tunnel::mode_t::GBP(1, "GBP"); +const vxlan_tunnel::mode_t vxlan_tunnel::mode_t::GPE(2, "GPE"); vxlan_tunnel::mode_t::mode_t(int v, const std::string s) : enum_base(v, s) @@ -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))); } }