make test: add option for adding extra vpp config
[vpp.git] / src / vpp / stats / stats.api
index caf8f51..c94471a 100644 (file)
     This file defines the stats API 
 */
 
+option version = "1.0.2";
+
+import "vnet/interface.api";
+import "vnet/bier/bier.api";
+
+service {
+  rpc want_stats
+    returns want_stats_reply;
+  rpc want_interface_simple_stats
+    returns want_interface_simple_stats_reply
+    events vnet_interface_simple_counters;
+  rpc want_per_interface_simple_stats
+    returns want_per_interface_simple_stats_reply
+    events vnet_per_interface_simple_counters;
+  rpc want_interface_combined_stats
+    returns want_interface_combined_stats_reply
+    events vnet_interface_combined_counters;
+  rpc want_per_interface_combined_stats
+    returns want_per_interface_combined_stats_reply
+    events vnet_per_interface_combined_counters;
+  rpc want_ip4_fib_stats
+    returns want_ip4_fib_stats_reply
+    events vnet_ip4_fib_counters;
+  rpc want_ip6_fib_stats
+    returns want_ip6_fib_stats_reply
+    events vnet_ip6_fib_counters;
+  rpc want_ip4_mfib_stats
+    returns want_ip4_mfib_stats_reply
+    events vnet_ip4_mfib_counters;
+  rpc want_ip6_mfib_stats
+    returns want_ip6_mfib_stats_reply
+    events vnet_ip6_mfib_counters;
+  rpc want_ip4_nbr_stats
+    returns want_ip4_nbr_stats_reply
+    events vnet_ip4_nbr_counters;
+  rpc want_ip6_nbr_stats
+    returns want_ip6_nbr_stats_reply
+    events vnet_ip6_nbr_counters;
+  rpc want_udp_encap_stats
+    returns want_udp_encap_stats_reply
+    events vnet_udp_encap_counters;
+  rpc want_bier_neighbor_stats
+    returns want_bier_neighbor_stats_reply
+    events vnet_bier_neighbor_counters;
+};
 
 /** \brief Want Stats, enable/disable ALL stats updates
     @param client_index - opaque cookie to identify the sender
@@ -132,6 +177,34 @@ autoreply define want_ip6_fib_stats
   u32 pid;
 };
 
+/** \brief Want IP4 multicast FIB Stats, register for continuous stats
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param enable_disable - 1 = enable stats, 0 = disable
+    @param pid - pid of process requesting stats updates
+*/
+autoreply define want_ip4_mfib_stats
+{
+  u32 client_index;
+  u32 context;
+  u32 enable_disable;
+  u32 pid;
+};
+
+/** \brief Want IP6 multicast FIB Stats, register for continuous stats
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param enable_disable - 1 = enable stats, 0 = disable
+    @param pid - pid of process requesting stats updates
+*/
+autoreply define want_ip6_mfib_stats
+{
+  u32 client_index;
+  u32 context;
+  u32 enable_disable;
+  u32 pid;
+};
+
 /** \brief Want IP4 NBR Stats, register for continuous stats
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -175,6 +248,22 @@ manual_print manual_endian define vnet_ip4_fib_counters
   vl_api_ip4_fib_counter_t c[count];
 };
 
+typeonly manual_print manual_endian define ip4_mfib_counter
+{
+  u8 source[4];
+  u8 group[4];
+  u8 group_length;
+  u64 packets;
+  u64 bytes;
+};
+
+manual_print manual_endian define vnet_ip4_mfib_counters
+{
+  u32 vrf_id;
+  u32 count;
+  vl_api_ip4_mfib_counter_t c[count];
+};
+
 typeonly manual_print manual_endian define ip4_nbr_counter
 {
   u32 address;
@@ -184,7 +273,7 @@ typeonly manual_print manual_endian define ip4_nbr_counter
 };
 
 /**
- * @brief Per-neighbour (i.e. per-adjacency) coutners
+ * @brief Per-neighbour (i.e. per-adjacency) counters
  * @param count The size of the array of counters
  * @param sw_if_index The interface the adjacency is on
  * @param begin Flag to indicate this is the first set of stats for this
@@ -215,6 +304,22 @@ manual_print manual_endian define vnet_ip6_fib_counters
   vl_api_ip6_fib_counter_t c[count];
 };
 
+typeonly manual_print manual_endian define ip6_mfib_counter
+{
+  u8 source[16];
+  u8 group[16];
+  u8 group_length;
+  u64 packets;
+  u64 bytes;
+};
+
+manual_print manual_endian define vnet_ip6_mfib_counters
+{
+  u32 vrf_id;
+  u32 count;
+  vl_api_ip6_mfib_counter_t c[count];
+};
+
 typeonly manual_print manual_endian define ip6_nbr_counter
 {
   u64 address[2];
@@ -231,6 +336,64 @@ manual_print manual_endian define vnet_ip6_nbr_counters
   vl_api_ip6_nbr_counter_t c[count];
 };
 
+/** \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
+{
+  u8 vnet_counter_type;
+  u32 first_sw_if_index;
+  u32 count;
+  u64 data[count];
+};
+
+/** \brief Combined 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 vlib_counter_t structures
+
+    vnet_counter_type defined in enums - plural - in vnet/interface.h
+*/
+manual_print manual_endian define vnet_interface_combined_counters
+{
+  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 Request for a single block of summary stats
     @param client_index - opaque cookie to identify the sender
@@ -245,19 +408,112 @@ define vnet_get_summary_stats
 /** \brief Reply for vnet_get_summary_stats request
     @param context - sender context, to match reply w/ request
     @param retval - return code for request
-    @param total_pkts -  
-    @param total_bytes -
+    @param total_pkts - length of the array must match the length of 
+                        the combined counter part of the enum in interface.h
+    @param total_bytes - length of the array must match the length of 
+                         the combined counter part of the enum in interface.h
     @param vector_rate - 
 */
 define vnet_get_summary_stats_reply
 {
   u32 context;
   i32 retval;
-  u64 total_pkts[2];
-  u64 total_bytes[2];
+  u64 total_pkts[8];
+  u64 total_bytes[8];
   f64 vector_rate;
 };
 
+/** \brief Get delay between polling statistics
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+*/
+define stats_get_poller_delay
+{
+  u32 client_index;
+  u32 context;
+};
+
+/** \brief Get delay between polling statistics reply
+    @param context - sender context, to match reply w/ request
+    @param retval - return code for request
+    @param delay - poller delay
+*/
+define stats_get_poller_delay_reply
+{
+  u32 context;
+  i32 retval;
+  u32 delay;
+};
+
+/** \brief Want UDP encap Stats, register for continuous stats
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param enable - 1 = enable stats, 0 = disable
+    @param pid - pid of process requesting stats updates
+*/
+autoreply define want_udp_encap_stats
+{
+  u32 client_index;
+  u32 context;
+  u32 enable;
+  u32 pid;
+};
+
+/** \brief Stat for one UDP encap object
+    @param id - The ID of the object, same as passed for the create
+    @param packets - number of packets sent
+    @param bytes - number of bytes sent
+*/
+typeonly manual_print manual_endian define udp_encap_counter
+{
+  u32 id;
+  u64 packets;
+  u64 bytes;
+};
+
+manual_print manual_endian define vnet_udp_encap_counters
+{
+  u32 timestamp;
+  u32 count;
+  vl_api_udp_encap_counter_t c[count];
+};
+
+/** \brief Want BIER neighbor Stats, register for continuous stats
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param enable - 1 = enable stats, 0 = disable
+    @param pid - pid of process requesting stats updates
+*/
+autoreply define want_bier_neighbor_stats
+{
+  u32 client_index;
+  u32 context;
+  u32 enable;
+  u32 pid;
+};
+
+/** \brief Stat for one BIER neighbor object
+    @param tbl_id - The BIER Table ID the neighbour belongs to.
+    @param path - The path describing the neighbor (this is the data
+                  given during a BIER route add)
+    @param packets - number of packets sent
+    @param bytes - number of bytes sent
+*/
+typeonly manual_print manual_endian define bier_neighbor_counter
+{
+  vl_api_bier_table_id_t tbl_id;
+  vl_api_fib_path_t path;
+  u64 packets;
+  u64 bytes;
+};
+
+manual_print manual_endian define vnet_bier_neighbor_counters
+{
+  u32 timestamp;
+  u32 count;
+  vl_api_bier_neighbor_counter_t c[count];
+};
+
 /*
  * Local Variables:
  * eval: (c-set-style "gnu")