X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vpp%2Fvpp-api%2Fvpe.api;h=8a7fac676042d41b99377d8b5a211b2e3c844623;hb=25e26dc5136137c771715145dd5b2884060ff9eb;hp=386ff1639ee205ebf2cbb2b26337b134b7e6225f;hpb=d85590a00421a73f019a91c6c3cdd05b6b73f414;p=vpp.git diff --git a/vpp/vpp-api/vpe.api b/vpp/vpp-api/vpe.api index 386ff1639ee..8a7fac67604 100644 --- a/vpp/vpp-api/vpe.api +++ b/vpp/vpp-api/vpe.api @@ -1,6 +1,6 @@ /* Hey Emacs use -*- mode: C -*- */ /* - * Copyright (c) 2015 Cisco and/or its affiliates. + * Copyright (c) 2015-2016 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -215,6 +215,30 @@ define sw_interface_set_table_reply i32 retval; }; +/** \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 Initialize a new tap interface with the given paramters @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -343,6 +367,198 @@ define create_vlan_subif_reply u32 sw_if_index; }; +/** \brief MPLS Route Add / del route + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param mr_label - The MPLS label value + @param mr_eos - The End of stack bit + @param mr_table_id - The MPLS table-id the route is added in + @param mr_classify_table_index - If this is a classify route, + this is the classify table index + @param mr_create_table_if_needed - If the MPLS or IP tables do not exist, + create them + @param mr_is_add - Is this a route add or delete + @param mr_is_classify - Is this route result a classify + @param mr_is_multipath - Is this route update a multipath - i.e. is this + a path addition to an existing route + @param mr_is_resolve_host - Recurse resolution constraint via a host prefix + @param mr_is_resolve_attached - Recurse resolution constraint via attached prefix + @param mr_next_hop_proto_is_ip4 - The next-hop is IPV4 + @param mr_next_hop_weight - The weight, for UCMP + @param mr_next_hop[16] - the nextop address + @param mr_next_hop_sw_if_index - the next-hop SW interface + @param mr_next_hop_table_id - the next-hop table-id (if appropriate) + @param mr_next_hop_out_label - the next-hop output label +*/ +define mpls_route_add_del +{ + u32 client_index; + u32 context; + u32 mr_label; + u8 mr_eos; + u32 mr_table_id; + u32 mr_classify_table_index; + u8 mr_create_table_if_needed; + u8 mr_is_add; + u8 mr_is_classify; + u8 mr_is_multipath; + u8 mr_is_resolve_host; + u8 mr_is_resolve_attached; + u8 mr_next_hop_proto_is_ip4; + u8 mr_next_hop_weight; + u8 mr_next_hop[16]; + u32 mr_next_hop_sw_if_index; + u32 mr_next_hop_table_id; + u32 mr_next_hop_out_label; +}; + +/** \brief Reply for MPLS route add / del request + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define mpls_route_add_del_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Dump MPLS fib table + @param client_index - opaque cookie to identify the sender +*/ +define mpls_fib_dump +{ + u32 client_index; + u32 context; +}; + +/** \brief FIB path + @param sw_if_index - index of the interface + @param weight - The weight, for UCMP + @param is_local - local if non-zero, else remote + @param is_drop - Drop the packet + @param is_unreach - Drop the packet and rate limit send ICMP unreachable + @param is_prohibit - Drop the packet and rate limit send ICMP prohibited + @param afi - the afi of the next hop, IP46_TYPE_IP4=1, IP46_TYPE_IP6=2 + @param next_hop[16] - the next hop address +*/ +typeonly manual_print manual_endian define fib_path +{ + u32 sw_if_index; + u32 weight; + u8 is_local; + u8 is_drop; + u8 is_unreach; + u8 is_prohibit; + u8 afi; + u8 next_hop[16]; +}; + +/** \brief mpls FIB table response + @param table_id - MPLS fib table id + @param s_bit - End-of-stack bit + @param label - MPLS label value + @param count - the number of fib_path in path + @param path - array of of fib_path structures +*/ +manual_endian manual_print define mpls_fib_details +{ + u32 context; + u32 table_id; + u8 eos_bit; + u32 label; + u32 count; + vl_api_fib_path_t path[count]; +}; + +/** \brief Dump IP6 fib table + @param client_index - opaque cookie to identify the sender +*/ +define ip6_fib_dump +{ + u32 client_index; + u32 context; +}; + +/** \brief IP6 FIB table response + @param table_id - IP6 fib table id + @address_length - mask length + @address - ip6 prefix + @param count - the number of fib_path in path + @param path - array of of fib_path structures +*/ +manual_endian manual_print define ip6_fib_details +{ + u32 context; + u32 table_id; + u8 address_length; + u8 address[16]; + u32 count; + vl_api_fib_path_t path[count]; +}; + +/** \brief Dump IP fib table + @param client_index - opaque cookie to identify the sender +*/ +define ip_fib_dump +{ + u32 client_index; + u32 context; +}; + +/** \brief IP FIB table response + @param table_id - IP fib table id + @address_length - mask length + @address - ip4 prefix + @param count - the number of fib_path in path + @param path - array of of fib_path structures +*/ +manual_endian manual_print define ip_fib_details +{ + u32 context; + u32 table_id; + u8 address_length; + u8 address[4]; + u32 count; + vl_api_fib_path_t path[count]; +}; + +/** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create + a per-prefix label entry. + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in + @param mb_label - The MPLS label value to bind + @param mb_ip_table_id - The IP table-id of the IP prefix to bind to. + @param mb_create_table_if_needed - Create either/both tables if required. + @param mb_is_bind - Bind or unbind + @param mb_is_ip4 - The prefix to bind to is IPv4 + @param mb_address_length - Length of IP prefix + @param mb_address[16] - IP prefix/ +*/ +define mpls_ip_bind_unbind +{ + u32 client_index; + u32 context; + u32 mb_mpls_table_id; + u32 mb_label; + u32 mb_ip_table_id; + u8 mb_create_table_if_needed; + u8 mb_is_bind; + u8 mb_is_ip4; + u8 mb_address_length; + u8 mb_address[16]; +}; + +/** \brief Reply for MPLS IP bind/unbind request + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define mpls_ip_bind_unbind_reply +{ + u32 context; + i32 retval; +}; + /** \brief Add / del route request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -354,7 +570,9 @@ define create_vlan_subif_reply @param create_vrf_if_needed - @param resolve_if_needed - @param is_add - 1 if adding the route, 0 if deleting - @param is_drop - + @param is_drop - Drop the packet + @param is_unreach - Drop the packet and rate limit send ICMP unreachable + @param is_prohibit - Drop the packet and rate limit send ICMP prohibited @param is_ipv6 - 0 if an ip4 route, else ip6 @param is_local - @param is_classify - @@ -370,19 +588,24 @@ define ip_add_del_route u32 client_index; u32 context; u32 next_hop_sw_if_index; - u32 vrf_id; - u32 lookup_in_vrf; + u32 table_id; u32 resolve_attempts; u32 classify_table_index; + u32 next_hop_out_label; + u32 next_hop_table_id; u8 create_vrf_if_needed; u8 resolve_if_needed; u8 is_add; u8 is_drop; + u8 is_unreach; + u8 is_prohibit; u8 is_ipv6; u8 is_local; u8 is_classify; - /* Is last/not-last message in group of multiple add/del messages. */ u8 is_multipath; + u8 is_resolve_host; + u8 is_resolve_attached; + /* Is last/not-last message in group of multiple add/del messages. */ u8 not_last; u8 next_hop_weight; u8 dst_address_length; @@ -400,44 +623,6 @@ define ip_add_del_route_reply i32 retval; }; -/* works */ -/** \brief Add / del gre tunnel request - @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 inner_vrf_id - - @param outer_vrf_id - - @param is_add - 1 if adding the tunnel, 0 if deleting - @param src_address[4] - tunnel source address - @param dst_address[4] - tunnel destination address - @param intf_address - - @param intf_address_length - -*/ -define mpls_gre_add_del_tunnel -{ - u32 client_index; - u32 context; - u32 inner_vrf_id; - u32 outer_vrf_id; - u8 is_add; - u8 l2_only; - u8 src_address[4]; - u8 dst_address[4]; - u8 intfc_address[4]; - u8 intfc_address_length; -}; - -/** \brief Reply for add / del tunnel request - @param context - returned sender context, to match reply w/ request - @param retval - return code -*/ -define mpls_gre_add_del_tunnel_reply -{ - u32 context; - i32 retval; - u32 tunnel_sw_if_index; -}; - /** \brief Add / del MPLS encapsulation request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -469,38 +654,6 @@ define mpls_add_del_encap_reply i32 retval; }; -/** \brief Add / del MPLS decapsulation 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 - @param tx_vrf_id - transmit vrf - @param label - - @param next_index - - @param s_bit - - @param is_add - 1 if adding the encap, 0 if deleting -*/ -define mpls_add_del_decap -{ - u32 client_index; - u32 context; - u32 rx_vrf_id; - u32 tx_vrf_id; - u32 label; - u32 next_index; - u8 s_bit; - u8 is_add; -}; - -/** \brief Reply for MPLS decap add / del request - @param context - returned sender context, to match reply w/ request - @param retval - return code -*/ -define mpls_add_del_decap_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 @@ -1148,30 +1301,6 @@ define control_ping_reply u32 vpe_pid; }; -/** \brief Control ping from client to api server request, no print json output - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request -*/ -define noprint_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 noprint_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 @@ -1183,6 +1312,13 @@ define cli_request 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 @@ -1195,6 +1331,13 @@ define cli_reply 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 @@ -1623,6 +1766,17 @@ define bd_ip_mac_add_del_reply @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 @@ -1637,6 +1791,8 @@ define classify_add_del_table u32 match_n_vectors; u32 next_table_index; u32 miss_next_index; + u32 current_data_flag; + i32 current_data_offset; u8 mask[0]; }; @@ -1664,6 +1820,17 @@ define classify_add_del_table_reply @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 @@ -1675,6 +1842,8 @@ define classify_add_del_session u32 hit_next_index; u32 opaque_index; i32 advance; + u8 action; + u32 metadata; u8 match[0]; }; @@ -1731,6 +1900,7 @@ define classify_set_interface_l2_tables 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 @@ -2022,6 +2192,7 @@ define gre_add_del_tunnel u32 context; u8 is_add; u8 is_ipv6; + u8 teb; u8 src_address[16]; u8 dst_address[16]; u32 outer_fib_id; @@ -2046,6 +2217,7 @@ define gre_tunnel_details u32 context; u32 sw_if_index; u8 is_ipv6; + u8 teb; u8 src_address[16]; u8 dst_address[16]; u32 outer_fib_id; @@ -2347,7 +2519,14 @@ define vxlan_gpe_tunnel_details @param is_add - add address if non-zero, else delete @param locator_set_name - locator name @param locator_num - number of locators - @param locators - Lisp locator data + @param locators - LISP locator records + Structure of one locator record is as follows: + + define locator_t { + u32 sw_if_index; + u8 priority; + u8 weight; + } */ define lisp_add_del_locator_set { @@ -2356,7 +2535,7 @@ define lisp_add_del_locator_set u8 is_add; u8 locator_set_name[64]; u32 locator_num; - u8 locators[locator_num]; + u8 locators[0]; }; /** \brief Reply for locator_set add/del @@ -2602,6 +2781,53 @@ define lisp_pitr_set_locator_set_reply i32 retval; }; +/** \brief set LISP map-request mode. Based on configuration VPP will send + src/dest or just normal destination map requests. + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param mode - new map-request mode. Supported values are: + 0 - destination only + 1 - source/destaination +*/ +define lisp_map_request_mode +{ + u32 client_index; + u32 context; + u8 mode; +}; + +/** \brief Reply for lisp_map_request_mode + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define lisp_map_request_mode_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Request for LISP map-request mode + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +define show_lisp_map_request_mode +{ + u32 client_index; + u32 context; +}; + +/** \brief Reply for show_lisp_map_request_mode + @param context - returned sender context, to match reply w/ request + @param retval - return code + @param mode - map-request mode +*/ +define show_lisp_map_request_mode_reply +{ + u32 context; + i32 retval; + u8 mode; +}; + /** \brief add or delete remote static mapping @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -2617,7 +2843,15 @@ define lisp_pitr_set_locator_set_reply @param deid - dst EID @param seid - src EID, valid only if is_src_dst is enabled @param rloc_num - number of remote locators - @param rlocs - remote locator data + @param rlocs - remote locator records + Structure of remote locator: + + define rloc_t { + u8 is_ip4; + u8 priority; + u8 weight; + u8 addr[16]; + } */ define lisp_add_del_remote_mapping { @@ -2634,7 +2868,7 @@ define lisp_add_del_remote_mapping u8 seid[16]; u8 seid_len; u32 rloc_num; - u8 rlocs[rloc_num]; + u8 rlocs[0]; }; /** \brief Reply for lisp_add_del_remote_mapping @@ -2656,8 +2890,8 @@ define lisp_add_del_remote_mapping_reply 0 : ipv4 1 : ipv6 2 : mac - @param deid - destination EID - @param seid - source EID + @param reid - remote EID + @param leid - local EID */ define lisp_add_del_adjacency { @@ -2666,10 +2900,10 @@ define lisp_add_del_adjacency u8 is_add; u32 vni; u8 eid_type; - u8 deid[16]; - u8 seid[16]; - u8 deid_len; - u8 seid_len; + u8 reid[16]; + u8 leid[16]; + u8 reid_len; + u8 leid_len; }; /** \brief Reply for lisp_add_del_adjacency @@ -2738,18 +2972,16 @@ define lisp_eid_table_add_del_map_reply @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param locator_set_index - index of locator_set - @param filter - filter type; - Support value: - 0: all locator - 1: local locator - 2: remote locator + @param ls_name - locator set name + @param is_index_set - flag indicating whether ls_name or ls_index is set */ define lisp_locator_dump { u32 client_index; u32 context; - u32 locator_set_index; - u8 filter; + u32 ls_index; + u8 ls_name[64]; + u8 is_index_set; }; /** \brief LISP locator_set status @@ -2771,27 +3003,25 @@ define lisp_locator_details }; /** \brief LISP locator_set status - @param locator_set_name - name of the locator_set - @param local - if is set, then locator_set is local - @param locator_count - number of locator this stats block includes - @param locator - locator data + @param context - sender context, to match reply w/ request + @param ls_index - locator set index + @param ls_name - name of the locator set */ define lisp_locator_set_details { u32 context; - u8 local; - u32 locator_set_index; - u8 locator_set_name[64]; + u32 ls_index; + u8 ls_name[64]; }; /** \brief Request for locator_set summary status @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param filter - filter type; - Support value: - 0: all locator_set - 1: local locator_set - 2: remote locator_set + @param filter - filter type + Supported values: + 0: all locator sets + 1: local locator sets + 2: remote locator sets */ define lisp_locator_set_dump { @@ -2811,8 +3041,11 @@ define lisp_locator_set_dump 0 : ipv4 1 : ipv6 2 : mac + @param is_src_dst - EID is type of source/destination @param eid - EID can be ip4, ip6 or mac - @param prefix_len - prefix len + @param eid_prefix_len - prefix length + @param seid - source EID can be ip4, ip6 or mac + @param seid_prefix_len - source prefix length @param vni - virtual network instance @param ttl - time to live @param authoritative - authoritative @@ -2825,9 +3058,12 @@ define lisp_eid_table_details u8 action; u8 is_local; u8 eid_type; + u8 is_src_dst; u32 vni; u8 eid[16]; u8 eid_prefix_len; + u8 seid[16]; + u8 seid_prefix_len; u32 ttl; u8 authoritative; }; @@ -2863,27 +3099,70 @@ define lisp_eid_table_dump u8 filter; }; -/** \brief Shows relationship between vni and vrf/bd - @param dp_table - VRF index or bridge domain index - @param vni - vitual network instance +/** \brief LISP adjacency + @param eid_type - + 0 : ipv4 + 1 : ipv6 + 2 : mac + @param reid - remote EID + @param leid - local EID + @param reid_prefix_len - remote EID IP prefix length + @param leid_prefix_len - local EID IP prefix length */ -define lisp_eid_table_map_details +typeonly manual_print manual_endian define lisp_adjacency +{ + u8 eid_type; + u8 reid[16]; + u8 leid[16]; + u8 reid_prefix_len; + u8 leid_prefix_len; +}; + +/** \brief LISP adjacency reply + @param count - number of adjacencies + @param adjacencies - array of adjacencies + */ +manual_endian manual_print define lisp_adjacencies_get_reply { u32 context; - u32 vni; - u32 dp_table; + i32 retval; + u32 count; + vl_api_lisp_adjacency_t adjacencies[count]; }; -/** \brief Request for lisp_eid_table_map_details +/** \brief Request for LISP adjacencies @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param is_l2 - if set dump vni/bd mappings else vni/vrf + @param vni - filter adjacencies by VNI */ -define lisp_eid_table_map_dump +define lisp_adjacencies_get { u32 client_index; u32 context; - u8 is_l2; + u32 vni; +}; + +/** \brief Shows relationship between vni and vrf/bd + @param dp_table - VRF index or bridge domain index + @param vni - vitual network instance + */ +define lisp_eid_table_map_details +{ + u32 context; + u32 vni; + u32 dp_table; +}; + +/** \brief Request for lisp_eid_table_map_details + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param is_l2 - if set dump vni/bd mappings else vni/vrf + */ +define lisp_eid_table_map_dump +{ + u32 client_index; + u32 context; + u8 is_l2; }; /** \brief Dumps all VNIs used in mappings @@ -3071,6 +3350,7 @@ define want_ip4_arp_events_reply @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 { @@ -3080,8 +3360,55 @@ define ip4_arp_event 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 L2 bridge domain add or delete request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -3899,87 +4226,52 @@ define sw_interface_clear_stats_reply i32 retval; }; -/** \brief IOAM Trace : Set TRACE profile +/** \brief IOAM enable : Enable in-band OAM @param id - profile id - @param trace_type - Trace type - @param trace_num_elt - Number of nodes in trace path - @param trace_ppc - Trace PPC (none/encap/decap) - @param trace_tsp - Trace timestamp precision (0-sec,1-ms,2-us,3-ns) - @param trace_app_data - Trace application data, can be any 4 bytes + @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 node_id - Id of this node + @param trace_enable - iOAM Trace enabled or not flag */ -define trace_profile_add +define ioam_enable { u32 client_index; u32 context; u16 id; - u8 trace_type; - u8 trace_num_elt; - u8 trace_ppc; - u8 trace_tsp; - u32 trace_app_data; - u8 pow_enable; + u8 seqno; + u8 analyse; + u8 pot_enable; + u8 trace_enable; u32 node_id; }; -/** \brief Trace profile add / del response +/** \brief iOAM Trace profile add / del response @param context - sender context, to match reply w/ request @param retval - return value for request */ -define trace_profile_add_reply +define ioam_enable_reply { u32 context; i32 retval; }; -/** \brief IOAM Trace enable trace profile for a flow - @param id - id of the trace profile to be applied - @param dest_ipv6 - Destination IPv6 address - @param prefix_length - prefix mask - @param vrf_id - VRF ID - @param trace_op - Trace operation (add/mod/del) - @param enable - apply/remove the trace profile for the flow -*/ -define trace_profile_apply -{ - u32 client_index; - u32 context; - u16 id; - u8 dest_ipv6[16]; - u32 prefix_length; - u32 vrf_id; - u8 trace_op; - u8 enable; -}; - -/** \brief Trace profile apply response - @param context - sender context, to match reply w/ request - @param retval - return value for request -*/ -define trace_profile_apply_reply -{ - u32 context; - i32 retval; -}; - -/** \brief Delete Trace Profile +/** \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 trace_profile_del +define ioam_disable { u32 client_index; u32 context; u16 id; }; -/** \brief Trace profile add / del response +/** \brief iOAM disable response @param context - sender context, to match reply w/ request @param retval - return value for request */ -define trace_profile_del_reply +define ioam_disable_reply { u32 context; i32 retval; @@ -4385,40 +4677,6 @@ define mpls_fib_encap_details u32 labels[nlabels]; }; -/** \brief Dump mpls fib decap table - @param client_index - opaque cookie to identify the sender - @param fib_index - mpls fib entry identifier or -1 in case of all entries -*/ -define mpls_fib_decap_dump -{ - u32 client_index; - u32 context; -}; - -/** \brief mpls fib decap table response - @param fib_index - fib table id - @param entry_index - reference to mpls label table - @param dest - destination ipv4 addr - @param s_bit - - @param label - mpls labels - @param rx_table_id - rx fib id - @param tx_table_id - tx fib id - @param swif_tag - -*/ -define mpls_fib_decap_details -{ - u32 context; - - u32 fib_index; - u32 entry_index; - u32 dest; - u32 s_bit; - u32 label; - u32 rx_table_id; - u32 tx_table_id; - u8 swif_tag[8]; -}; - /** \brief Classify get table IDs request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -4544,17 +4802,18 @@ define classify_session_details u8 match[match_length]; }; -/** \brief Enable and configure IPFIX exporter process request +/** \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 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 ipfix_enable +define set_ipfix_exporter { u32 client_index; u32 context; @@ -4564,45 +4823,230 @@ define ipfix_enable u32 vrf_id; u32 path_mtu; u32 template_interval; + u8 udp_checksum; }; -/** \brief Reply to IPFIX enable and configure request +/** \brief Reply to IPFIX exporter configure request @param context - sender context which was passed in the request */ -define ipfix_enable_reply +define set_ipfix_exporter_reply { u32 context; i32 retval; }; -/** \brief IPFIX dump request +/** \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_dump +define ipfix_exporter_dump { u32 client_index; u32 context; }; -/** \brief Reply to IPFIX dump request +/** \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 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_details +define ipfix_exporter_details { u32 context; u8 collector_address[16]; u16 collector_port; u8 src_address[16]; - u32 fib_index; + 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 Enable/Disable span to mirror traffic from one interface to another + @param client_index - opaque cookie to identify the sender + @param context - sender context which was passed in the request + @param sw_if_index_from - interface to be mirorred + @param sw_if_index_to - interface where the traffic is mirrored + @param enable - 1 enable SPAN, 0 SPAN on given interface +*/ +define sw_interface_span_enable_disable{ + u32 client_index; + u32 context; + u32 sw_if_index_from; + u32 sw_if_index_to; + u8 enable; +}; + +/** \brief Reply to SPAN enable/disable request + @param context - sender context which was passed in the request +*/ +define sw_interface_span_enable_disable_reply { + u32 context; + i32 retval; +}; + +/** \brief SPAN dump request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +define sw_interface_span_dump { + u32 client_index; + u32 context; +}; + +/** \brief Reply to SPAN dump request + @param context - sender context which was passed in the request + @param sw_if_index_from - mirorred interface + @param sw_if_index_to - interface where the traffic is mirrored +*/ +define sw_interface_span_details { + u32 context; + u32 sw_if_index_from; + u32 sw_if_index_to; }; /** \brief Query relative index via node names @@ -4851,3 +5295,203 @@ define delete_subif_reply { u32 context; i32 retval; }; + +/** \brief DPDK interface HQoS pipe profile set 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 subport - subport ID + @param pipe - pipe ID within its subport + @param profile - pipe profile ID +*/ +define sw_interface_set_dpdk_hqos_pipe { + u32 client_index; + u32 context; + u32 sw_if_index; + u32 subport; + u32 pipe; + u32 profile; +}; + +/** \brief DPDK interface HQoS pipe profile set reply + @param context - sender context, to match reply w/ request + @param retval - request return code +*/ +define sw_interface_set_dpdk_hqos_pipe_reply { + u32 context; + i32 retval; +}; + +/** \brief DPDK interface HQoS subport parameters set 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 subport - subport ID + @param tb_rate - subport token bucket rate (measured in bytes/second) + @param tb_size - subport token bucket size (measured in credits) + @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second) + @param tc_period - enforcement period for rates (measured in milliseconds) +*/ +define sw_interface_set_dpdk_hqos_subport { + u32 client_index; + u32 context; + u32 sw_if_index; + u32 subport; + u32 tb_rate; + u32 tb_size; + u32 tc_rate[4]; + u32 tc_period; +}; + +/** \brief DPDK interface HQoS subport parameters set reply + @param context - sender context, to match reply w/ request + @param retval - request return code +*/ +define sw_interface_set_dpdk_hqos_subport_reply { + u32 context; + i32 retval; +}; + +/** \brief DPDK interface HQoS tctbl entry set 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 entry - entry index ID + @param tc - traffic class (0 .. 3) + @param queue - traffic class queue (0 .. 3) +*/ +define sw_interface_set_dpdk_hqos_tctbl { + u32 client_index; + u32 context; + u32 sw_if_index; + u32 entry; + u32 tc; + u32 queue; +}; + +/** \brief DPDK interface HQoS tctbl entry set reply + @param context - sender context, to match reply w/ request + @param retval - request return code +*/ +define sw_interface_set_dpdk_hqos_tctbl_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 Dump ipsec policy database data + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param spd_id - SPD instance id + @param sa_id - SA id, optional, set to ~0 to see all policies in SPD +*/ +define ipsec_spd_dump { + u32 client_index; + u32 context; + u32 spd_id; + u32 sa_id; +}; + +/** \brief IPsec policy database response + @param context - sender context which was passed in the request + @param spd_id - SPD instance id + @param priority - numeric value to control policy evaluation order + @param is_outbound - [1|0] to indicate if direction is [out|in]bound + @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4] + @param local_start_addr - first address in local traffic selector range + @param local_stop_addr - last address in local traffic selector range + @param local_start_port - first port in local traffic selector range + @param local_stop_port - last port in local traffic selector range + @param remote_start_addr - first address in remote traffic selector range + @param remote_stop_addr - last address in remote traffic selector range + @param remote_start_port - first port in remote traffic selector range + @param remote_stop_port - last port in remote traffic selector range + @param protocol - traffic selector protocol + @param policy - policy action + @param sa_id - SA id + @param bytes - byte count of packets matching this policy + @param packets - count of packets matching this policy +*/ + +define ipsec_spd_details { + u32 context; + u32 spd_id; + i32 priority; + u8 is_outbound; + u8 is_ipv6; + u8 local_start_addr[16]; + u8 local_stop_addr[16]; + u16 local_start_port; + u16 local_stop_port; + u8 remote_start_addr[16]; + u8 remote_stop_addr[16]; + u16 remote_start_port; + u16 remote_stop_port; + u8 protocol; + u8 policy; + u32 sa_id; + u64 bytes; + u64 packets; +}; +