X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvpp-api%2Fvom%2Finterface_cmds.hpp;h=7a0040deb0ae09babeaa2a485b14bcbbfbb0fb63;hb=e821ab100aea2fb3f740a98650eb750ff5911c49;hp=c86df92a4aaf7e427d8e529fe52488f4934e2d4d;hpb=5a4f96a178b693ace8e736c30c949ced5928d824;p=vpp.git diff --git a/src/vpp-api/vom/interface_cmds.hpp b/src/vpp-api/vom/interface_cmds.hpp index c86df92a4aa..7a0040deb0a 100644 --- a/src/vpp-api/vom/interface_cmds.hpp +++ b/src/vpp-api/vom/interface_cmds.hpp @@ -27,6 +27,7 @@ #include #include #include +#include #include namespace VOM { @@ -109,6 +110,30 @@ public: std::string to_string() const; }; +/** + * A functor class that creates an interface + */ +class vhost_create_cmd + : public interface::create_cmd +{ +public: + vhost_create_cmd(HW::item& item, + const std::string& name, + const std::string& tag); + + /** + * Issue the command to VPP/HW + */ + rc_t issue(connection& con); + /** + * convert to string format for debug purposes + */ + std::string to_string() const; + +private: + const std::string m_tag; +}; + /** * A command class to delete loopback interfaces in VPP */ @@ -174,6 +199,25 @@ public: std::string to_string() const; }; +/** + * A functor class that deletes a Vhost interface + */ +class vhost_delete_cmd + : public interface::delete_cmd +{ +public: + vhost_delete_cmd(HW::item& item, const std::string& name); + + /** + * Issue the command to VPP/HW + */ + rc_t issue(connection& con); + /** + * convert to string format for debug purposes + */ + std::string to_string() const; +}; + /** * A command class to set tag on interfaces */ @@ -288,7 +332,7 @@ private: }; /** - * A command class that binds an interface to an L3 table + * A command class that changes the MAC address on an interface */ class set_mac_cmd : public rpc_cmd, rc_t, @@ -323,6 +367,50 @@ private: const HW::item& m_hdl; }; +/** + * A command class that enables detailed stats collection on an interface + */ +class collect_detail_stats_change_cmd + : public rpc_cmd, + rc_t, + vapi::Collect_detailed_interface_stats> +{ +public: + /** + * Constructor taking the HW::item to update + * and the handle of the interface + */ + collect_detail_stats_change_cmd(HW::item& item, + const handle_t& h, + bool enable); + + /** + * Issue the command to VPP/HW + */ + rc_t issue(connection& con); + + /** + * convert to string format for debug purposes + */ + std::string to_string() const; + + /** + * Comparison operator - only used for UT + */ + bool operator==(const collect_detail_stats_change_cmd& i) const; + +private: + /** + * the handle of the interface to update + */ + const handle_t& m_hdl; + + /** + * enable or disable the detailed stats collection + */ + bool m_enable; +}; + /** * A command class represents our desire to recieve interface events */ @@ -370,14 +458,15 @@ private: /** * A command class represents our desire to recieve interface stats */ -class stats_cmd : public event_cmd +class stats_enable_cmd + : public event_cmd { public: /** * Constructor taking the listner to notify */ - stats_cmd(interface::stat_listener& el, const handle_t& handle); + stats_enable_cmd(interface::stat_listener& el, const handle_t& handle); /** * Issue the command to VPP/HW @@ -394,10 +483,20 @@ public: */ std::string to_string() const; + /** + * (re)set status + */ + void set(const rc_t& rc); + + /** + * get listener + */ + interface::stat_listener& listener() const; + /** * Comparison operator - only used for UT */ - bool operator==(const stats_cmd& i) const; + bool operator==(const stats_enable_cmd& i) const; /** * Called when it's time to poke the listeners @@ -410,6 +509,46 @@ private: */ interface::stat_listener& m_listener; + /** + * The interface on which we are enabling states + */ + const handle_t& m_swifindex; +}; + +/** + * A command class represents our desire to recieve interface stats + */ +class stats_disable_cmd + : public rpc_cmd, + rc_t, + vapi::Want_per_interface_combined_stats> +{ +public: + /** + * Constructor taking the listner to notify + */ + stats_disable_cmd(const handle_t& handle); + + /** + * Issue the command to VPP/HW + */ + rc_t issue(connection& con); + + /** + * convert to string format for debug purposes + */ + std::string to_string() const; + + /** + * Comparison operator - only used for UT + */ + bool operator==(const stats_disable_cmd& i) const; + +private: + HW::item m_res; + /** + * The interface on which we are disabling states + */ handle_t m_swifindex; }; @@ -438,6 +577,32 @@ public: */ bool operator==(const dump_cmd& i) const; }; + +/** + * A cmd class that Dumps all the Vpp Interfaces + */ +class vhost_dump_cmd : public VOM::dump_cmd +{ +public: + /** + * Default Constructor + */ + vhost_dump_cmd(); + + /** + * Issue the command to VPP/HW + */ + rc_t issue(connection& con); + /** + * convert to string format for debug purposes + */ + std::string to_string() const; + + /** + * Comparison operator - only used for UT + */ + bool operator==(const vhost_dump_cmd& i) const; +}; }; }; /*