class interface : public object_base
{
public:
+ struct stats_type_t : public enum_base<stats_type_t>
+ {
+ const static stats_type_t DETAILED;
+ const static stats_type_t NORMAL;
+
+ private:
+ stats_type_t(int v, const std::string& s);
+ };
+
/**
* The key for interface's key
*/
struct type_t : enum_base<type_t>
{
/**
- * Unkown type
+ * Unknown type
*/
const static type_t UNKNOWN;
/**
/**
* Enable stats for this interface
*/
- void enable_stats(stat_listener& el);
+ void enable_stats(stat_listener& el,
+ const stats_type_t& st = stats_type_t::NORMAL);
protected:
/**
/**
* enable the interface stats in the singular instance
*/
- void enable_stats_i(stat_listener& el);
+ void enable_stats_i(stat_listener& el, const stats_type_t& st);
/**
* Commit the acculmulated changes into VPP. i.e. to a 'HW" write.
*/
HW::item<l2_address_t> m_l2_address;
+ /**
+ * The state of the detailed stats collection
+ */
+ HW::item<stats_type_t> m_stats_type;
+
/**
* Operational state of the interface
*/