stats: Deprecate old stats framework
[vpp.git] / src / vpp / api / vpe.api
index e784fa0..378a3b3 100644 (file)
@@ -19,6 +19,8 @@
     called through a shared memory interface. 
 */
 
+option version = "1.1.0";
+
 /* 
  * Note: API placement cleanup in progress
  * If you're looking for interface APIs, please
@@ -26,7 +28,9 @@
  * IP APIs: see .../src/vnet/ip/{ip.api, ip_api.c}
  * TAP APIs: see .../src/vnet/unix/{tap.api, tap_api.c}
  * VXLAN APIs: see .../src/vnet/vxlan/{vxlan.api, vxlan_api.c}
- * AF-PACKET APIs: ... see /vnet/devices/af_packet/{af_packet.api, af_packet_api.c}
+ * GENEVE APIs: see .../src/vnet/geneve/{geneve.api, geneve_api.c}
+ * LLDP APIs: see .../src/vnet/lldp/{lldp.api, lldp_api.c}
+ * AF-PACKET APIs: see ... /vnet/devices/af_packet/{af_packet.api, af_packet_api.c}
  * NETMAP APIs: see ... /src/vnet/devices/netmap/{netmap.api, netmap_api.c}
  * VHOST-USER APIs: see .../vnet/devices/virtio/{vhost_user.api, vhost_user_api.c}
  * VXLAN GPE APIs: see .../src/vnet/vxlan-gpe/{vxlan_gpe.api, vxlan_gpe_api.c}
  * IPSEC-GRE APIs: see .../src/vnet/ipsec-gre/{ipsec_gre.api, ipsec_gre_api.c}
  * LISP APIs: see .../src/vnet/lisp/{lisp.api, lisp_api.c}
  * LISP-GPE APIs: see .../src/vnet/lisp-gpe/{lisp_gpe.api, lisp_gpe_api.c}
+ * SESSION APIs: .../vnet/session/{session.api session_api.c}
  * MPLS APIs: see .../src/vnet/mpls/{mpls.api, mpls_api.c}
- * SR APIs: see .../src/vnet/sr/{sr.api, sr_api.c}
- * DPDK APIs: ... see /src/vnet/devices/dpdk/{dpdk.api, dpdk_api.c}
+ * SR APIs: see .../src/vnet/srv6/{sr.api, sr_api.c}
+ * CLASSIFY APIs: see ... /src/vnet/classify/{classify.api, classify_api.c}
+ * FLOW APIs: see ... /src/vnet/flow/{flow.api, flow_api.c}
+ * DHCP APIs: see ... /src/vnet/dhcp/{dhcp.api, dhcp_api.c}
+ * COP APIs: see ... /src/vnet/cop/{cop.api, cop_api.c}
+ * POLICER APIs: see ... /src/vnet/policer/{policer.api, policer_api.c}
+ * BIER APIs: see ... /src/vnet/policer/{bier.api, bier_api.c}
  */
 
-/** \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 Enable or Disable MPLS on and interface
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - index of the interface
-    @param enable - if non-zero enable, else disable
-*/
-define sw_interface_set_mpls_enable
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u8 enable;
-};
-
-/** \brief Reply for MPLS state on an interface
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-define sw_interface_set_mpls_enable_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Proxy ARP add / del request
+/** \brief Control ping from client to api server request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
-    @param vrf_id - VRF / Fib table ID
-    @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
-    @param low_address[4] - Low address of the Proxy ARP range
-    @param hi_address[4] - High address of the Proxy ARP range
 */
-define proxy_arp_add_del
+define control_ping
 {
   u32 client_index;
   u32 context;
-  u32 vrf_id;
-  u8 is_add;
-  u8 low_address[4];
-  u8 hi_address[4];
-};
-
-/** \brief Reply for proxy arp add / del request
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-define proxy_arp_add_del_reply
-{
-  u32 context;
-  i32 retval;
 };
 
-/** \brief Proxy ARP add / del request
+/** \brief Control ping from the client to the server response
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
-    @param sw_if_index - Which interface to enable / disable Proxy Arp on
-    @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
-*/
-define proxy_arp_intfc_enable_disable
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  /* 1 = on, 0 = off */
-  u8 enable_disable;
-};
-
-/** \brief Reply for Proxy ARP interface enable / disable request
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
+    @param retval - return code for the request
+    @param vpe_pid - the pid of the vpe, returned by the server
 */
-define proxy_arp_intfc_enable_disable_reply
+define control_ping_reply
 {
   u32 context;
   i32 retval;
-};
-
-/** \brief Reset VRF (remove all routes etc) request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
-    @param vrf_id - ID of th FIB table / VRF to reset
-*/
-define reset_vrf
-{
   u32 client_index;
-  u32 context;
-  u8 is_ipv6;
-  u32 vrf_id;
-};
-
-/** \brief Reply for Reset VRF request
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-define reset_vrf_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Is Address Reachable request - DISABLED
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param next_hop_sw_if_index - index of interface used to get to next hop
-    @param is_ipv6 - 1 for IPv6, 0 for IPv4
-    @param is_error - address not found or does not match intf
-    @param address[] - Address in question 
-*/
-define is_address_reachable
-{
-  u32 client_index;            /* (api_main_t *) am->my_client_index */
-  u32 context;
-  u32 next_hop_sw_if_index;
-  u8 is_known;                 /* on reply, this is the answer */
-  u8 is_ipv6;
-  u8 is_error;                 /* address not found or does not match intf */
-  u8 address[16];
+  u32 vpe_pid;
 };
 
-/** \brief Want Stats, register for stats updates
+/** \brief Process a vpe parser cli string request
     @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 cmd_in_shmem - pointer to cli command string
 */
-define want_stats
+define cli
 {
   u32 client_index;
   u32 context;
-  u32 enable_disable;
-  u32 pid;
-};
-
-/** \brief Reply for Want Stats request
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-define want_stats_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-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 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];
+  u64 cmd_in_shmem;
 };
-
-/** \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
+define cli_inband
 {
   u32 client_index;
   u32 context;
+  string cmd;
 };
 
-/** \brief Reply for vnet_get_summary_stats request
+/** \brief vpe parser cli string response
     @param context - sender context, to match reply w/ request
     @param retval - return code for request
-    @param total_pkts -  
-    @param total_bytes -
-    @param vector_rate - 
+    @param reply_in_shmem - Reply string from cli processing if any
 */
-define vnet_summary_stats_reply
+define cli_reply
 {
   u32 context;
   i32 retval;
-  u64 total_pkts[2];
-  u64 total_bytes[2];
-  f64 vector_rate;
-};
-
-/** \brief OAM event structure
-    @param dst_address[] - 
-    @param state
-*/
-define oam_event
-{
-  u8 dst_address[4];
-  u8 state;
-};
-
-/** \brief Want OAM events request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param enable_disable- enable if non-zero, else disable
-    @param pid - pid of the requesting process
-*/
-define want_oam_events
-{
-  u32 client_index;
-  u32 context;
-  u32 enable_disable;
-  u32 pid;
+  u64 reply_in_shmem;
 };
-
-/** \brief Want OAM events response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the want oam stats request
-*/
-define want_oam_events_reply
+define cli_inband_reply
 {
   u32 context;
   i32 retval;
+  string reply;
 };
 
-/** \brief OAM add / del target request
+/** \brief Get node index using name request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
-    @param vrf_id - vrf_id of the target
-    @param src_address[] - source address to use for the updates 
-    @param dst_address[] - destination address of the target
-    @param is_add - add target if non-zero, else delete
+    @param node_name[] - name of the node
 */
-define oam_add_del
+define get_node_index
 {
   u32 client_index;
   u32 context;
-  u32 vrf_id;
-  u8 src_address[4];
-  u8 dst_address[4];
-  u8 is_add;
+  u8 node_name[64];
 };
 
-/** \brief OAM add / del target response
+/** \brief Get node index using name request
     @param context - sender context, to match reply w/ request
-    @param retval - return code of the request
+    @param retval - return code for the request
+    @param node_index - index of the desired node if found, else ~0
 */
-define oam_add_del_reply
+define get_node_index_reply
 {
   u32 context;
   i32 retval;
+  u32 node_index;
 };
 
-/** \brief Reset fib table request
+/** \brief Set the next node for a given node request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
-    @param vrf_id - vrf/table id of the fib table to reset
-    @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
+    @param node_name[] - node to add the next node to
+    @param next_name[] - node to add as the next node
 */
-define reset_fib
+define add_node_next
 {
   u32 client_index;
   u32 context;
-  u32 vrf_id;
-  u8 is_ipv6;
+  u8 node_name[64];
+  u8 next_name[64];
 };
 
-/** \brief Reset fib response
+/** \brief IP Set the next node for a given node response
     @param context - sender context, to match reply w/ request
-    @param retval - return code for the reset bfib request
+    @param retval - return code for the add next node request
+    @param next_index - the index of the next node if success, else ~0
 */
-define reset_fib_reply
+define add_node_next_reply
 {
   u32 context;
   i32 retval;
+  u32 next_index;
 };
 
-/** \brief DHCP Proxy config add / del request
+/** \brief show version
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
-    @param vrf_id - vrf id
-    @param if_ipv6 - ipv6 if non-zero, else ipv4
-    @param is_add - add the config if non-zero, else delete
-    @param insert_circuit_id - option82 suboption 1 fib number
-    @param dhcp_server[] - server address
-    @param dhcp_src_address[] - <fix this, need details>
 */
-define dhcp_proxy_config
+define show_version
 {
   u32 client_index;
   u32 context;
-  u32 vrf_id;
-  u8 is_ipv6;
-  u8 is_add;
-  u8 insert_circuit_id;
-  u8 dhcp_server[16];
-  u8 dhcp_src_address[16];
 };
 
-/** \brief DHCP Proxy config response
+/** \brief show version response
     @param context - sender context, to match reply w/ request
     @param retval - return code for the request
+    @param program - name of the program (vpe)
+    @param version  - version of the program
+    @param build_directory - root of the workspace where the program was built
 */
-define dhcp_proxy_config_reply
+define show_version_reply
 {
   u32 context;
   i32 retval;
+  string program;
+  string version;
+  string build_date;
+  string build_directory;
 };
 
-/** \brief DHCP Proxy set / unset vss request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param tbl_id - table id
-    @param oui - first part of vpn id
-    @param fib_id - second part of vpn id
-    @param is_ipv6 - ip6 if non-zero, else ip4
-    @param is_add - set vss if non-zero, else delete
-*/
-define dhcp_proxy_set_vss
-{
-  u32 client_index;
-  u32 context;
-  u32 tbl_id;
-  u32 oui;
-  u32 fib_id;
-  u8 is_ipv6;
-  u8 is_add;
-};
-
-/** \brief DHCP proxy set / unset vss response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define dhcp_proxy_set_vss_reply
-{
-  u32 context;
-  i32 retval;
-};
 
-/** \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
+/** \brief show_threads display the information about vpp
+    threads running on system along with their process id,
+    cpu id, physical core and cpu socket.
 */
-define create_loopback
+define show_threads
 {
   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 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
+/** \brief thread data
+    @param id - thread index
+    @param name - thread name i.e. vpp_main or vpp_wk_0
+    @param type - thread type i.e. workers or stats
+    @param pid - thread Process Id
+    @param cpu_id - thread pinned to cpu.
+    "CPUs or Logical cores are the number of physical cores times
+    the number of threads that can run on each core through
+    the use of hyperthreading." (from unix.stackexchange.com)
+    @param core - thread pinned to actual physical core.
+    @param cpu_socket - thread is running on which cpu socket.
 */
-define delete_loopback
+typeonly define thread_data
 {
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
+  u32 id;
+  u8 name[64];
+  u8 type[64];
+  u32 pid;
+  u32 cpu_id;
+  u32 core;
+  u32 cpu_socket;
 };
 
-/** \brief Delete loopback interface response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
+/** \brief show_threads_reply
+    @param context - returned sender context, to match reply w/ request
+    @param retval - return code
+    @param count - number of threads in thread_data array
+    @param thread_data - array of thread data
 */
-define delete_loopback_reply
+define show_threads_reply
 {
   u32 context;
   i32 retval;
+  u32 count;
+  vl_api_thread_data_t thread_data[count];
 };
 
-/** \brief Control ping from client to api server request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-define control_ping
+define get_node_graph
 {
   u32 client_index;
   u32 context;
 };
 
-/** \brief Control ping from the client to the server response
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-    @param vpe_pid - the pid of the vpe, returned by the server
+/** \brief get_node_graph_reply
+    @param context - returned sender context, to match reply w/ request
+    @param retval - return code
+    @param reply_in_shmem - result from vlib_node_serialize, in shared
+    memory. Process with vlib_node_unserialize, remember to switch
+    heaps and free the result.
 */
-define control_ping_reply
+
+define get_node_graph_reply
 {
   u32 context;
   i32 retval;
-  u32 client_index;
-  u32 vpe_pid;
+  u64 reply_in_shmem;
 };
 
-/** \brief Process a vpe parser cli string request
+/** \brief Query relative index via node names
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
-    @param cmd_in_shmem - pointer to cli command string
+    @param node_name - name of node to find relative index from
+    @param next_name - next node from node_name to find relative index of
 */
-define cli_request
-{
-  u32 client_index;
-  u32 context;
-  u64 cmd_in_shmem;
-};
-define cli_inband
+define get_next_index
 {
   u32 client_index;
   u32 context;
-  u32 length;
-  u8 cmd[length];
+  u8 node_name[64];
+  u8 next_name[64];
 };
 
-/** \brief vpe parser cli string response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for request
-    @param reply_in_shmem - Reply string from cli processing if any
+/** \brief Reply for get next node index
+    @param context - sender context which was passed in the request
+    @param retval - return value
+    @param next_index - index of the next_node
 */
-define cli_reply
-{
-  u32 context;
-  i32 retval;
-  u64 reply_in_shmem;
-};
-define cli_inband_reply
-{
-  u32 context;
-  i32 retval;
-  u32 length;
-  u8 reply[length];
-};
-
-/** \brief Set max allowed ARP or ip6 neighbor entries request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param is_ipv6 - neighbor limit if non-zero, else ARP limit
-    @param arp_neighbor_limit - the new limit, defaults are ~ 50k
-*/
-define set_arp_neighbor_limit
-{
-  u32 client_index;
-  u32 context;
-  u8 is_ipv6;
-  u32 arp_neighbor_limit;
-};
-
-/** \brief Set max allowed ARP or ip6 neighbor entries response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for request
-*/
-define set_arp_neighbor_limit_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief L2 interface patch add / del request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param rx_sw_if_index - receive side interface 
-    @param tx_sw_if_index - transmit side interface
-    @param is_add - if non-zero set up the interface patch, else remove it
-*/
-define l2_patch_add_del
-{
-  u32 client_index;
-  u32 context;
-  u32 rx_sw_if_index;
-  u32 tx_sw_if_index;
-  u8 is_add;
-};
-
-/** \brief L2 interface patch add / del response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define l2_patch_add_del_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Interface set vpath request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - interface used to reach neighbor
-    @param enable - if non-zero enable, else disable
-*/
-define sw_interface_set_vpath
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u8 enable;
-};
-
-/** \brief Interface set vpath response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define sw_interface_set_vpath_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Set L2 XConnect between two interfaces request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param rx_sw_if_index - Receive interface index
-    @param tx_sw_if_index - Transmit interface index
-    @param enable - enable xconnect if not 0, else set to L3 mode
-*/
-define sw_interface_set_l2_xconnect
-{
-  u32 client_index;
-  u32 context;
-  u32 rx_sw_if_index;
-  u32 tx_sw_if_index;
-  u8 enable;
-};
-
-/** \brief Set L2 XConnect response
-    @param context - sender context, to match reply w/ request
-    @param retval - L2 XConnect request return code
-*/
-define sw_interface_set_l2_xconnect_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Interface bridge mode request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param rx_sw_if_index - the interface
-    @param bd_id - bridge domain id
-    @param bvi - Setup interface as a bvi, bridge mode only
-    @param shg - Shared horizon group, for bridge mode only
-    @param enable - Enable beige mode if not 0, else set to L3 mode
-*/
-define sw_interface_set_l2_bridge
-{
-  u32 client_index;
-  u32 context;
-  u32 rx_sw_if_index;
-  u32 bd_id;
-  u8 shg;
-  u8 bvi;
-  u8 enable;
-};
-
-/** \brief Interface bridge mode response
-    @param context - sender context, to match reply w/ request
-    @param retval - Bridge mode request return code
-*/
-define sw_interface_set_l2_bridge_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Set bridge domain ip to mac entry request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param bd_id - the bridge domain to set the flags for
-    @param is_add - if non-zero, add the entry, else clear it
-    @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
-    @param mac_address - MAC address
-    @param 
-*/
-define bd_ip_mac_add_del
-{
-  u32 client_index;
-  u32 context;
-  u32 bd_id;
-  u8 is_add;
-  u8 is_ipv6;
-  u8 ip_address[16];
-  u8 mac_address[6];
-};
-
-/** \brief Set bridge domain ip to mac entry response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the set bridge flags request
-*/
-define bd_ip_mac_add_del_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Add/Delete classification table request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param is_add- if non-zero add the table, else delete it
-    @param del_chain - if non-zero delete the whole chain of tables
-    @param table_index - if add, reuturns index of the created table, else specifies the table to delete  
-    @param nbuckets - number of buckets when adding a table
-    @param memory_size - memory size when adding a table
-    @param match_n_vectors - number of match vectors
-    @param next_table_index - index of next table
-    @param miss_next_index - index of miss table
-    @param current_data_flag - option to use current node's packet payload
-            as the starting point from where packets are classified,
-            This option is only valid for L2/L3 input ACL for now.
-            0: by default, classify data from the buffer's start location
-            1: classify packets from VPP node’s current data pointer
-    @param current_data_offset - a signed value to shift the start location of
-            the packet to be classified
-            For example, if input IP ACL node is used, L2 header’s first byte
-            can be accessible by configuring current_data_offset to -14
-            if there is no vlan tag.
-            This is valid only if current_data_flag is set to 1.
-    @param mask[] - match mask
-*/
-define classify_add_del_table
-{
-  u32 client_index;
-  u32 context;
-  u8 is_add;
-  u8 del_chain;
-  u32 table_index;
-  u32 nbuckets;
-  u32 memory_size;
-  u32 skip_n_vectors;
-  u32 match_n_vectors;
-  u32 next_table_index;
-  u32 miss_next_index;
-  u32 current_data_flag;
-  i32 current_data_offset;
-  u8 mask[0];
-};
-
-/** \brief Add/Delete classification table response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the table add/del requst
-    @param new_table_index - for add, returned index of the new table
-    @param skip_n_vectors - for add, returned value of skip_n_vectors in table
-    @param match_n_vectors -for add, returned value of match_n_vectors in table
-*/
-define classify_add_del_table_reply
-{
-  u32 context;
-  i32 retval;
-  u32 new_table_index;
-  u32 skip_n_vectors;
-  u32 match_n_vectors;
-};
-
-/** \brief Classify add / del session request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param is_add - add session if non-zero, else delete
-    @param table_index - index of the table to add/del the session, required
-    @param hit_next_index - for add, hit_next_index of new session, required
-    @param opaque_index - for add, opaque_index of new session
-    @param advance -for add, advance value for session
-    @param action -
-           0: no action (by default)
-              metadata is not used.
-           1: Classified IP packets will be looked up from the
-              specified ipv4 fib table (configured by metadata as VRF id).
-              Only valid for L3 input ACL node
-           2: Classified IP packets will be looked up from the
-              specified ipv6 fib table (configured by metadata as VRF id).
-              Only valid for L3 input ACL node
-    @param metadata - valid only if action != 0
-           VRF id if action is 1 or 2.
-    @param match[] - for add, match value for session, required
-*/
-define classify_add_del_session
-{
-  u32 client_index;
-  u32 context;
-  u8 is_add;
-  u32 table_index;
-  u32 hit_next_index;
-  u32 opaque_index;
-  i32 advance;
-  u8 action;
-  u32 metadata;
-  u8 match[0];
-};
-
-/** \brief Classify add / del session response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the add/del session request
-*/
-define classify_add_del_session_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Set/unset the classification table for an interface request 
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param is_ipv6 - ipv6 if non-zero, else ipv4
-    @param sw_if_index - interface to associate with the table
-    @param table_index - index of the table, if ~0 unset the table
-*/
-define classify_set_interface_ip_table
-{
-  u32 client_index;
-  u32 context;
-  u8 is_ipv6;
-  u32 sw_if_index;
-  u32 table_index;             /* ~0 => off */
-};
-
-/** \brief Set/unset interface classification table response 
-    @param context - sender context, to match reply w/ request
-    @param retval - return code
-*/
-define classify_set_interface_ip_table_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Set/unset l2 classification tables for an interface request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - interface to set/unset tables for
-    @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
-    @param ip6_table_index - ip6 index
-    @param other_table_index - other index
-*/
-define classify_set_interface_l2_tables
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  /* 3 x ~0 => off */
-  u32 ip4_table_index;
-  u32 ip6_table_index;
-  u32 other_table_index;
-  u8 is_input;
-};
-
-/** \brief Set/unset l2 classification tables for an interface response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define classify_set_interface_l2_tables_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Get node index using name request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param node_name[] - name of the node
-*/
-define get_node_index
-{
-  u32 client_index;
-  u32 context;
-  u8 node_name[64];
-};
-
-/** \brief Get node index using name request
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-    @param node_index - index of the desired node if found, else ~0
-*/
-define get_node_index_reply
-{
-  u32 context;
-  i32 retval;
-  u32 node_index;
-};
-
-/** \brief Set the next node for a given node request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param node_name[] - node to add the next node to
-    @param next_name[] - node to add as the next node
-*/
-define add_node_next
-{
-  u32 client_index;
-  u32 context;
-  u8 node_name[64];
-  u8 next_name[64];
-};
-
-/** \brief IP Set the next node for a given node response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the add next node request
-    @param next_index - the index of the next node if success, else ~0
-*/
-define add_node_next_reply
-{
-  u32 context;
-  i32 retval;
-  u32 next_index;
-};
-
-/** \brief DHCP Proxy config 2 add / del request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param rx_vrf_id - receive vrf id
-    @param server_vrf_id - server vrf id
-    @param if_ipv6 - ipv6 if non-zero, else ipv4
-    @param is_add - add the config if non-zero, else delete
-    @param insert_circuit_id - option82 suboption 1 fib number
-    @param dhcp_server[] - server address
-    @param dhcp_src_address[] - <fix this, need details>
-*/
-define dhcp_proxy_config_2
-{
-  u32 client_index;
-  u32 context;
-  u32 rx_vrf_id;
-  u32 server_vrf_id;
-  u8 is_ipv6;
-  u8 is_add;
-  u8 insert_circuit_id;
-  u8 dhcp_server[16];
-  u8 dhcp_src_address[16];
-};
-
-/** \brief DHCP Proxy config 2 add / del response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for request
-*/
-define dhcp_proxy_config_2_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief L2 interface ethernet flow point filtering enable/disable request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - interface to enable/disable filtering on
-    @param enable_disable - if non-zero enable filtering, else disable
-*/
-define l2_interface_efp_filter
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u32 enable_disable;
-};
-
-/** \brief L2 interface ethernet flow point filtering response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define l2_interface_efp_filter_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief L2 interface vlan tag rewrite configure request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - interface the operation is applied to
-    @param vtr_op - Choose from l2_vtr_op_t enum values
-    @param push_dot1q - first pushed flag dot1q id set, else dot1ad
-    @param tag1 - Needed for any push or translate vtr op
-    @param tag2 - Needed for any push 2 or translate x-2 vtr ops
-*/
-define l2_interface_vlan_tag_rewrite
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u32 vtr_op;
-  u32 push_dot1q;              // ethertype of first pushed tag is dot1q/dot1ad
-  u32 tag1;                    // first pushed tag
-  u32 tag2;                    // second pushed tag
-};
-
-/** \brief L2 interface vlan tag rewrite response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define l2_interface_vlan_tag_rewrite_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-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 show version
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-define show_version
-{
-  u32 client_index;
-  u32 context;
-};
-
-/** \brief show version response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-    @param program - name of the program (vpe)
-    @param version  - version of the program
-    @param build_directory - root of the workspace where the program was built
-*/
-define show_version_reply
-{
-  u32 context;
-  i32 retval;
-  u8 program[32];
-  u8 version[32];
-  u8 build_date[32];
-  u8 build_directory[256];
-};
-
-/* Gross kludge, DGMS */
-define interface_name_renumber
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u32 new_show_dev_instance;
-};
-
-define interface_name_renumber_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Register for ip4 arp resolution events
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param enable_disable - 1 => register for events, 0 => cancel registration
-    @param pid - sender's pid
-    @param address - the exact ip4 address of interest
-*/
-define want_ip4_arp_events
-{
-  u32 client_index;
-  u32 context;
-  u8 enable_disable;
-  u32 pid;
-  u32 address;
-};
-
-/** \brief Reply for interface events registration
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-define want_ip4_arp_events_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Tell client about an ip4 arp resolution event
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param address - the exact ip4 address of interest
-    @param pid - client pid registered to receive notification
-    @param sw_if_index - interface which received ARP packet
-    @param new_mac - the new mac address 
-    @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
-*/
-define ip4_arp_event
-{
-  u32 client_index;
-  u32 context;
-  u32 address;
-  u32 pid;
-  u32 sw_if_index;
-  u8 new_mac[6];
-  u8 mac_ip;
-};
-
-/** \brief Register for ip6 nd resolution events
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param enable_disable - 1 => register for events, 0 => cancel registration
-    @param pid - sender's pid
-    @param address - the exact ip6 address of interest
-*/
-define want_ip6_nd_events
-{
-  u32 client_index;
-  u32 context;
-  u8 enable_disable;
-  u32 pid;
-  u8 address[16];
-};
-
-/** \brief Reply for ip6 nd resolution events registration
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-define want_ip6_nd_events_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Tell client about an ip6 nd resolution or mac/ip event
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param pid - client pid registered to receive notification
-    @param sw_if_index - interface which received ARP packet
-    @param address - the exact ip6 address of interest
-    @param new_mac - the new mac address 
-    @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
-*/
-define ip6_nd_event
-{
-  u32 client_index;
-  u32 context;
-  u32 pid;
-  u32 sw_if_index;
-  u8 address[16];
-  u8 new_mac[6];
-  u8 mac_ip;
-};
-    
-/** \brief DHCP Client config add / del request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - index of the interface for DHCP client
-    @param hostname - hostname
-    @param is_add - add the config if non-zero, else delete
-    @param want_dhcp_event - DHCP event sent to the sender
-           via dhcp_compl_event API message if non-zero
-    @param pid - sender's pid
-*/
-define dhcp_client_config
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u8 hostname[64];
-  u8 is_add;
-  u8 want_dhcp_event;
-  u32 pid;
-};
-
-/** \brief DHCP Client config response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define dhcp_client_config_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Set/unset input ACL interface
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - interface to set/unset input ACL
-    @param ip4_table_index - ip4 classify table index (~0 for skip)
-    @param ip6_table_index - ip6 classify table index (~0 for skip)
-    @param l2_table_index  -  l2 classify table index (~0 for skip)
-    @param is_add - Set input ACL if non-zero, else unset
-    Note: User is recommeneded to use just one valid table_index per call.
-          (ip4_table_index, ip6_table_index, or l2_table_index)
-*/
-define input_acl_set_interface
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u32 ip4_table_index;
-  u32 ip6_table_index;
-  u32 l2_table_index;
-  u8 is_add;
-};
-
-/** \brief Set/unset input ACL interface response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define input_acl_set_interface_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Tell client about a DHCP completion event
-    @param client_index - opaque cookie to identify the sender
-    @param pid - client pid registered to receive notification
-    @param is_ipv6 - if non-zero the address is ipv6, else ipv4
-    @param host_address - Host IP address
-    @param router_address - Router IP address
-    @param host_mac - Host MAC address
-*/
-define dhcp_compl_event
-{
-  u32 client_index;
-  u32 pid;
-  u8 hostname[64];
-  u8 is_ipv6;
-  u8 host_address[16];
-  u8 router_address[16];
-  u8 host_mac[6];
-};
-
-/** \brief cop: enable/disable junk filtration features on an interface
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_inded - desired interface
-    @param enable_disable - 1 => enable, 0 => disable
-*/
-
-define cop_interface_enable_disable
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u8 enable_disable;
-};
-
-/** \brief cop: interface enable/disable junk filtration reply
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-
-define cop_interface_enable_disable_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief cop: enable/disable whitelist filtration features on an interface
-    Note: the supplied fib_id must match in order to remove the feature!
-    
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - interface handle, physical interfaces only
-    @param fib_id - fib identifier for the whitelist / blacklist fib
-    @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration
-    @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration
-    @param default_cop -  1 => enable non-ip4, non-ip6 filtration 0=> disable it
-*/
-
-define cop_whitelist_enable_disable
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u32 fib_id;
-  u8 ip4;
-  u8 ip6;
-  u8 default_cop;
-};
-
-/** \brief cop: interface enable/disable junk filtration reply
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-
-define cop_whitelist_enable_disable_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief get_node_graph - get a copy of the vpp node graph
-    including the current set of graph arcs.
-
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-
-define get_node_graph
-{
-  u32 client_index;
-  u32 context;
-};
-
-/** \brief get_node_graph_reply
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-    @param reply_in_shmem - result from vlib_node_serialize, in shared
-    memory. Process with vlib_node_unserialize, remember to switch
-    heaps and free the result.
-*/
-
-define get_node_graph_reply
-{
-  u32 context;
-  i32 retval;
-  u64 reply_in_shmem;
-};
-
-/** \brief IOAM enable : Enable in-band OAM
-    @param id - profile id
-    @param seqno - To enable Seqno Processing
-    @param analyse - Enabling analysis of iOAM at decap node 
-    @param pow_enable - Proof of Work enabled or not flag
-    @param trace_enable - iOAM Trace enabled or not flag
-*/
-define ioam_enable
-{
-  u32 client_index;
-  u32 context;
-  u16 id;
-  u8 seqno;
-  u8 analyse;
-  u8 pot_enable;
-  u8 trace_enable;
-  u32 node_id;
-};
-
-/** \brief iOAM Trace profile add / del response
-    @param context - sender context, to match reply w/ request
-    @param retval - return value for request
-*/
-define ioam_enable_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief iOAM disable
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param index - MAP Domain index
-*/
-define ioam_disable
-{
-  u32 client_index;
-  u32 context;
-  u16 id;
-};
-
-/** \brief iOAM disable response
-    @param context - sender context, to match reply w/ request
-    @param retval - return value for request
-*/
-define ioam_disable_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Add/del policer
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param is_add - add policer if non-zero, else delete
-    @param name - policer name
-    @param cir - CIR
-    @param eir - EIR
-    @param cb - Committed Burst
-    @param eb - Excess or Peak Burst
-    @param rate_type - rate type
-    @param round_type - rounding type
-    @param type - policer algorithm
-    @param color_aware - 0=color-blind, 1=color-aware
-    @param conform_action_type - conform action type
-    @param conform_dscp - DSCP for conform mar-and-transmit action
-    @param exceed_action_type - exceed action type
-    @param exceed_dscp - DSCP for exceed mar-and-transmit action
-    @param violate_action_type - violate action type
-    @param violate_dscp - DSCP for violate mar-and-transmit action
-*/
-define policer_add_del
-{
-  u32 client_index;
-  u32 context;
-
-  u8 is_add;
-  u8 name[64];
-  u32 cir;
-  u32 eir;
-  u64 cb;
-  u64 eb;
-  u8 rate_type;
-  u8 round_type;
-  u8 type;
-  u8 color_aware;
-  u8 conform_action_type;
-  u8 conform_dscp;
-  u8 exceed_action_type;
-  u8 exceed_dscp;
-  u8 violate_action_type;
-  u8 violate_dscp;
-};
-
-/** \brief Add/del policer response
-    @param context - sender context, to match reply w/ request
-    @param retval - return value for request
-    @param policer_index - for add, returned index of the new policer
-*/
-define policer_add_del_reply
-{
-  u32 context;
-  i32 retval;
-  u32 policer_index;
-};
-
-/** \brief Get list of policers
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param match_name_valid - if 0 request all policers otherwise use match_name
-    @param match_name - policer name
-*/
-define policer_dump
-{
-  u32 client_index;
-  u32 context;
-
-  u8 match_name_valid;
-  u8 match_name[64];
-};
-
-/** \brief Policer operational state response.
-    @param context - sender context, to match reply w/ request
-    @param name - policer name
-    @param cir - CIR
-    @param eir - EIR
-    @param cb - Committed Burst
-    @param eb - Excess or Peak Burst
-    @param rate_type - rate type
-    @param round_type - rounding type
-    @param type - policer algorithm
-    @param conform_action_type - conform action type
-    @param conform_dscp - DSCP for conform mar-and-transmit action
-    @param exceed_action_type - exceed action type
-    @param exceed_dscp - DSCP for exceed mar-and-transmit action
-    @param violate_action_type - violate action type
-    @param violate_dscp - DSCP for violate mar-and-transmit action
-    @param single_rate - 1 = single rate policer, 0 = two rate policer
-    @param color_aware - for hierarchical policing
-    @param scale - power-of-2 shift amount for lower rates
-    @param cir_tokens_per_period - number of tokens for each period
-    @param pir_tokens_per_period - number of tokens for each period for 2-rate policer
-    @param current_limit - current limit
-    @param current_bucket - current bucket
-    @param extended_limit - extended limit
-    @param extended_bucket - extended bucket
-    @param last_update_time - last update time
-*/
-define policer_details
-{
-  u32 context;
-
-  u8 name[64];
-  u32 cir;
-  u32 eir;
-  u64 cb;
-  u64 eb;
-  u8 rate_type;
-  u8 round_type;
-  u8 type;
-  u8 conform_action_type;
-  u8 conform_dscp;
-  u8 exceed_action_type;
-  u8 exceed_dscp;
-  u8 violate_action_type;
-  u8 violate_dscp;
-  u8 single_rate;
-  u8 color_aware;
-  u32 scale;
-  u32 cir_tokens_per_period;
-  u32 pir_tokens_per_period;
-  u32 current_limit;
-  u32 current_bucket;
-  u32 extended_limit;
-  u32 extended_bucket;
-  u64 last_update_time;
-};
-
-/** \brief Set/unset policer classify interface
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - interface to set/unset policer classify
-    @param ip4_table_index - ip4 classify table index (~0 for skip)
-    @param ip6_table_index - ip6 classify table index (~0 for skip)
-    @param l2_table_index  -  l2 classify table index (~0 for skip)
-    @param is_add - Set if non-zero, else unset
-    Note: User is recommeneded to use just one valid table_index per call.
-          (ip4_table_index, ip6_table_index, or l2_table_index)
-*/
-define policer_classify_set_interface
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u32 ip4_table_index;
-  u32 ip6_table_index;
-  u32 l2_table_index;
-  u8 is_add;
-};
-
-/** \brief Set/unset policer classify interface response
-    @param context - sender context, to match reply w/ request
-    @param retval - return value for request
-*/
-define policer_classify_set_interface_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Get list of policer classify interfaces and tables
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param type - classify table type
-*/
-define policer_classify_dump
-{
-  u32 client_index;
-  u32 context;
-  u8 type;
-};
-
-/** \brief Policer iclassify operational state response.
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - software interface index
-    @param table_index - classify table index
-*/
-define policer_classify_details
-{
-  u32 context;
-  u32 sw_if_index;
-  u32 table_index;
-};
-
-/** \brief Classify get table IDs request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-define classify_table_ids
-{
-  u32 client_index;
-  u32 context;
-};
-
-/** \brief Reply for classify get table IDs request
-    @param context - sender context which was passed in the request
-    @param count - number of ids returned in response
-    @param ids - array of classify table ids
-*/
-define classify_table_ids_reply
-{
-  u32 context;
-  i32 retval;
-  u32 count;
-  u32 ids[count];
-};
-
-/** \brief Classify table ids by interface index request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - index of the interface
-*/
-define classify_table_by_interface
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-};
-
-/** \brief Reply for classify table id by interface index request
-    @param context - sender context which was passed in the request
-    @param count - number of ids returned in response
-    @param sw_if_index - index of the interface
-    @param l2_table_id - l2 classify table index
-    @param ip4_table_id - ip4 classify table index
-    @param ip6_table_id - ip6 classify table index
-*/
-define classify_table_by_interface_reply
-{
-  u32 context;
-  i32 retval;
-  u32 sw_if_index;
-  u32 l2_table_id;
-  u32 ip4_table_id;
-  u32 ip6_table_id;
-};
-
-/** \brief Classify table info
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param table_id - classify table index
-*/
-define classify_table_info
-{
-  u32 client_index;
-  u32 context;
-  u32 table_id;
-};
-
-/** \brief Reply for classify table info request
-    @param context - sender context which was passed in the request
-    @param count - number of ids returned in response
-    @param table_id - classify table index
-    @param nbuckets - number of buckets when adding a table
-    @param match_n_vectors - number of match vectors
-    @param skip_n_vectors - number of skip_n_vectors
-    @param active_sessions - number of sessions (active entries)
-    @param next_table_index - index of next table
-    @param miss_next_index - index of miss table
-    @param mask[] - match mask
-*/
-define classify_table_info_reply
-{
-  u32 context;
-  i32 retval;
-  u32 table_id;
-  u32 nbuckets;
-  u32 match_n_vectors;
-  u32 skip_n_vectors;
-  u32 active_sessions;
-  u32 next_table_index;
-  u32 miss_next_index;
-  u32 mask_length;
-  u8 mask[mask_length];
-};
-
-/** \brief Classify sessions dump request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param table_id - classify table index
-*/
-define classify_session_dump
-{
-  u32 client_index;
-  u32 context;
-  u32 table_id;
-};
-
-/** \brief Reply for classify table session dump request
-    @param context - sender context which was passed in the request
-    @param count - number of ids returned in response
-    @param table_id - classify table index
-    @param hit_next_index - hit_next_index of session
-    @param opaque_index - for add, opaque_index of session
-    @param advance - advance value of session
-    @param match[] - match value for session
-*/
-define classify_session_details
-{
-  u32 context;
-  i32 retval;
-  u32 table_id;
-  u32 hit_next_index;
-  i32 advance;
-  u32 opaque_index;
-  u32 match_length;
-  u8 match[match_length];
-};
-
-/** \brief Configure IPFIX exporter process request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param collector_address - address of IPFIX collector
-    @param collector_port - port of IPFIX collector
-    @param src_address - address of IPFIX exporter
-    @param vrf_id - VRF / fib table ID
-    @param path_mtu - Path MTU between exporter and collector
-    @param template_interval - number of seconds after which to resend template
-    @param udp_checksum - UDP checksum calculation enable flag
-*/
-define set_ipfix_exporter
-{
-  u32 client_index;
-  u32 context;
-  u8 collector_address[16];
-  u16 collector_port;
-  u8 src_address[16];
-  u32 vrf_id;
-  u32 path_mtu;
-  u32 template_interval;
-  u8 udp_checksum;
-};
-
-/** \brief Reply to IPFIX exporter configure request
-    @param context - sender context which was passed in the request
-*/
-define set_ipfix_exporter_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief IPFIX exporter dump request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-define ipfix_exporter_dump
-{
-  u32 client_index;
-  u32 context;
-};
-
-/** \brief Reply to IPFIX exporter dump request
-    @param context - sender context which was passed in the request
-    @param collector_address - address of IPFIX collector
-    @param collector_port - port of IPFIX collector
-    @param src_address - address of IPFIX exporter
-    @param fib_index - fib table index
-    @param path_mtu - Path MTU between exporter and collector
-    @param template_interval - number of seconds after which to resend template
-    @param udp_checksum - UDP checksum calculation enable flag
-*/
-define ipfix_exporter_details
-{
-  u32 context;
-  u8 collector_address[16];
-  u16 collector_port;
-  u8 src_address[16];
-  u32 vrf_id;
-  u32 path_mtu;
-  u32 template_interval;
-  u8 udp_checksum;
-};
-
-/** \brief IPFIX classify stream configure request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param domain_id - domain ID reported in IPFIX messages for classify stream
-    @param src_port - source port of UDP session for classify stream
-*/
-define set_ipfix_classify_stream {
-    u32 client_index;
-    u32 context;
-    u32 domain_id;
-    u16 src_port;
-};
-
-/** \brief IPFIX classify stream configure response
-    @param context - sender context, to match reply w/ request
-    @param retval - return value for request
-*/
-define set_ipfix_classify_stream_reply {
-    u32 context;
-    i32 retval;
-};
-
-/** \brief IPFIX classify stream dump request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-define ipfix_classify_stream_dump {
-    u32 client_index;
-    u32 context;
-};
-
-/** \brief Reply to IPFIX classify stream dump request
-    @param context - sender context, to match reply w/ request
-    @param domain_id - domain ID reported in IPFIX messages for classify stream
-    @param src_port - source port of UDP session for classify stream
-*/
-define ipfix_classify_stream_details {
-    u32 context;
-    u32 domain_id;
-    u16 src_port;
-};
-
-/** \brief IPFIX add or delete classifier table request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param table_id - classifier table ID
-    @param ip_version - version of IP used in the classifier table
-    @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
-*/
-define ipfix_classify_table_add_del {
-    u32 client_index;
-    u32 context;
-    u32 table_id;
-    u8 ip_version;
-    u8 transport_protocol;
-    u8 is_add;
-};
-
-/** \brief IPFIX add classifier table response
-    @param context - sender context which was passed in the request
-*/
-define ipfix_classify_table_add_del_reply {
-    u32 context;
-    i32 retval;
-};
-
-/** \brief IPFIX classify tables dump request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-define ipfix_classify_table_dump {
-    u32 client_index;
-    u32 context;
-};
-
-/** \brief Reply to IPFIX classify tables dump request
-    @param context - sender context, to match reply w/ request
-    @param table_id - classifier table ID
-    @param ip_version - version of IP used in the classifier table
-    @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
-*/
-define ipfix_classify_table_details {
-    u32 context;
-    u32 table_id;
-    u8 ip_version;
-    u8 transport_protocol;
-};
-
-/** \brief Set/unset flow classify interface
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - interface to set/unset flow classify
-    @param ip4_table_index - ip4 classify table index (~0 for skip)
-    @param ip6_table_index - ip6 classify table index (~0 for skip)
-    @param l2_table_index  -  l2 classify table index (~0 for skip)
-    @param is_add - Set if non-zero, else unset
-    Note: User is recommeneded to use just one valid table_index per call.
-          (ip4_table_index, ip6_table_index, or l2_table_index)
-*/
-define flow_classify_set_interface {
-    u32 client_index;
-    u32 context;
-    u32 sw_if_index;
-    u32 ip4_table_index;
-    u32 ip6_table_index;
-    u8  is_add;
-};
-
-/** \brief Set/unset flow classify interface response
-    @param context - sender context, to match reply w/ request
-    @param retval - return value for request
-*/
-define flow_classify_set_interface_reply {
-    u32 context;
-    i32 retval;
-};
-
-/** \brief Get list of flow classify interfaces and tables
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param type - classify table type
-*/
-define flow_classify_dump {
-    u32 client_index;
-    u32 context;
-    u8 type;
-};
-
-/** \brief Flow classify operational state response.
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - software interface index
-    @param table_index - classify table index
-*/
-define flow_classify_details {
-    u32 context;
-    u32 sw_if_index;
-    u32 table_index;
-};
-
-/** \brief Query relative index via node names
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param node_name - name of node to find relative index from
-    @param next_name - next node from node_name to find relative index of
-*/
-define get_next_index
-{
-  u32 client_index;
-  u32 context;
-  u8 node_name[64];
-  u8 next_name[64];
-};
-
-/** \brief Reply for get next node index
-    @param context - sender context which was passed in the request
-    @param retval - return value
-    @param next_index - index of the next_node
-*/
-define get_next_index_reply
+define get_next_index_reply
 {
   u32 context;
   i32 retval;
   u32 next_index;
 };
 
-/** \brief PacketGenerator create interface request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param interface_id - interface index
-*/
-define pg_create_interface
-{
-  u32 client_index;
-  u32 context;
-  u32 interface_id;
-};
-
-/** \brief PacketGenerator create interface response
-    @param context - sender context, to match reply w/ request
-    @param retval - return value for request
-*/
-define pg_create_interface_reply
-{
-  u32 context;
-  i32 retval;
-  u32 sw_if_index;
-};
-
-/** \brief PacketGenerator capture packets on given interface request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param interface_id - pg interface index
-    @param is_enabled - 1 if enabling streams, 0 if disabling
-    @param count - number of packets to be captured
-    @param pcap_file - pacp file name to store captured packets
-*/
-define pg_capture
-{
-  u32 client_index;
-  u32 context;
-  u32 interface_id;
-  u8 is_enabled;
-  u32 count;
-  u32 pcap_name_length;
-  u8 pcap_file_name[pcap_name_length];
-};
-
-/** \brief PacketGenerator capture packets response
-    @param context - sender context, to match reply w/ request
-    @param retval - return value for request
-*/
-define pg_capture_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Enable / disable packet generator request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param is_enabled - 1 if enabling streams, 0 if disabling
-    @param stream - stream name to be enable/disabled, if not specified handle all streams
-*/
-define pg_enable_disable
-{
-  u32 client_index;
-  u32 context;
-  u8 is_enabled;
-  u32 stream_name_length;
-  u8 stream_name[stream_name_length];
-};
-
-/** \brief Reply for enable / disable packet generator
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-define pg_enable_disable_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Configure IP source and L4 port-range check
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param is_ip6 - 1 if source address type is IPv6
-    @param is_add - 1 if add, 0 if delete
-    @param mask_length - mask length for address entry
-    @param address - array of address bytes
-    @param number_of_ranges - length of low_port and high_port arrays (must match)
-    @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
-    @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
-    @param vrf_id - fib table/vrf id to associate the source and port-range check with
-    @note To specify a single port set low_port and high_port entry the same
-*/
-define ip_source_and_port_range_check_add_del
-{
-  u32 client_index;
-  u32 context;
-  u8 is_ipv6;
-  u8 is_add;
-  u8 mask_length;
-  u8 address[16];
-  u8 number_of_ranges;
-  u16 low_ports[32];
-  u16 high_ports[32];
-  u32 vrf_id;
-};
-
-/** \brief Configure IP source and L4 port-range check reply
-    @param context - returned sender context, to match reply w/ request
-    @param retval - return code
-*/
-define ip_source_and_port_range_check_add_del_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Set interface source and L4 port-range request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param interface_id - interface index
-    @param tcp_vrf_id - VRF associated with source and TCP port-range check
-    @param udp_vrf_id - VRF associated with source and TCP port-range check
-*/
-define ip_source_and_port_range_check_interface_add_del
-{
-  u32 client_index;
-  u32 context;
-  u8 is_add;
-  u32 sw_if_index;
-  u32 tcp_in_vrf_id;
-  u32 tcp_out_vrf_id;
-  u32 udp_in_vrf_id;
-  u32 udp_out_vrf_id;
-};
-
-/** \brief Set interface source and L4 port-range response
-    @param context - sender context, to match reply w/ request
-    @param retval - return value for request
-*/
-define ip_source_and_port_range_check_interface_add_del_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \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
-*/
-define delete_subif {
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-};
-
-/** \brief Delete sub interface response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define delete_subif_reply {
-  u32 context;
-  i32 retval;
-};
-
-/** \brief L2 interface pbb tag rewrite configure request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - interface the operation is applied to
-    @param vtr_op - Choose from l2_vtr_op_t enum values
-    @param inner_tag - needed for translate_qinq vtr op only
-    @param outer_tag - needed for translate_qinq vtr op only 
-    @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op
-    @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op
-    @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op
-    @param i_sid - I-tag service id, needed for any push or translate qinq vtr op
-*/
-define l2_interface_pbb_tag_rewrite
-{
-  u32 client_index;
-  u32 context;
-  u32 sw_if_index;
-  u32 vtr_op;
-  u16 outer_tag;
-  u8  b_dmac[6];
-  u8  b_smac[6];
-  u16 b_vlanid;
-  u32 i_sid;
-};
-
-/** \brief L2 interface pbb tag rewrite response
-    @param context - sender context, to match reply w/ request
-    @param retval - return code for the request
-*/
-define l2_interface_pbb_tag_rewrite_reply
-{
-  u32 context;
-  i32 retval;
-};
-
-/** \brief Punt traffic to the host
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param is_add - add punt if non-zero, else delete
-    @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All
-    @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported
-    @param l4_port - TCP/UDP port to be punted
-*/
-define punt {
-    u32 client_index;
-    u32 context;
-    u8 is_add;
-    u8 ipv;
-    u8 l4_protocol;
-    u16 l4_port;
-};
-
-/** \brief Reply to the punt request
-    @param context - sender context which was passed in the request
-    @param retval - return code of punt request
-*/
-define punt_reply
-{
-    u32 context;
-    i32 retval;
-};
-
-/** \brief Feature path enable/disable request
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param sw_if_index - the interface
-    @param enable - 1 = on, 0 = off
-*/
-define feature_enable_disable {
-    u32 client_index;
-    u32 context;
-    u32 sw_if_index;
-    u8 enable;
-    u8 arc_name[64];
-    u8 feature_name[64];
-};
-
-/** \brief Reply to the eature path enable/disable request
-    @param context - sender context which was passed in the request
-    @param retval - return code for the request
-*/
-define feature_enable_disable_reply
-{
-    u32 context;
-    i32 retval;
-};
-
 /*
  * Local Variables:
  * eval: (c-set-style "gnu")