Thanks for doing the work Roopa and I apologize for late comments below:
On 16-04-09 02:38 AM, Roopa Prabhu wrote:
From: Roopa Prabhu <ro...@cumulusnetworks.com>
This patch also allows for af family stats (an example af stats for IPV6 is available with the second patch in the series). Like any other rtnetlink message, RTM_GETSTATS can be used to get stats of a single interface or all interfaces with NLM_F_DUMP. Future possible new types of stat attributes: - IFLA_MPLS_STATS (nested. for mpls/mdev stats) - IFLA_EXTENDED_STATS (nested. extended software netdev stats like bridge, vlan, vxlan etc) - IFLA_EXTENDED_HW_STATS (nested. extended hardware stats which are available via ethtool today)
I got the extended_hw_stats (which are very common in a lot of ASICS) if you mean stats on packet sizes. But would the other extended stats not just be per netdev kind specific? We have concept of XSTATS which maybe a fit.
This patch also declares a filter mask for all stat attributes. User has to provide a mask of stats attributes to query. This will be specified in a new hdr 'struct if_stats_msg' for stats messages. Without any attributes in the filter_mask, no stats will be returned.
Should such a command then not be rejected with an error code?
+/* STATS section */ + +struct if_stats_msg { + __u8 family; + __u32 ifindex; + __u32 filter_mask; +};
Needs to be 32 bit aligned. Do you need 32 bits for the filter mask? Perhaps a 16bit mask and an 8bit pad for future use. struct if_stats_msg { __u32 ifindex; __u16 filter_mask; __u8 family; __u8 pad; /* future use */ }; Or you could reverse those (from smallest to largest). BTW, any plans to do the cool feature where i inject a timeout period and i just get STATS events ;-> The filter struct would have to be more sophisticated - user would need to pass a list of ifindices and filter_mask as well as timeout. cheers, jamal