+option version = "1.0.0";
+
+service {
+ rpc want_interface_events returns want_interface_events_reply
+ events sw_interface_event;
+};
+
/** \brief Set flags on the interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
};
/** \brief Interface Event generated by want_interface_events
- @param context - sender context, to match reply w/ request
+ @param client_index - opaque cookie to identify the sender
+ @param pid - client pid registered to receive notification
@param sw_if_index - index of the interface of the event
@param admin_up_down - The administrative state; 1 = up, 0 = down
@param link_up_down - The operational state; 1 = up, 0 = down
*/
define sw_interface_event
{
- u32 context;
+ u32 client_index;
+ u32 pid;
u32 sw_if_index;
u8 admin_up_down;
u8 link_up_down;
u64 bytes; /**< byte counter */
};
-/** \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
+/** \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
+
*/
-manual_print manual_endian define vnet_interface_simple_counters
+typeonly manual_print manual_endian define vnet_combined_counter
{
- /* enums - plural - in vnet/interface.h */
- u8 vnet_counter_type;
- u32 first_sw_if_index;
- u32 count;
- u64 data[count];
+ 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 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
+/** \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
+
*/
-manual_print manual_endian define vnet_interface_combined_counters
+typeonly manual_print manual_endian define vnet_simple_counter
{
- /* enums - plural - in vnet/interface.h */
- u8 vnet_counter_type;
- u32 first_sw_if_index;
- u32 count;
- vl_api_vlib_counter_t data[count];
+ 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 Set unnumbered interface add / del request
u8 mac_address[6];
};
+/** \brief Set an interface's rx-mode
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param sw_if_index - the interface whose rx-mode will be set
+ @param queue_id_valid - 1 = the queue_id field is valid. 0 means all
+ queue_id's
+ @param queue_id - the queue number whose rx-mode will be set. Only valid
+ if queue_id_valid is 1
+ @param mode - polling=1, interrupt=2, adaptive=3
+*/
+autoreply define sw_interface_set_rx_mode
+{
+ u32 client_index;
+ u32 context;
+ u32 sw_if_index;
+ u8 queue_id_valid;
+ u32 queue_id;
+ u8 mode;
+};
+
+/* Gross kludge, DGMS */
+autoreply define interface_name_renumber
+{
+ u32 client_index;
+ u32 context;
+ u32 sw_if_index;
+ u32 new_show_dev_instance;
+};
+
+define create_subif
+{
+ u32 client_index;
+ u32 context;
+ u32 sw_if_index;
+ u32 sub_id;
+
+ /* These fields map directly onto the subif template */
+ u8 no_tags;
+ u8 one_tag;
+ u8 two_tags;
+ u8 dot1ad; // 0 = dot1q, 1=dot1ad
+ u8 exact_match;
+ u8 default_sub;
+ u8 outer_vlan_id_any;
+ u8 inner_vlan_id_any;
+ u16 outer_vlan_id;
+ u16 inner_vlan_id;
+};
+
+define create_subif_reply
+{
+ u32 context;
+ i32 retval;
+ u32 sw_if_index;
+};
+
+/** \brief Create a new subinterface with the given vlan id
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param sw_if_index - software index of the new vlan's parent interface
+ @param vlan_id - vlan tag of the new interface
+*/
+define create_vlan_subif
+{
+ u32 client_index;
+ u32 context;
+ u32 sw_if_index;
+ u32 vlan_id;
+};
+
+/** \brief Reply for the vlan subinterface create request
+ @param context - returned sender context, to match reply w/ request
+ @param retval - return code
+ @param sw_if_index - software index allocated for the new subinterface
+*/
+define create_vlan_subif_reply
+{
+ u32 context;
+ i32 retval;
+ u32 sw_if_index;
+};
+
+/** \brief Delete sub interface request
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param sw_if_index - sw index of the interface that was created by create_subif
+*/
+autoreply define delete_subif {
+ u32 client_index;
+ u32 context;
+ u32 sw_if_index;
+};
+
+/** \brief Create loopback interface request
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param mac_address - mac addr to assign to the interface if none-zero
+*/
+define create_loopback
+{
+ u32 client_index;
+ u32 context;
+ u8 mac_address[6];
+};
+
+/** \brief Create loopback interface response
+ @param context - sender context, to match reply w/ request
+ @param sw_if_index - sw index of the interface that was created
+ @param retval - return code for the request
+*/
+define create_loopback_reply
+{
+ u32 context;
+ i32 retval;
+ u32 sw_if_index;
+};
+
+/** \brief Create loopback interface instance request
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param mac_address - mac addr to assign to the interface if none-zero
+ @param is_specified - if non-0, a specific user_instance is being requested
+ @param user_instance - requested instance, ~0 => dynamically allocate
+*/
+define create_loopback_instance
+{
+ u32 client_index;
+ u32 context;
+ u8 mac_address[6];
+ u8 is_specified;
+ u32 user_instance;
+};
+
+/** \brief Create loopback interface instance response
+ @param context - sender context, to match reply w/ request
+ @param sw_if_index - sw index of the interface that was created
+ @param retval - return code for the request
+*/
+define create_loopback_instance_reply
+{
+ u32 context;
+ i32 retval;
+ u32 sw_if_index;
+};
+
+/** \brief Delete loopback interface request
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param sw_if_index - sw index of the interface that was created
+*/
+autoreply define delete_loopback
+{
+ u32 client_index;
+ u32 context;
+ u32 sw_if_index;
+};
+
/*
* Local Variables:
* eval: (c-set-style "gnu")