X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fvpp%2Fapi%2Fvpe.api;h=bd6b9d5638fdee9dc2f1e3b0df15aa92a739c043;hp=24f482936d0d6e3476f01b089f1b263f9da11c50;hb=03f1af23b;hpb=d9aad2940530e63aa3f91194e0997a2f9307433c diff --git a/src/vpp/api/vpe.api b/src/vpp/api/vpe.api index 24f482936d0..bd6b9d5638f 100644 --- a/src/vpp/api/vpe.api +++ b/src/vpp/api/vpe.api @@ -19,13 +19,16 @@ called through a shared memory interface. */ +option version = "1.3.0"; + /* * Note: API placement cleanup in progress * If you're looking for interface APIs, please * see .../src/vnet/{interface.api,interface_api.c} * 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} + * 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} @@ -35,694 +38,77 @@ * L2TP APIs: see .../src/vnet/l2tp/{l2tp.api, l2tp_api.c} * BFD APIs: see .../src/vnet/bfd/{bfd.api, bfd_api.c} * IPSEC APIs: see .../src/vnet/ipsec/{ipsec.api, ipsec_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} - * 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} - * 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} - * COP APIs: see ... /src/vnet/cop/{cop.api, cop_api.c} - * POLICER APIs: see ... /src/vnet/policer/{policer.api, policer_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 - @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 -{ - 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 - @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 -*/ -define proxy_arp_intfc_enable_disable_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]; -}; - -/** \brief Want Stats, register for stats updates - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param enable_disable - 1 = enable stats, 0 = disable - @param pid - pid of process requesting stats updates -*/ -define want_stats -{ - 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 ip4_nbr_counter -{ - u32 address; - u8 link_type; - u64 packets; - u64 bytes; -}; - -/** - * @brief Per-neighbour (i.e. per-adjacency) coutners - * @param count The size of the array of counters - * @param sw_if_index The interface the adjacency is on - * @param begin Flag to indicate this is the first set of stats for this - * interface. If this flag is not set the it is a continuation of - * stats for this interface - * @param c counters - */ -manual_print manual_endian define vnet_ip4_nbr_counters -{ - u32 count; - u32 sw_if_index; - u8 begin; - vl_api_ip4_nbr_counter_t c[count]; -}; - -typeonly manual_print manual_endian define ip6_fib_counter -{ - u64 address[2]; - u8 address_length; - u64 packets; - u64 bytes; -}; - -manual_print manual_endian define vnet_ip6_fib_counters -{ - u32 vrf_id; - u32 count; - vl_api_ip6_fib_counter_t c[count]; -}; - -typeonly manual_print manual_endian define ip6_nbr_counter -{ - u64 address[2]; - u8 link_type; - u64 packets; - u64 bytes; -}; - -manual_print manual_endian define vnet_ip6_nbr_counters -{ - u32 count; - u32 sw_if_index; - u8 begin; - vl_api_ip6_nbr_counter_t c[count]; -}; - -/** \brief Request for a single block of summary stats - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request -*/ -define vnet_get_summary_stats -{ - u32 client_index; - u32 context; -}; - -/** \brief Reply for vnet_get_summary_stats request - @param context - sender context, to match reply w/ request - @param retval - return code for request - @param total_pkts - - @param total_bytes - - @param vector_rate - -*/ -define vnet_summary_stats_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; -}; - -/** \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 -{ - u32 context; - i32 retval; -}; - -/** \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 -*/ -define oam_add_del -{ - u32 client_index; - u32 context; - u32 vrf_id; - u8 src_address[4]; - u8 dst_address[4]; - u8 is_add; -}; - -/** \brief OAM add / del target response - @param context - sender context, to match reply w/ request - @param retval - return code of the request -*/ -define oam_add_del_reply -{ - u32 context; - i32 retval; -}; - -/** \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 -*/ -define reset_fib -{ - u32 client_index; - u32 context; - u32 vrf_id; - u8 is_ipv6; -}; - -/** \brief Reset fib response - @param context - sender context, to match reply w/ request - @param retval - return code for the reset bfib request -*/ -define reset_fib_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 -*/ -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 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 -*/ -define delete_loopback -{ - u32 client_index; - u32 context; - u32 sw_if_index; -}; - -/** \brief Delete loopback interface response - @param context - sender context, to match reply w/ request - @param retval - return code for the request -*/ -define delete_loopback_reply -{ - u32 context; - i32 retval; -}; - -/** \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 -{ - 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 -*/ -define control_ping_reply -{ - u32 context; - i32 retval; - u32 client_index; - u32 vpe_pid; -}; - -/** \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 cmd_in_shmem - pointer to cli command string -*/ -define cli_request -{ - u32 client_index; - u32 context; - u64 cmd_in_shmem; -}; -define cli_inband -{ - u32 client_index; - u32 context; - u32 length; - u8 cmd[length]; -}; - -/** \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 -*/ -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; -}; + * 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/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 Interface bridge mode 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 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 +define control_ping { u32 client_index; u32 context; - u32 rx_sw_if_index; - u32 bd_id; - u8 shg; - u8 bvi; - u8 enable; }; -/** \brief Interface bridge mode response +/** \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 - Bridge mode request return code + @param retval - return code for the request + @param vpe_pid - the pid of the vpe, returned by the server */ -define sw_interface_set_l2_bridge_reply +define control_ping_reply { u32 context; i32 retval; + u32 client_index; + u32 vpe_pid; }; -/** \brief Set bridge domain ip to mac entry request +/** \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 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 + @param cmd_in_shmem - pointer to cli command string */ -define bd_ip_mac_add_del +define cli { 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; + u64 cmd_in_shmem; }; - -/** \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 +define cli_inband { u32 client_index; u32 context; - u8 is_ipv6; - u32 sw_if_index; - u32 table_index; /* ~0 => off */ + string cmd; }; -/** \brief Set/unset interface classification table response +/** \brief vpe parser cli string response @param context - sender context, to match reply w/ request - @param retval - return code + @param retval - return code for request + @param reply_in_shmem - Reply string from cli processing if any */ -define classify_set_interface_ip_table_reply +define cli_reply { u32 context; i32 retval; + u64 reply_in_shmem; }; - -/** \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 +define cli_inband_reply { u32 context; i32 retval; + string reply; }; /** \brief Get node index using name request @@ -775,57 +161,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 -*/ -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; -}; - -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 @@ -847,149 +182,58 @@ 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; + string program [limit = 32]; + string version [limit = 32]; + string build_date [limit = 32]; + string build_directory [limit = 256]; }; -/** \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 +/** \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 ip4_arp_event +define show_threads { 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 +/** \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 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 Reply for ip6 nd resolution events registration +/** \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 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 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 +define show_threads_reply { u32 context; i32 retval; + u32 count; + vl_api_thread_data_t thread_data[count]; }; define get_node_graph @@ -1013,57 +257,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 -*/ -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 Query relative index via node names @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -1090,219 +283,53 @@ 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 -*/ -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; +enum log_level { + VPE_API_LOG_LEVEL_EMERG = 0, /* emerg */ + VPE_API_LOG_LEVEL_ALERT = 1, /* alert */ + VPE_API_LOG_LEVEL_CRIT = 2, /* crit */ + VPE_API_LOG_LEVEL_ERR = 3, /* err */ + VPE_API_LOG_LEVEL_WARNING = 4, /* warn */ + VPE_API_LOG_LEVEL_NOTICE = 5, /* notice */ + VPE_API_LOG_LEVEL_INFO = 6, /* info */ + VPE_API_LOG_LEVEL_DEBUG = 7, /* debug */ + VPE_API_LOG_LEVEL_DISABLED = 8, /* disabled */ }; -/** \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 -{ +define log_dump { 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; + f64 start_timestamp; }; -/** \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 -{ +define log_details { u32 context; - i32 retval; + f64 timestamp_ticks; + vl_api_log_level_t level; + string timestamp [limit=24]; + string msg_class [limit=32]; + string message [limit=256]; }; -/** \brief Set interface source and L4 port-range request +/** \brief Show the current system timestamp. @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 +define show_vpe_system_time_ticks { 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 +/** \brief Reply for show vpe system time ticks. + @param context - sender context which was passed in the request + @param retval - return value + @param vpe_system_time_ticks - the time in ticks of the host system. */ -define ip_source_and_port_range_check_interface_add_del_reply +define show_vpe_system_time_ticks_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 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; + f64 vpe_system_time_ticks; }; /*