/* * Copyright (c) 2015-2016 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** \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 @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_stats { u32 client_index; u32 context; u32 enable_disable; u32 pid; }; /** \brief Want Interface Simple Stats, register for detailed interface 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 Please consider using want_per_interface_simple_stats with sw_if_index=~0 */ autoreply define want_interface_simple_stats { u32 client_index; u32 context; u32 enable_disable; u32 pid; }; /** \brief Want Per Interface simple 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 @param num - number of sw_if_indexes @param sw_ifs - array of sw_if_index */ autoreply define want_per_interface_simple_stats { u32 client_index; u32 context; u32 enable_disable; u32 pid; u32 num; u32 sw_ifs[num]; }; /** \brief Want Interface Combined 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 Please consider using want_per_interface_combined_stats with sw_if_index=~0 */ autoreply define want_interface_combined_stats { u32 client_index; u32 context; u32 enable_disable; u32 pid; }; /** \brief Want Per Interface Combined 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 @param num - number of sw_if_indexes @param sw_ifs - array of sw_if_index */ autoreply define want_per_interface_combined_stats { u32 client_index; u32 context; u32 enable_disable; u32 pid; u32 num; u32 sw_ifs[num]; }; /** \brief Want IP4 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_fib_stats { u32 client_index; u32 context; u32 enable_disable; u32 pid; }; /** \brief Want IP6 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_fib_stats { u32 client_index; u32 context; u32 enable_disable; 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 @param enable_disable - 1 = enable stats, 0 = disable @param pid - pid of process requesting stats updates */ autoreply define want_ip4_nbr_stats { u32 client_index; u32 context; u32 enable_disable; u32 pid; }; /** \brief Want IP6 NBR 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_nbr_stats { u32 client_index; u32 context; u32 enable_disable; u32 pid; }; typeonly manual_print manual_endian define ip4_fib_counter { u32 address; u8 address_length; u64 packets; u64 bytes; }; manual_print manual_endian define vnet_ip4_fib_counters { u32 vrf_id; u32 count; 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; u8 link_type; u64 packets; u64 bytes; }; /** * @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 * interface. If this flag is not set the it is a continuation of * stats for this interface * @param c counters */ manual_print manual_endian define vnet_ip4_nbr_counters { u32 count; u32 sw_if_index; u8 begin; vl_api_ip4_nbr_counter_t c[count]; }; typeonly manual_print manual_endian define ip6_fib_counter { u64 address[2]; u8 address_length; u64 packets; u64 bytes; }; manual_print manual_endian define vnet_ip6_fib_counters { u32 vrf_id; u32 count; 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]; u8 link_type; u64 packets; u64 bytes; }; manual_print manual_endian define vnet_ip6_nbr_counters { u32 count; u32 sw_if_index; u8 begin; 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 @param context - sender context, to match reply w/ request */ define vnet_get_summary_stats { u32 client_index; u32 context; }; /** \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 - 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[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") * End: */