X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Fvom%2Fvom%2Fl2_binding_cmds.cpp;h=70413adb411ceb6eeaa3ac0ca19a896a5b3e88a5;hb=2d18d2ea9f0e3d6c47d365ec135af651b14e8165;hp=c072f67fd56cbb86e1d4bd81d44d759c1302b016;hpb=208c29aac523231af2420a95ba7e5d361698780b;p=vpp.git diff --git a/extras/vom/vom/l2_binding_cmds.cpp b/extras/vom/vom/l2_binding_cmds.cpp index c072f67fd56..70413adb411 100644 --- a/extras/vom/vom/l2_binding_cmds.cpp +++ b/extras/vom/vom/l2_binding_cmds.cpp @@ -20,11 +20,11 @@ namespace l2_binding_cmds { bind_cmd::bind_cmd(HW::item& item, const handle_t& itf, uint32_t bd, - bool is_bvi) + const l2_binding::l2_port_type_t& port_type) : rpc_cmd(item) , m_itf(itf) , m_bd(bd) - , m_is_bvi(is_bvi) + , m_port_type(port_type) { } @@ -32,7 +32,7 @@ bool bind_cmd::operator==(const bind_cmd& other) const { return ((m_itf == other.m_itf) && (m_bd == other.m_bd) && - (m_is_bvi == other.m_is_bvi)); + (m_port_type == other.m_port_type)); } rc_t @@ -44,7 +44,13 @@ bind_cmd::issue(connection& con) payload.rx_sw_if_index = m_itf.value(); payload.bd_id = m_bd; payload.shg = 0; - payload.bvi = m_is_bvi; + if (m_port_type == l2_binding::l2_port_type_t::L2_PORT_TYPE_BVI) + payload.port_type = L2_API_PORT_TYPE_BVI; + else if (m_port_type == l2_binding::l2_port_type_t::L2_PORT_TYPE_UU_FWD) + payload.port_type = L2_API_PORT_TYPE_UU_FWD; + else + payload.port_type = L2_API_PORT_TYPE_NORMAL; + payload.enable = 1; VAPI_CALL(req.execute()); @@ -57,7 +63,7 @@ bind_cmd::to_string() const { std::ostringstream s; s << "L2-bind: " << m_hw_item.to_string() << " itf:" << m_itf.to_string() - << " bd:" << m_bd; + << " bd:" << m_bd << " port-type:" << m_port_type.to_string(); return (s.str()); } @@ -65,11 +71,11 @@ bind_cmd::to_string() const unbind_cmd::unbind_cmd(HW::item& item, const handle_t& itf, uint32_t bd, - bool is_bvi) + const l2_binding::l2_port_type_t& port_type) : rpc_cmd(item) , m_itf(itf) , m_bd(bd) - , m_is_bvi(is_bvi) + , m_port_type(port_type) { } @@ -77,7 +83,7 @@ bool unbind_cmd::operator==(const unbind_cmd& other) const { return ((m_itf == other.m_itf) && (m_bd == other.m_bd) && - (m_is_bvi == other.m_is_bvi)); + (m_port_type == other.m_port_type)); } rc_t @@ -89,7 +95,13 @@ unbind_cmd::issue(connection& con) payload.rx_sw_if_index = m_itf.value(); payload.bd_id = m_bd; payload.shg = 0; - payload.bvi = m_is_bvi; + if (m_port_type == l2_binding::l2_port_type_t::L2_PORT_TYPE_BVI) + payload.port_type = L2_API_PORT_TYPE_BVI; + else if (m_port_type == l2_binding::l2_port_type_t::L2_PORT_TYPE_UU_FWD) + payload.port_type = L2_API_PORT_TYPE_UU_FWD; + else + payload.port_type = L2_API_PORT_TYPE_NORMAL; + payload.enable = 0; VAPI_CALL(req.execute()); @@ -105,54 +117,10 @@ unbind_cmd::to_string() const { std::ostringstream s; s << "L2-unbind: " << m_hw_item.to_string() << " itf:" << m_itf.to_string() - << " bd:" << m_bd; - - return (s.str()); -} - -set_vtr_op_cmd::set_vtr_op_cmd(HW::item& item, - const handle_t& itf, - uint16_t tag) - : rpc_cmd(item) - , m_itf(itf) - , m_tag(tag) -{ -} - -bool -set_vtr_op_cmd::operator==(const set_vtr_op_cmd& other) const -{ - return ( - (m_hw_item.data() == other.m_hw_item.data() && m_itf == other.m_itf) && - (m_tag == other.m_tag)); -} - -rc_t -set_vtr_op_cmd::issue(connection& con) -{ - msg_t req(con.ctx(), std::ref(*this)); - - auto& payload = req.get_request().get_payload(); - payload.sw_if_index = m_itf.value(); - payload.vtr_op = m_hw_item.data().value(); - payload.push_dot1q = 1; - payload.tag1 = m_tag; - - VAPI_CALL(req.execute()); - - return (wait()); -} - -std::string -set_vtr_op_cmd::to_string() const -{ - std::ostringstream s; - s << "L2-set-vtr-op: " << m_hw_item.to_string() - << " itf:" << m_itf.to_string() << " tag:" << m_tag; + << " bd:" << m_bd << " port-type:" << m_port_type; return (s.str()); } - }; // namespace l2_binding_cmds }; // namespace VOM