X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Fvom%2Fvom%2Finterface_cmds.cpp;h=691040dd5f12a6c2c3f76096a8baefca1bdbad3b;hb=7c0eb56f4;hp=c4fd6613a0e75970dcb0275df35d69361c2cf839;hpb=7e9affb696fcfd8f22cdce0caf46b1e2f25c5799;p=vpp.git diff --git a/extras/vom/vom/interface_cmds.cpp b/extras/vom/vom/interface_cmds.cpp index c4fd6613a0e..691040dd5f1 100644 --- a/extras/vom/vom/interface_cmds.cpp +++ b/extras/vom/vom/interface_cmds.cpp @@ -20,10 +20,44 @@ DEFINE_VAPI_MSG_IDS_VPE_API_JSON; DEFINE_VAPI_MSG_IDS_INTERFACE_API_JSON; DEFINE_VAPI_MSG_IDS_AF_PACKET_API_JSON; DEFINE_VAPI_MSG_IDS_VHOST_USER_API_JSON; -DEFINE_VAPI_MSG_IDS_STATS_API_JSON; namespace VOM { namespace interface_cmds { + +bvi_create_cmd::bvi_create_cmd(HW::item& item, + const std::string& name) + : create_cmd(item, name) +{ +} + +rc_t +bvi_create_cmd::issue(connection& con) +{ + msg_t req(con.ctx(), std::ref(*this)); + + auto& payload = req.get_request().get_payload(); + + payload.user_instance = ~0; + + VAPI_CALL(req.execute()); + + wait(); + + if (m_hw_item.rc() == rc_t::OK) { + insert_interface(); + } + + return rc_t::OK; +} +std::string +bvi_create_cmd::to_string() const +{ + std::ostringstream s; + s << "bvi-itf-create: " << m_hw_item.to_string() << " name:" << m_name; + + return (s.str()); +} + loopback_create_cmd::loopback_create_cmd(HW::item& item, const std::string& name) : create_cmd(item, name) @@ -139,6 +173,37 @@ vhost_create_cmd::to_string() const return (s.str()); } +bvi_delete_cmd::bvi_delete_cmd(HW::item& item) + : delete_cmd(item) +{ +} + +rc_t +bvi_delete_cmd::issue(connection& con) +{ + msg_t req(con.ctx(), std::ref(*this)); + + auto& payload = req.get_request().get_payload(); + payload.sw_if_index = m_hw_item.data().value(); + + VAPI_CALL(req.execute()); + + wait(); + m_hw_item.set(rc_t::NOOP); + + remove_interface(); + return rc_t::OK; +} + +std::string +bvi_delete_cmd::to_string() const +{ + std::ostringstream s; + s << "bvi-itf-delete: " << m_hw_item.to_string(); + + return (s.str()); +} + loopback_delete_cmd::loopback_delete_cmd(HW::item& item) : delete_cmd(item) { @@ -253,7 +318,7 @@ state_change_cmd::issue(connection& con) auto& payload = req.get_request().get_payload(); payload.sw_if_index = m_hdl.data().value(); - payload.admin_up_down = m_hw_item.data().value(); + payload.flags = (vapi_enum_if_status_flags)m_hw_item.data().value(); VAPI_CALL(req.execute()); @@ -451,8 +516,8 @@ events_cmd::notify() std::shared_ptr sp = interface::find(handle); if (sp) { - interface::oper_state_t oper_state = - interface::oper_state_t::from_int(payload.link_up_down); + interface::oper_state_t oper_state = interface::oper_state_t::from_int( + payload.flags & vapi_enum_if_status_flags::IF_STATUS_API_FLAG_LINK_UP); VOM_LOG(log_level_t::DEBUG) << "Interface Event: " << sp->to_string() << " state: " << oper_state.to_string(); @@ -473,137 +538,6 @@ events_cmd::to_string() const return ("itf-events"); } -/** - * Interface statistics - */ -stats_enable_cmd::stats_enable_cmd(interface::stat_listener& el, - const handle_t& handle) - : event_cmd(el.status()) - , m_listener(el) - , m_swifindex(handle) -{ -} - -bool -stats_enable_cmd::operator==(const stats_enable_cmd& other) const -{ - return (true); -} - -rc_t -stats_enable_cmd::issue(connection& con) -{ - /* - * First set the call back to handle the interface stats - */ - m_reg.reset(new reg_t(con.ctx(), std::ref(*(static_cast(this))))); - - /* - * then send the request to enable them - */ - msg_t req(con.ctx(), 1, std::ref(*(static_cast(this)))); - - auto& payload = req.get_request().get_payload(); - payload.enable_disable = 1; - payload.pid = getpid(); - payload.num = 1; - - payload.sw_ifs[0] = m_swifindex.value(); - - VAPI_CALL(req.execute()); - - wait(); - - return (rc_t::OK); -} - -void -stats_enable_cmd::retire(connection& con) -{ - /* - * disable interface stats. - */ - msg_t req(con.ctx(), 1, std::ref(*(static_cast(this)))); - - auto& payload = req.get_request().get_payload(); - payload.enable_disable = 0; - payload.pid = getpid(); - payload.num = 1; - payload.sw_ifs[0] = m_swifindex.value(); - - VAPI_CALL(req.execute()); - - wait(); -} - -interface::stat_listener& -stats_enable_cmd::listener() const -{ - return m_listener; -} - -void -stats_enable_cmd::set(const rc_t& rc) -{ - m_listener.status().set(rc); -} - -void -stats_enable_cmd::notify() -{ - m_listener.handle_interface_stat(this); -} - -std::string -stats_enable_cmd::to_string() const -{ - std::ostringstream s; - s << "itf-stats-enable itf:" << m_swifindex.to_string(); - return (s.str()); -} - -stats_disable_cmd::stats_disable_cmd(const handle_t& handle) - : rpc_cmd(m_res) - , m_swifindex(handle) -{ -} - -bool -stats_disable_cmd::operator==(const stats_disable_cmd& other) const -{ - return (true); -} - -rc_t -stats_disable_cmd::issue(connection& con) -{ - /* - * then send the request to enable them - */ - msg_t req(con.ctx(), 1, std::ref(*this)); - - auto& payload = req.get_request().get_payload(); - payload.enable_disable = 0; - payload.pid = getpid(); - payload.num = 1; - - payload.sw_ifs[0] = m_swifindex.value(); - - VAPI_CALL(req.execute()); - - wait(); - - return (rc_t::OK); -} - -std::string -stats_disable_cmd::to_string() const -{ - std::ostringstream s; - s << "itf-stats-disable itf:" << m_swifindex.to_string(); - return (s.str()); -} - dump_cmd::dump_cmd() { }