diff options
author | Keith Burns (alagalah) <alagalah@gmail.com> | 2017-09-12 15:12:17 -0700 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2017-09-14 02:56:46 +0000 |
commit | 831fb59f2eba1abbd1e49fc7dce58172f0842258 (patch) | |
tree | 50950ca83e3d7e977790dcf317134531cf40ec9a /src/vnet | |
parent | 7c5c40db2a8d71a857ae63b6238cfac6e257da6d (diff) |
Stats refactor
- added per-interface simple/combined counters
- refactored fib/nbr API to use common registration scheme
- refactored "want_stats" and "want_interface" to use
per interface registration scheme
- fixed issues with SEGV when client disconnects abruptly.
Change-Id: Ib701bd8e4105d03548259217bfc809bd738b7c72
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
Diffstat (limited to 'src/vnet')
-rw-r--r-- | src/vnet/interface.api | 76 |
1 files changed, 74 insertions, 2 deletions
diff --git a/src/vnet/interface.api b/src/vnet/interface.api index 7a3743dda6c..94ecdd9f9ff 100644 --- a/src/vnet/interface.api +++ b/src/vnet/interface.api @@ -227,16 +227,61 @@ typeonly manual_print manual_endian define vlib_counter u64 bytes; /**< byte counter */ }; +/** \brief Combined interface counter data type for vnet_interface_combined_counters + @param sw_if_index - interface indexes for counters + @param rx_packets - received packet count + @param rx_bytes - received byte count + @param tx_packets - transmitted packet count + @param tx_bytes - transmitted byte count + +*/ +typeonly manual_print manual_endian define vnet_combined_counter +{ + u32 sw_if_index; + u64 rx_packets; /**< packet counter */ + u64 rx_bytes; /**< byte counter */ + u64 tx_packets; /**< packet counter */ + u64 tx_bytes; /**< byte counter */ +}; + +/** \brief Simple interface counter data type for vnet_interface_simple_counters + @param sw_if_index - interface indexes for counters + @param drop - RX or TX drops due to buffer starvation + @param punt - used with VNET "punt" disposition + @param rx_ip4 - received IP4 packets + @param rx_ip6 - received IP6 packets + @param rx_no_buffer - no RX buffers available + @param rx_miss - receive misses + @param rx_error - receive errors + @param tx_error - transmit errors + @param rx_mpls - received MPLS packet + +*/ +typeonly manual_print manual_endian define vnet_simple_counter +{ + u32 sw_if_index; + u64 drop; + u64 punt; + u64 rx_ip4; + u64 rx_ip6; + u64 rx_no_buffer; + u64 rx_miss; + u64 rx_error; + u64 tx_error; + u64 rx_mpls; +}; + /** \brief Simple stats counters structure @param vnet_counter_type- such as ip4, ip6, punts, etc @param first_sw_if_index - first sw index in block of index, counts @param count - number of counters, equal to the number of interfaces in this stats block @param data - contiguous block of u64 counters + + vnet_counter_type defined in enums - plural - in vnet/interface.h */ manual_print manual_endian define vnet_interface_simple_counters { - /* enums - plural - in vnet/interface.h */ u8 vnet_counter_type; u32 first_sw_if_index; u32 count; @@ -249,16 +294,43 @@ manual_print manual_endian define vnet_interface_simple_counters @param count - number of counters, equal to the number of interfaces in this stats block @param data - contiguous block of vlib_counter_t structures + + vnet_counter_type defined in enums - plural - in vnet/interface.h */ manual_print manual_endian define vnet_interface_combined_counters { - /* enums - plural - in vnet/interface.h */ u8 vnet_counter_type; u32 first_sw_if_index; u32 count; vl_api_vlib_counter_t data[count]; }; + +/** \brief Simple per interface stats counters structure + @param count - number of elements in message + @param timestamp - u32 vlib timestamp for control plane + @param data[count] - vl_api_vnet_simple_counter_t + +*/ +manual_print manual_endian define vnet_per_interface_simple_counters +{ + u32 count; + u32 timestamp; + vl_api_vnet_simple_counter_t data[count]; +}; + +/** \brief Combined stats counters structure per interface + @param count - number of elements in message + @param timestamp - u32 vlib timestamp for control plane + @param data[count] - vl_api_vnet_combined_counter_t +*/ +manual_print manual_endian define vnet_per_interface_combined_counters +{ + u32 count; + u32 timestamp; + vl_api_vnet_combined_counter_t data[count]; +}; + /** \brief Set unnumbered interface add / del request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request |