X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fvpp%2Fapi%2Fvpe.api;h=378a3b3a5fa8d0ce0af94f6714b0df176f6174fe;hp=b8e581891df3459416a7081e990f244c4e27b21a;hb=f49ba0e;hpb=b598f1d3d7d4ace9a29c01d93a8d1ba616a91e15 diff --git a/src/vpp/api/vpe.api b/src/vpp/api/vpe.api index b8e581891df..378a3b3a5fa 100644 --- a/src/vpp/api/vpe.api +++ b/src/vpp/api/vpe.api @@ -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 @@ -45,219 +47,12 @@ * 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/{dhcpk.api, dhcp_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} - * STATS APIs: see .../src/vpp/stats/{stats.api, stats.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 -*/ -autoreply define sw_interface_set_mpls_enable -{ - u32 client_index; - u32 context; - u32 sw_if_index; - u8 enable; -}; - -/** \brief Proxy ARP add / del 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 -*/ -autoreply define proxy_arp_add_del -{ - u32 client_index; - u32 context; - u32 vrf_id; - u8 is_add; - u8 low_address[4]; - u8 hi_address[4]; -}; - -/** \brief Proxy ARP 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 - Which interface to enable / disable Proxy Arp on - @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable -*/ -autoreply define proxy_arp_intfc_enable_disable -{ - u32 client_index; - u32 context; - u32 sw_if_index; - /* 1 = on, 0 = off */ - u8 enable_disable; -}; - -/** \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 -*/ -autoreply define reset_vrf -{ - u32 client_index; - u32 context; - u8 is_ipv6; - u32 vrf_id; -}; - -/** \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 -*/ -autoreply define want_oam_events -{ - u32 client_index; - u32 context; - u32 enable_disable; - u32 pid; -}; - -/** \brief OAM add / del target 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 -*/ -autoreply define oam_add_del -{ - u32 client_index; - u32 context; - u32 vrf_id; - u8 src_address[4]; - u8 dst_address[4]; - u8 is_add; -}; - -/** \brief Reset fib table 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 -*/ -autoreply define reset_fib -{ - u32 client_index; - u32 context; - u32 vrf_id; - u8 is_ipv6; -}; - -/** \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; -}; - /** \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 @@ -297,8 +92,7 @@ define cli_inband { u32 client_index; u32 context; - u32 length; - u8 cmd[length]; + string cmd; }; /** \brief vpe parser cli string response @@ -316,144 +110,7 @@ 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 -*/ -autoreply define set_arp_neighbor_limit -{ - u32 client_index; - u32 context; - u8 is_ipv6; - u32 arp_neighbor_limit; -}; - -/** \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 -*/ -autoreply define l2_patch_add_del -{ - u32 client_index; - u32 context; - u32 rx_sw_if_index; - u32 tx_sw_if_index; - u8 is_add; -}; - -/** \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 -*/ -autoreply define sw_interface_set_vpath -{ - u32 client_index; - u32 context; - u32 sw_if_index; - u8 enable; -}; - -/** \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 -*/ -autoreply define sw_interface_set_l2_xconnect -{ - u32 client_index; - u32 context; - u32 rx_sw_if_index; - u32 tx_sw_if_index; - u8 enable; -}; - -/** \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 -*/ -autoreply 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 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 -*/ -autoreply 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/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 -*/ -autoreply 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 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 -*/ -autoreply 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; + string reply; }; /** \brief Get node index using name request @@ -506,47 +163,6 @@ define add_node_next_reply u32 next_index; }; -/** \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 -*/ -autoreply define l2_interface_efp_filter -{ - u32 client_index; - u32 context; - u32 sw_if_index; - u32 enable_disable; -}; - -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 @@ -568,109 +184,58 @@ define show_version_reply { u32 context; i32 retval; - u8 program[32]; - u8 version[32]; - u8 build_date[32]; - u8 build_directory[256]; + string program; + string version; + string build_date; + string build_directory; }; -/* Gross kludge, DGMS */ -autoreply define interface_name_renumber -{ - u32 client_index; - u32 context; - u32 sw_if_index; - u32 new_show_dev_instance; -}; -/** \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 +/** \brief show_threads display the information about vpp + threads running on system along with their process id, + cpu id, physical core and cpu socket. */ -autoreply define want_ip4_arp_events +define show_threads { u32 client_index; u32 context; - u8 enable_disable; - u32 pid; - u32 address; -}; - -/** \brief Tell client about an ip4 arp resolution event - @param client_index - opaque cookie to identify the sender - @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 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 +/** \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. */ -autoreply define want_ip6_nd_events +typeonly define thread_data { - u32 client_index; - u32 context; - u8 enable_disable; + u32 id; + u8 name[64]; + u8 type[64]; u32 pid; - u8 address[16]; + u32 cpu_id; + u32 core; + u32 cpu_socket; }; -/** \brief Tell client about an ip6 nd resolution or mac/ip event - @param client_index - opaque cookie to identify the sender - @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 pid; - u32 sw_if_index; - u8 address[16]; - u8 new_mac[6]; - u8 mac_ip; -}; - -/** \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) +/** \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 */ -autoreply define input_acl_set_interface +define show_threads_reply { - u32 client_index; u32 context; - u32 sw_if_index; - u32 ip4_table_index; - u32 ip6_table_index; - u32 l2_table_index; - u8 is_add; + i32 retval; + u32 count; + vl_api_thread_data_t thread_data[count]; }; define get_node_graph @@ -694,37 +259,6 @@ define get_node_graph_reply 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 -*/ -autoreply 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 disable - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param index - MAP Domain index -*/ -autoreply define ioam_disable -{ - u32 client_index; - u32 context; - u16 id; -}; - /** \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 @@ -751,185 +285,6 @@ define get_next_index_reply 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 -*/ -autoreply 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 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 -*/ -autoreply define pg_enable_disable -{ - u32 client_index; - u32 context; - u8 is_enabled; - u32 stream_name_length; - u8 stream_name[stream_name_length]; -}; - -/** \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 -*/ -autoreply 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 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 -*/ -autoreply 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 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 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 -*/ -autoreply define punt { - u32 client_index; - u32 context; - u8 is_add; - u8 ipv; - u8 l4_protocol; - u16 l4_port; -}; - -/** \brief Punt traffic to the host via socket - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param header_version - expected meta data header version (currently 1) - @param is_ip4 - L3 protocol 1 - IPv4, 0 - IPv6 - @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported - @param l4_port - TCP/UDP port to be punted -*/ -define punt_socket_register { - u32 client_index; - u32 context; - u32 header_version; - u8 is_ip4; - u8 l4_protocol; - u16 l4_port; - u8 pathname[108]; /* Linux sun_path defined to be 108 bytes, see unix(7) */ -}; - -define punt_socket_register_reply -{ - u32 context; - i32 retval; - u8 pathname[64]; -}; - -autoreply define punt_socket_deregister { - u32 client_index; - u32 context; - u8 is_ip4; - u8 l4_protocol; - u16 l4_port; -}; - -/** \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 -*/ -autoreply define feature_enable_disable { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 enable; - u8 arc_name[64]; - u8 feature_name[64]; -}; - /* * Local Variables: * eval: (c-set-style "gnu")