2 * Copyright (c) 2015-2016 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
18 This file defines vpe control-plane API messages which are generally
19 called through a shared memory interface.
23 * Note: API placement cleanup in progress
24 * If you're looking for interface APIs, please
25 * see .../vnet/vnet/{interface.api,interface_api.c}
26 * IP APIs: see .../vnet/vnet/ip/{ip.api, ip_api.c}
27 * TAP APIs: see .../vnet/vnet/unix/{tap.api, tap_api.c}
28 * VXLAN APIs: see .../vnet/vnet/vxlan/{vxlan.api, vxlan_api.c}
29 * AF-PACKET APIs: ... see /vnet/devices/af_packet/{af_packet.api, af_packet_api.c}
30 * NETMAP APIs: see ... /vnet/vnet/devices/netmap/{netmap.api, netmap_api.c}
33 /** \brief Create a new subinterface with the given vlan id
34 @param client_index - opaque cookie to identify the sender
35 @param context - sender context, to match reply w/ request
36 @param sw_if_index - software index of the new vlan's parent interface
37 @param vlan_id - vlan tag of the new interface
39 define create_vlan_subif
47 /** \brief Reply for the vlan subinterface create request
48 @param context - returned sender context, to match reply w/ request
49 @param retval - return code
50 @param sw_if_index - software index allocated for the new subinterface
52 define create_vlan_subif_reply
59 /** \brief Enable or Disable MPLS on and interface
60 @param client_index - opaque cookie to identify the sender
61 @param context - sender context, to match reply w/ request
62 @param sw_if_index - index of the interface
63 @param enable - if non-zero enable, else disable
65 define sw_interface_set_mpls_enable
73 /** \brief Reply for MPLS state on an interface
74 @param context - returned sender context, to match reply w/ request
75 @param retval - return code
77 define sw_interface_set_mpls_enable_reply
83 /** \brief MPLS Route Add / del route
84 @param client_index - opaque cookie to identify the sender
85 @param context - sender context, to match reply w/ request
86 @param mr_label - The MPLS label value
87 @param mr_eos - The End of stack bit
88 @param mr_table_id - The MPLS table-id the route is added in
89 @param mr_classify_table_index - If this is a classify route,
90 this is the classify table index
91 @param mr_create_table_if_needed - If the MPLS or IP tables do not exist,
93 @param mr_is_add - Is this a route add or delete
94 @param mr_is_classify - Is this route result a classify
95 @param mr_is_multipath - Is this route update a multipath - i.e. is this
96 a path addition to an existing route
97 @param mr_is_resolve_host - Recurse resolution constraint via a host prefix
98 @param mr_is_resolve_attached - Recurse resolution constraint via attached prefix
99 @param mr_next_hop_proto_is_ip4 - The next-hop is IPV4
100 @param mr_next_hop_weight - The weight, for UCMP
101 @param mr_next_hop[16] - the nextop address
102 @param mr_next_hop_sw_if_index - the next-hop SW interface
103 @param mr_next_hop_table_id - the next-hop table-id (if appropriate)
104 @param mr_next_hop_n_out_labels - the number of labels in the label stack
105 @param mr_next_hop_out_label_stack - the next-hop output label stack, outer most first
106 @param next_hop_via_label - The next-hop is a resolved via a local label
108 define mpls_route_add_del
115 u32 mr_classify_table_index;
116 u8 mr_create_table_if_needed;
120 u8 mr_is_resolve_host;
121 u8 mr_is_resolve_attached;
122 u8 mr_next_hop_proto_is_ip4;
123 u8 mr_next_hop_weight;
125 u8 mr_next_hop_n_out_labels;
126 u32 mr_next_hop_sw_if_index;
127 u32 mr_next_hop_table_id;
128 u32 mr_next_hop_via_label;
129 u32 mr_next_hop_out_label_stack[mr_next_hop_n_out_labels];
132 /** \brief Reply for MPLS route add / del request
133 @param context - returned sender context, to match reply w/ request
134 @param retval - return code
136 define mpls_route_add_del_reply
142 /** \brief Dump MPLS fib table
143 @param client_index - opaque cookie to identify the sender
152 @param sw_if_index - index of the interface
153 @param weight - The weight, for UCMP
154 @param is_local - local if non-zero, else remote
155 @param is_drop - Drop the packet
156 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
157 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
158 @param afi - the afi of the next hop, IP46_TYPE_IP4=1, IP46_TYPE_IP6=2
159 @param next_hop[16] - the next hop address
161 WARNING: this type is replicated, pending cleanup completion
164 typeonly manual_print manual_endian define fib_path2
176 /** \brief mpls FIB table response
177 @param table_id - MPLS fib table id
178 @param s_bit - End-of-stack bit
179 @param label - MPLS label value
180 @param count - the number of fib_path in path
181 @param path - array of of fib_path structures
183 manual_endian manual_print define mpls_fib_details
190 vl_api_fib_path2_t path[count];
193 /** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create
194 a per-prefix label entry.
195 @param client_index - opaque cookie to identify the sender
196 @param context - sender context, to match reply w/ request
197 @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in
198 @param mb_label - The MPLS label value to bind
199 @param mb_ip_table_id - The IP table-id of the IP prefix to bind to.
200 @param mb_create_table_if_needed - Create either/both tables if required.
201 @param mb_is_bind - Bind or unbind
202 @param mb_is_ip4 - The prefix to bind to is IPv4
203 @param mb_address_length - Length of IP prefix
204 @param mb_address[16] - IP prefix/
206 define mpls_ip_bind_unbind
210 u32 mb_mpls_table_id;
213 u8 mb_create_table_if_needed;
216 u8 mb_address_length;
220 /** \brief Reply for MPLS IP bind/unbind request
221 @param context - returned sender context, to match reply w/ request
222 @param retval - return code
224 define mpls_ip_bind_unbind_reply
230 /** \brief MPLS tunnel Add / del route
231 @param client_index - opaque cookie to identify the sender
232 @param context - sender context, to match reply w/ request
233 @param mt_is_add - Is this a route add or delete
234 @param mt_sw_if_index - The SW interface index of the tunnel to delete
235 @param mt_next_hop_proto_is_ip4 - The next-hop is IPV4
236 @param mt_next_hop_weight - The weight, for UCMP
237 @param mt_next_hop[16] - the nextop address
238 @param mt_next_hop_sw_if_index - the next-hop SW interface
239 @param mt_next_hop_table_id - the next-hop table-id (if appropriate)
240 @param mt_next_hop_n_out_labels - the number of next-hop output labels
241 @param mt_next_hop_out_label_stack - the next-hop output label stack, outer most first
243 define mpls_tunnel_add_del
250 u8 mt_next_hop_proto_is_ip4;
251 u8 mt_next_hop_weight;
253 u8 mt_next_hop_n_out_labels;
254 u32 mt_next_hop_sw_if_index;
255 u32 mt_next_hop_table_id;
256 u32 mt_next_hop_out_label_stack[mt_next_hop_n_out_labels];
259 /** \brief Reply for MPLS tunnel add / del request
260 @param context - returned sender context, to match reply w/ request
261 @param retval - return code
262 @param sw_if_index - SW interface index of the tunnel created
264 define mpls_tunnel_add_del_reply
271 /** \brief Dump mpls eth tunnel table
272 @param client_index - opaque cookie to identify the sender
273 @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels
275 define mpls_tunnel_dump
282 /** \brief mpls eth tunnel operational state response
283 @param tunnel_index - eth tunnel identifier
284 @param intfc_address - interface ipv4 addr
285 @param mask_width - interface ipv4 addr mask
286 @param hw_if_index - interface id
288 @param tunnel_dst_mac -
289 @param tx_sw_if_index -
290 @param encap_index - reference to mpls label table
291 @param nlabels - number of resolved labels
292 @param labels - resolved labels
294 define mpls_tunnel_details
300 u8 mt_next_hop_proto_is_ip4;
302 u32 mt_next_hop_sw_if_index;
303 u32 mt_next_hop_table_id;
304 u32 mt_next_hop_n_labels;
305 u32 mt_next_hop_out_labels[mt_next_hop_n_labels];
308 /** \brief Proxy ARP add / del request
309 @param client_index - opaque cookie to identify the sender
310 @param context - sender context, to match reply w/ request
311 @param vrf_id - VRF / Fib table ID
312 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
313 @param low_address[4] - Low address of the Proxy ARP range
314 @param hi_address[4] - High address of the Proxy ARP range
316 define proxy_arp_add_del
326 /** \brief Reply for proxy arp add / del request
327 @param context - returned sender context, to match reply w/ request
328 @param retval - return code
330 define proxy_arp_add_del_reply
336 /** \brief Proxy ARP add / del request
337 @param client_index - opaque cookie to identify the sender
338 @param context - sender context, to match reply w/ request
339 @param sw_if_index - Which interface to enable / disable Proxy Arp on
340 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
342 define proxy_arp_intfc_enable_disable
347 /* 1 = on, 0 = off */
351 /** \brief Reply for Proxy ARP interface enable / disable request
352 @param context - returned sender context, to match reply w/ request
353 @param retval - return code
355 define proxy_arp_intfc_enable_disable_reply
361 /** \brief Reset VRF (remove all routes etc) request
362 @param client_index - opaque cookie to identify the sender
363 @param context - sender context, to match reply w/ request
364 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
365 @param vrf_id - ID of th FIB table / VRF to reset
375 /** \brief Reply for Reset VRF request
376 @param context - returned sender context, to match reply w/ request
377 @param retval - return code
379 define reset_vrf_reply
385 /** \brief Is Address Reachable request - DISABLED
386 @param client_index - opaque cookie to identify the sender
387 @param context - sender context, to match reply w/ request
388 @param next_hop_sw_if_index - index of interface used to get to next hop
389 @param is_ipv6 - 1 for IPv6, 0 for IPv4
390 @param is_error - address not found or does not match intf
391 @param address[] - Address in question
393 define is_address_reachable
395 u32 client_index; /* (api_main_t *) am->my_client_index */
397 u32 next_hop_sw_if_index;
398 u8 is_known; /* on reply, this is the answer */
400 u8 is_error; /* address not found or does not match intf */
404 /** \brief Want Stats, register for stats updates
405 @param client_index - opaque cookie to identify the sender
406 @param context - sender context, to match reply w/ request
407 @param enable_disable - 1 = enable stats, 0 = disable
408 @param pid - pid of process requesting stats updates
418 /** \brief Reply for Want Stats request
419 @param context - returned sender context, to match reply w/ request
420 @param retval - return code
422 define want_stats_reply
428 typeonly manual_print manual_endian define ip4_fib_counter
436 manual_print manual_endian define vnet_ip4_fib_counters
440 vl_api_ip4_fib_counter_t c[count];
443 typeonly manual_print manual_endian define ip6_fib_counter
451 manual_print manual_endian define vnet_ip6_fib_counters
455 vl_api_ip6_fib_counter_t c[count];
458 /** \brief Request for a single block of summary stats
459 @param client_index - opaque cookie to identify the sender
460 @param context - sender context, to match reply w/ request
462 define vnet_get_summary_stats
468 /** \brief Reply for vnet_get_summary_stats request
469 @param context - sender context, to match reply w/ request
470 @param retval - return code for request
475 define vnet_summary_stats_reply
484 /** \brief OAM event structure
485 @param dst_address[] -
494 /** \brief Want OAM events request
495 @param client_index - opaque cookie to identify the sender
496 @param context - sender context, to match reply w/ request
497 @param enable_disable- enable if non-zero, else disable
498 @param pid - pid of the requesting process
500 define want_oam_events
508 /** \brief Want OAM events response
509 @param context - sender context, to match reply w/ request
510 @param retval - return code for the want oam stats request
512 define want_oam_events_reply
518 /** \brief OAM add / del target request
519 @param client_index - opaque cookie to identify the sender
520 @param context - sender context, to match reply w/ request
521 @param vrf_id - vrf_id of the target
522 @param src_address[] - source address to use for the updates
523 @param dst_address[] - destination address of the target
524 @param is_add - add target if non-zero, else delete
536 /** \brief OAM add / del target response
537 @param context - sender context, to match reply w/ request
538 @param retval - return code of the request
540 define oam_add_del_reply
546 /** \brief Reset fib table request
547 @param client_index - opaque cookie to identify the sender
548 @param context - sender context, to match reply w/ request
549 @param vrf_id - vrf/table id of the fib table to reset
550 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
560 /** \brief Reset fib response
561 @param context - sender context, to match reply w/ request
562 @param retval - return code for the reset bfib request
564 define reset_fib_reply
570 /** \brief DHCP Proxy config add / del request
571 @param client_index - opaque cookie to identify the sender
572 @param context - sender context, to match reply w/ request
573 @param vrf_id - vrf id
574 @param if_ipv6 - ipv6 if non-zero, else ipv4
575 @param is_add - add the config if non-zero, else delete
576 @param insert_circuit_id - option82 suboption 1 fib number
577 @param dhcp_server[] - server address
578 @param dhcp_src_address[] - <fix this, need details>
580 define dhcp_proxy_config
587 u8 insert_circuit_id;
589 u8 dhcp_src_address[16];
592 /** \brief DHCP Proxy config response
593 @param context - sender context, to match reply w/ request
594 @param retval - return code for the request
596 define dhcp_proxy_config_reply
602 /** \brief DHCP Proxy set / unset vss request
603 @param client_index - opaque cookie to identify the sender
604 @param context - sender context, to match reply w/ request
605 @param tbl_id - table id
606 @param oui - first part of vpn id
607 @param fib_id - second part of vpn id
608 @param is_ipv6 - ip6 if non-zero, else ip4
609 @param is_add - set vss if non-zero, else delete
611 define dhcp_proxy_set_vss
622 /** \brief DHCP proxy set / unset vss response
623 @param context - sender context, to match reply w/ request
624 @param retval - return code for the request
626 define dhcp_proxy_set_vss_reply
632 /** \brief Create loopback interface request
633 @param client_index - opaque cookie to identify the sender
634 @param context - sender context, to match reply w/ request
635 @param mac_address - mac addr to assign to the interface if none-zero
637 define create_loopback
644 /** \brief Create loopback interface response
645 @param context - sender context, to match reply w/ request
646 @param sw_if_index - sw index of the interface that was created
647 @param retval - return code for the request
649 define create_loopback_reply
656 /** \brief Delete loopback interface request
657 @param client_index - opaque cookie to identify the sender
658 @param context - sender context, to match reply w/ request
659 @param sw_if_index - sw index of the interface that was created
661 define delete_loopback
668 /** \brief Delete loopback interface response
669 @param context - sender context, to match reply w/ request
670 @param retval - return code for the request
672 define delete_loopback_reply
678 /** \brief Control ping from client to api server request
679 @param client_index - opaque cookie to identify the sender
680 @param context - sender context, to match reply w/ request
688 /** \brief Control ping from the client to the server response
689 @param client_index - opaque cookie to identify the sender
690 @param context - sender context, to match reply w/ request
691 @param retval - return code for the request
692 @param vpe_pid - the pid of the vpe, returned by the server
694 define control_ping_reply
702 /** \brief Process a vpe parser cli string request
703 @param client_index - opaque cookie to identify the sender
704 @param context - sender context, to match reply w/ request
705 @param cmd_in_shmem - pointer to cli command string
721 /** \brief vpe parser cli string response
722 @param context - sender context, to match reply w/ request
723 @param retval - return code for request
724 @param reply_in_shmem - Reply string from cli processing if any
732 define cli_inband_reply
740 /** \brief Set max allowed ARP or ip6 neighbor entries request
741 @param client_index - opaque cookie to identify the sender
742 @param context - sender context, to match reply w/ request
743 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
744 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
746 define set_arp_neighbor_limit
751 u32 arp_neighbor_limit;
754 /** \brief Set max allowed ARP or ip6 neighbor entries response
755 @param context - sender context, to match reply w/ request
756 @param retval - return code for request
758 define set_arp_neighbor_limit_reply
764 /** \brief L2 interface patch add / del request
765 @param client_index - opaque cookie to identify the sender
766 @param context - sender context, to match reply w/ request
767 @param rx_sw_if_index - receive side interface
768 @param tx_sw_if_index - transmit side interface
769 @param is_add - if non-zero set up the interface patch, else remove it
771 define l2_patch_add_del
780 /** \brief L2 interface patch add / del response
781 @param context - sender context, to match reply w/ request
782 @param retval - return code for the request
784 define l2_patch_add_del_reply
790 /** \brief IPv6 segment routing tunnel add / del request
791 @param client_index - opaque cookie to identify the sender
792 @param context - sender context, to match reply w/ request
793 @param is_add - add the tunnel if non-zero, else delete it
794 @param name[] - tunnel name (len. 64)
795 @param src_address[] -
796 @param dst_address[] -
797 @param dst_mask_width -
798 @param inner_vrf_id -
799 @param outer_vrf_id -
800 @param flags_net_byte_order -
803 @param segs_and_tags[] -
804 @param policy_name[] - name of policy to associate this tunnel to (len. 64)
806 define sr_tunnel_add_del
817 u16 flags_net_byte_order;
824 /** \brief IPv6 segment routing tunnel add / del response
825 @param context - sender context, to match reply w/ request
826 @param retval - return value for request
828 define sr_tunnel_add_del_reply
834 /** \brief IPv6 segment routing policy add / del request
835 @param client_index - opaque cookie to identify the sender
836 @param context - sender context, to match reply w/ request
837 @param is_add - add the tunnel if non-zero, else delete it
838 @param name[] - policy name (len. 64)
839 @param tunnel_names[] -
841 define sr_policy_add_del
850 /** \brief IPv6 segment routing policy add / del response
851 @param context - sender context, to match reply w/ request
852 @param retval - return value for request
854 define sr_policy_add_del_reply
860 /** \brief IPv6 segment routing multicast map to policy add / del request
861 @param client_index - opaque cookie to identify the sender
862 @param context - sender context, to match reply w/ request
863 @param is_add - add the tunnel if non-zero, else delete it
864 @param multicast_address[] - IP6 multicast address
865 @param policy_name[] = policy name (len.64)
867 define sr_multicast_map_add_del
872 u8 multicast_address[16];
876 /** \brief IPv6 segment routing multicast map to policy add / del response
877 @param context - sender context, to match reply w/ request
878 @param retval - return value for request
880 define sr_multicast_map_add_del_reply
886 /** \brief Interface set vpath request
887 @param client_index - opaque cookie to identify the sender
888 @param context - sender context, to match reply w/ request
889 @param sw_if_index - interface used to reach neighbor
890 @param enable - if non-zero enable, else disable
892 define sw_interface_set_vpath
900 /** \brief Interface set vpath response
901 @param context - sender context, to match reply w/ request
902 @param retval - return code for the request
904 define sw_interface_set_vpath_reply
910 /** \brief Set L2 XConnect between two interfaces request
911 @param client_index - opaque cookie to identify the sender
912 @param context - sender context, to match reply w/ request
913 @param rx_sw_if_index - Receive interface index
914 @param tx_sw_if_index - Transmit interface index
915 @param enable - enable xconnect if not 0, else set to L3 mode
917 define sw_interface_set_l2_xconnect
926 /** \brief Set L2 XConnect response
927 @param context - sender context, to match reply w/ request
928 @param retval - L2 XConnect request return code
930 define sw_interface_set_l2_xconnect_reply
936 /** \brief Interface bridge mode request
937 @param client_index - opaque cookie to identify the sender
938 @param context - sender context, to match reply w/ request
939 @param rx_sw_if_index - the interface
940 @param bd_id - bridge domain id
941 @param bvi - Setup interface as a bvi, bridge mode only
942 @param shg - Shared horizon group, for bridge mode only
943 @param enable - Enable beige mode if not 0, else set to L3 mode
945 define sw_interface_set_l2_bridge
956 /** \brief Interface bridge mode response
957 @param context - sender context, to match reply w/ request
958 @param retval - Bridge mode request return code
960 define sw_interface_set_l2_bridge_reply
966 /** \brief L2 FIB add entry request
967 @param client_index - opaque cookie to identify the sender
968 @param context - sender context, to match reply w/ request
969 @param mac - the entry's mac address
970 @param bd_id - the entry's bridge domain id
971 @param sw_if_index - the interface
972 @param is_add - If non zero add the entry, else delete it
989 /** \brief L2 FIB add entry response
990 @param context - sender context, to match reply w/ request
991 @param retval - return code for the add l2fib entry request
993 define l2fib_add_del_reply
999 /** \brief Set L2 flags request !!! TODO - need more info, feature bits in l2_input.h
1000 @param client_index - opaque cookie to identify the sender
1001 @param context - sender context, to match reply w/ request
1002 @param sw_if_index - interface
1003 @param is_set - if non-zero, set the bits, else clear them
1004 @param feature_bitmap - non-zero bits to set or clear
1015 /** \brief Set L2 bits response
1016 @param context - sender context, to match reply w/ request
1017 @param retval - return code for the set l2 bits request
1019 define l2_flags_reply
1023 u32 resulting_feature_bitmap;
1026 /** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD,
1027 L2_UU_FLOOD, or L2_ARP_TERM) request
1028 @param client_index - opaque cookie to identify the sender
1029 @param context - sender context, to match reply w/ request
1030 @param bd_id - the bridge domain to set the flags for
1031 @param is_set - if non-zero, set the flags, else clear them
1032 @param feature_bitmap - bits that are non-zero to set or clear
1043 /** \brief Set bridge flags response
1044 @param context - sender context, to match reply w/ request
1045 @param retval - return code for the set bridge flags request
1046 @param resulting_feature_bitmap - the feature bitmap value after the request is implemented
1048 define bridge_flags_reply
1052 u32 resulting_feature_bitmap;
1055 /** \brief Set bridge domain ip to mac entry request
1056 @param client_index - opaque cookie to identify the sender
1057 @param context - sender context, to match reply w/ request
1058 @param bd_id - the bridge domain to set the flags for
1059 @param is_add - if non-zero, add the entry, else clear it
1060 @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
1061 @param mac_address - MAC address
1064 define bd_ip_mac_add_del
1075 /** \brief Set bridge domain ip to mac entry response
1076 @param context - sender context, to match reply w/ request
1077 @param retval - return code for the set bridge flags request
1079 define bd_ip_mac_add_del_reply
1085 /** \brief Add/Delete classification table request
1086 @param client_index - opaque cookie to identify the sender
1087 @param context - sender context, to match reply w/ request
1088 @param is_add- if non-zero add the table, else delete it
1089 @param del_chain - if non-zero delete the whole chain of tables
1090 @param table_index - if add, reuturns index of the created table, else specifies the table to delete
1091 @param nbuckets - number of buckets when adding a table
1092 @param memory_size - memory size when adding a table
1093 @param match_n_vectors - number of match vectors
1094 @param next_table_index - index of next table
1095 @param miss_next_index - index of miss table
1096 @param current_data_flag - option to use current node's packet payload
1097 as the starting point from where packets are classified,
1098 This option is only valid for L2/L3 input ACL for now.
1099 0: by default, classify data from the buffer's start location
1100 1: classify packets from VPP node’s current data pointer
1101 @param current_data_offset - a signed value to shift the start location of
1102 the packet to be classified
1103 For example, if input IP ACL node is used, L2 header’s first byte
1104 can be accessible by configuring current_data_offset to -14
1105 if there is no vlan tag.
1106 This is valid only if current_data_flag is set to 1.
1107 @param mask[] - match mask
1109 define classify_add_del_table
1119 u32 match_n_vectors;
1120 u32 next_table_index;
1121 u32 miss_next_index;
1122 u32 current_data_flag;
1123 i32 current_data_offset;
1127 /** \brief Add/Delete classification table response
1128 @param context - sender context, to match reply w/ request
1129 @param retval - return code for the table add/del requst
1130 @param new_table_index - for add, returned index of the new table
1131 @param skip_n_vectors - for add, returned value of skip_n_vectors in table
1132 @param match_n_vectors -for add, returned value of match_n_vectors in table
1134 define classify_add_del_table_reply
1138 u32 new_table_index;
1140 u32 match_n_vectors;
1143 /** \brief Classify add / del session request
1144 @param client_index - opaque cookie to identify the sender
1145 @param context - sender context, to match reply w/ request
1146 @param is_add - add session if non-zero, else delete
1147 @param table_index - index of the table to add/del the session, required
1148 @param hit_next_index - for add, hit_next_index of new session, required
1149 @param opaque_index - for add, opaque_index of new session
1150 @param advance -for add, advance value for session
1152 0: no action (by default)
1153 metadata is not used.
1154 1: Classified IP packets will be looked up from the
1155 specified ipv4 fib table (configured by metadata as VRF id).
1156 Only valid for L3 input ACL node
1157 2: Classified IP packets will be looked up from the
1158 specified ipv6 fib table (configured by metadata as VRF id).
1159 Only valid for L3 input ACL node
1160 @param metadata - valid only if action != 0
1161 VRF id if action is 1 or 2.
1162 @param match[] - for add, match value for session, required
1164 define classify_add_del_session
1178 /** \brief Classify add / del session response
1179 @param context - sender context, to match reply w/ request
1180 @param retval - return code for the add/del session request
1182 define classify_add_del_session_reply
1188 /** \brief Set/unset the classification table for an interface request
1189 @param client_index - opaque cookie to identify the sender
1190 @param context - sender context, to match reply w/ request
1191 @param is_ipv6 - ipv6 if non-zero, else ipv4
1192 @param sw_if_index - interface to associate with the table
1193 @param table_index - index of the table, if ~0 unset the table
1195 define classify_set_interface_ip_table
1201 u32 table_index; /* ~0 => off */
1204 /** \brief Set/unset interface classification table response
1205 @param context - sender context, to match reply w/ request
1206 @param retval - return code
1208 define classify_set_interface_ip_table_reply
1214 /** \brief Set/unset l2 classification tables for an interface request
1215 @param client_index - opaque cookie to identify the sender
1216 @param context - sender context, to match reply w/ request
1217 @param sw_if_index - interface to set/unset tables for
1218 @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
1219 @param ip6_table_index - ip6 index
1220 @param other_table_index - other index
1222 define classify_set_interface_l2_tables
1228 u32 ip4_table_index;
1229 u32 ip6_table_index;
1230 u32 other_table_index;
1234 /** \brief Set/unset l2 classification tables for an interface response
1235 @param context - sender context, to match reply w/ request
1236 @param retval - return code for the request
1238 define classify_set_interface_l2_tables_reply
1244 /** \brief Get node index using name request
1245 @param client_index - opaque cookie to identify the sender
1246 @param context - sender context, to match reply w/ request
1247 @param node_name[] - name of the node
1249 define get_node_index
1256 /** \brief Get node index using name request
1257 @param context - sender context, to match reply w/ request
1258 @param retval - return code for the request
1259 @param node_index - index of the desired node if found, else ~0
1261 define get_node_index_reply
1268 /** \brief Set the next node for a given node request
1269 @param client_index - opaque cookie to identify the sender
1270 @param context - sender context, to match reply w/ request
1271 @param node_name[] - node to add the next node to
1272 @param next_name[] - node to add as the next node
1274 define add_node_next
1282 /** \brief IP Set the next node for a given node response
1283 @param context - sender context, to match reply w/ request
1284 @param retval - return code for the add next node request
1285 @param next_index - the index of the next node if success, else ~0
1287 define add_node_next_reply
1294 /** \brief DHCP Proxy config 2 add / del request
1295 @param client_index - opaque cookie to identify the sender
1296 @param context - sender context, to match reply w/ request
1297 @param rx_vrf_id - receive vrf id
1298 @param server_vrf_id - server vrf id
1299 @param if_ipv6 - ipv6 if non-zero, else ipv4
1300 @param is_add - add the config if non-zero, else delete
1301 @param insert_circuit_id - option82 suboption 1 fib number
1302 @param dhcp_server[] - server address
1303 @param dhcp_src_address[] - <fix this, need details>
1305 define dhcp_proxy_config_2
1313 u8 insert_circuit_id;
1315 u8 dhcp_src_address[16];
1318 /** \brief DHCP Proxy config 2 add / del response
1319 @param context - sender context, to match reply w/ request
1320 @param retval - return code for request
1322 define dhcp_proxy_config_2_reply
1328 /** \brief l2tpv3 tunnel interface create request
1329 @param client_index - opaque cookie to identify the sender
1330 @param context - sender context, to match reply w/ request
1331 @param client_address - remote client tunnel ip address
1332 @param client_address - local tunnel ip address
1333 @param is_ipv6 - ipv6 if non-zero, else ipv4
1334 @param local_session_id - local tunnel session id
1335 @param remote_session_id - remote tunnel session id
1336 @param local_cookie - local tunnel cookie
1337 @param l2_sublayer_present - l2 sublayer is present in packets if non-zero
1338 @param encap_vrf_id - fib identifier used for outgoing encapsulated packets
1340 define l2tpv3_create_tunnel
1344 u8 client_address[16];
1347 u32 local_session_id;
1348 u32 remote_session_id;
1351 u8 l2_sublayer_present;
1355 /** \brief l2tpv3 tunnel interface create response
1356 @param context - sender context, to match reply w/ request
1357 @param retval - return code for the request
1358 @param sw_if_index - index of the new tunnel interface
1360 define l2tpv3_create_tunnel_reply
1367 define l2tpv3_set_tunnel_cookies
1372 u64 new_local_cookie;
1373 u64 new_remote_cookie;
1376 /** \brief L2TP tunnel set cookies response
1377 @param context - sender context, to match reply w/ request
1378 @param retval - return code for the request
1380 define l2tpv3_set_tunnel_cookies_reply
1386 define sw_if_l2tpv3_tunnel_details
1390 u8 interface_name[64];
1391 u8 client_address[16];
1393 u32 local_session_id;
1394 u32 remote_session_id;
1395 u64 local_cookie[2];
1397 u8 l2_sublayer_present;
1400 define sw_if_l2tpv3_tunnel_dump
1406 /** \brief L2 fib clear table request, clear all mac entries in the l2 fib
1407 @param client_index - opaque cookie to identify the sender
1408 @param context - sender context, to match reply w/ request
1410 define l2_fib_clear_table
1416 /** \brief L2 fib clear table response
1417 @param context - sender context, to match reply w/ request
1418 @param retval - return code for the request
1420 define l2_fib_clear_table_reply
1426 /** \brief L2 interface ethernet flow point filtering enable/disable request
1427 @param client_index - opaque cookie to identify the sender
1428 @param context - sender context, to match reply w/ request
1429 @param sw_if_index - interface to enable/disable filtering on
1430 @param enable_disable - if non-zero enable filtering, else disable
1432 define l2_interface_efp_filter
1440 /** \brief L2 interface ethernet flow point filtering response
1441 @param context - sender context, to match reply w/ request
1442 @param retval - return code for the request
1444 define l2_interface_efp_filter_reply
1450 define l2tpv3_interface_enable_disable
1458 define l2tpv3_interface_enable_disable_reply
1464 define l2tpv3_set_lookup_key
1468 /* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */
1472 define l2tpv3_set_lookup_key_reply
1478 define gre_add_del_tunnel
1490 define gre_add_del_tunnel_reply
1497 define gre_tunnel_dump
1504 define gre_tunnel_details
1515 /** \brief L2 interface vlan tag rewrite configure request
1516 @param client_index - opaque cookie to identify the sender
1517 @param context - sender context, to match reply w/ request
1518 @param sw_if_index - interface the operation is applied to
1519 @param vtr_op - Choose from l2_vtr_op_t enum values
1520 @param push_dot1q - first pushed flag dot1q id set, else dot1ad
1521 @param tag1 - Needed for any push or translate vtr op
1522 @param tag2 - Needed for any push 2 or translate x-2 vtr ops
1524 define l2_interface_vlan_tag_rewrite
1530 u32 push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
1531 u32 tag1; // first pushed tag
1532 u32 tag2; // second pushed tag
1535 /** \brief L2 interface vlan tag rewrite response
1536 @param context - sender context, to match reply w/ request
1537 @param retval - return code for the request
1539 define l2_interface_vlan_tag_rewrite_reply
1545 /** \brief vhost-user interface create request
1546 @param client_index - opaque cookie to identify the sender
1547 @param is_server - our side is socket server
1548 @param sock_filename - unix socket filename, used to speak with frontend
1549 @param use_custom_mac - enable or disable the use of the provided hardware address
1550 @param mac_address - hardware address to use if 'use_custom_mac' is set
1552 define create_vhost_user_if
1557 u8 sock_filename[256];
1559 u32 custom_dev_instance;
1565 /** \brief vhost-user interface create response
1566 @param context - sender context, to match reply w/ request
1567 @param retval - return code for the request
1568 @param sw_if_index - interface the operation is applied to
1570 define create_vhost_user_if_reply
1577 /** \brief vhost-user interface modify request
1578 @param client_index - opaque cookie to identify the sender
1579 @param is_server - our side is socket server
1580 @param sock_filename - unix socket filename, used to speak with frontend
1582 define modify_vhost_user_if
1588 u8 sock_filename[256];
1590 u32 custom_dev_instance;
1593 /** \brief vhost-user interface modify response
1594 @param context - sender context, to match reply w/ request
1595 @param retval - return code for the request
1597 define modify_vhost_user_if_reply
1603 /** \brief vhost-user interface delete request
1604 @param client_index - opaque cookie to identify the sender
1606 define delete_vhost_user_if
1613 /** \brief vhost-user interface delete response
1614 @param context - sender context, to match reply w/ request
1615 @param retval - return code for the request
1617 define delete_vhost_user_if_reply
1630 /* These fields map directly onto the subif template */
1634 u8 dot1ad; // 0 = dot1q, 1=dot1ad
1637 u8 outer_vlan_id_any;
1638 u8 inner_vlan_id_any;
1643 define create_subif_reply
1650 /** \brief show version
1651 @param client_index - opaque cookie to identify the sender
1652 @param context - sender context, to match reply w/ request
1660 /** \brief show version response
1661 @param context - sender context, to match reply w/ request
1662 @param retval - return code for the request
1663 @param program - name of the program (vpe)
1664 @param version - version of the program
1665 @param build_directory - root of the workspace where the program was built
1667 define show_version_reply
1674 u8 build_directory[256];
1677 /** \brief Vhost-user interface details structure (fix this)
1678 @param sw_if_index - index of the interface
1679 @param interface_name - name of interface
1680 @param virtio_net_hdr_sz - net header size
1681 @param features - interface features
1682 @param is_server - vhost-user server socket
1683 @param sock_filename - socket filename
1684 @param num_regions - number of used memory regions
1686 define sw_interface_vhost_user_details
1690 u8 interface_name[64];
1691 u32 virtio_net_hdr_sz;
1694 u8 sock_filename[256];
1700 define sw_interface_vhost_user_dump
1706 /** \brief l2 fib table entry structure
1707 @param bd_id - the l2 fib / bridge domain table id
1708 @param mac - the entry's mac address
1709 @param sw_if_index - index of the interface
1710 @param static_mac - the entry is statically configured.
1711 @param filter_mac - the entry is a mac filter entry.
1712 @param bvi_mac - the mac address is a bridge virtual interface
1714 define l2_fib_table_entry
1725 /** \brief Dump l2 fib (aka bridge domain) table
1726 @param client_index - opaque cookie to identify the sender
1727 @param bd_id - the l2 fib / bridge domain table identifier
1729 define l2_fib_table_dump
1736 define vxlan_gpe_add_del_tunnel
1750 define vxlan_gpe_add_del_tunnel_reply
1757 define vxlan_gpe_tunnel_dump
1764 define vxlan_gpe_tunnel_details
1777 /** \brief add or delete locator_set
1778 @param client_index - opaque cookie to identify the sender
1779 @param context - sender context, to match reply w/ request
1780 @param is_add - add address if non-zero, else delete
1781 @param locator_set_name - locator name
1782 @param locator_num - number of locators
1783 @param locators - LISP locator records
1784 Structure of one locator record is as follows:
1792 define lisp_add_del_locator_set
1797 u8 locator_set_name[64];
1802 /** \brief Reply for locator_set add/del
1803 @param context - returned sender context, to match reply w/ request
1804 @param retval - return code
1805 @param ls_index - locator set index
1807 define lisp_add_del_locator_set_reply
1814 /** \brief add or delete locator for locator_set
1815 @param client_index - opaque cookie to identify the sender
1816 @param context - sender context, to match reply w/ request
1817 @param is_add - add address if non-zero, else delete
1818 @param locator_set_name - name of locator_set to add/del locator
1819 @param sw_if_index - index of the interface
1820 @param priority - priority of the lisp locator
1821 @param weight - weight of the lisp locator
1823 define lisp_add_del_locator
1828 u8 locator_set_name[64];
1834 /** \brief Reply for locator add/del
1835 @param context - returned sender context, to match reply w/ request
1836 @param retval - return code
1838 define lisp_add_del_locator_reply
1844 /** \brief add or delete lisp eid-table
1845 @param client_index - opaque cookie to identify the sender
1846 @param context - sender context, to match reply w/ request
1847 @param is_add - add address if non-zero, else delete
1852 @param eid - EID can be ip4, ip6 or mac
1853 @param prefix_len - prefix len
1854 @param locator_set_name - name of locator_set to add/del eid-table
1855 @param vni - virtual network instance
1860 @param key - secret key
1862 define lisp_add_del_local_eid
1870 u8 locator_set_name[64];
1876 /** \brief Reply for local_eid add/del
1877 @param context - returned sender context, to match reply w/ request
1878 @param retval - return code
1880 define lisp_add_del_local_eid_reply
1886 /** \brief add or delete lisp gpe tunnel
1887 @param client_index - opaque cookie to identify the sender
1888 @param context - sender context, to match reply w/ request
1889 @param is_add - add address if non-zero, else delete
1894 @param rmt_eid - remote eid
1895 @param lcl_eid - local eid
1896 @param rmt_len - remote prefix len
1897 @param lcl_len - local prefix len
1898 @param vni - virtual network identifier
1899 @param dp_table - vrf/bridge domain id
1900 @param loc_num - number of locators
1901 @param lcl_locs - array of local locators
1902 @param rmt_locs - array of remote locators
1903 @param action - negative action when 0 locators configured
1905 define lisp_gpe_add_del_fwd_entry
1918 u8 lcl_locs[loc_num];
1919 u8 rmt_locs[loc_num];
1923 /** \brief Reply for gpe_fwd_entry add/del
1924 @param context - returned sender context, to match reply w/ request
1925 @param retval - return code
1927 define lisp_gpe_add_del_fwd_entry_reply
1933 /** \brief Add/delete map server
1934 @param client_index - opaque cookie to identify the sender
1935 @param context - sender context, to match reply w/ request
1936 @param is_add - add address if non-zero; delete otherwise
1937 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
1938 @param ip_address - map server IP address
1940 define lisp_add_del_map_server
1949 /** \brief Reply for lisp_add_del_map_server
1950 @param context - returned sender context, to match reply w/ request
1951 @param retval - return code
1953 define lisp_add_del_map_server_reply
1959 /** \brief add or delete map-resolver
1960 @param client_index - opaque cookie to identify the sender
1961 @param context - sender context, to match reply w/ request
1962 @param is_add - add address if non-zero, else delete
1963 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
1964 @param ip_address - array of address bytes
1966 define lisp_add_del_map_resolver
1975 /** \brief Reply for map_resolver add/del
1976 @param context - returned sender context, to match reply w/ request
1977 @param retval - return code
1979 define lisp_add_del_map_resolver_reply
1985 /** \brief enable or disable lisp-gpe protocol
1986 @param client_index - opaque cookie to identify the sender
1987 @param context - sender context, to match reply w/ request
1988 @param is_en - enable protocol if non-zero, else disable
1990 define lisp_gpe_enable_disable
1997 /** \brief Reply for gpe enable/disable
1998 @param context - returned sender context, to match reply w/ request
1999 @param retval - return code
2001 define lisp_gpe_enable_disable_reply
2007 /** \brief enable or disable LISP feature
2008 @param client_index - opaque cookie to identify the sender
2009 @param context - sender context, to match reply w/ request
2010 @param is_en - enable protocol if non-zero, else disable
2012 define lisp_enable_disable
2019 /** \brief Reply for gpe enable/disable
2020 @param context - returned sender context, to match reply w/ request
2021 @param retval - return code
2023 define lisp_enable_disable_reply
2029 /** \brief add or delete gpe_iface
2030 @param client_index - opaque cookie to identify the sender
2031 @param context - sender context, to match reply w/ request
2032 @param is_add - add address if non-zero, else delete
2034 define lisp_gpe_add_del_iface
2044 /** \brief Reply for gpe_iface add/del
2045 @param context - returned sender context, to match reply w/ request
2046 @param retval - return code
2048 define lisp_gpe_add_del_iface_reply
2054 /** \brief configure or disable LISP PITR node
2055 @param client_index - opaque cookie to identify the sender
2056 @param context - sender context, to match reply w/ request
2057 @param ls_name - locator set name
2058 @param is_add - add locator set if non-zero, else disable pitr
2060 define lisp_pitr_set_locator_set
2068 /** \brief Reply for lisp_pitr_set_locator_set
2069 @param context - returned sender context, to match reply w/ request
2070 @param retval - return code
2072 define lisp_pitr_set_locator_set_reply
2078 /** \brief Get state of LISP RLOC probing
2079 @param client_index - opaque cookie to identify the sender
2080 @param context - sender context, to match reply w/ request
2082 define show_lisp_rloc_probe_state
2088 /** \brief Reply for show_lisp_rloc_probe_state
2089 @param context - returned sender context, to match reply w/ request
2090 @param retval - return code
2091 @param is_enabled - state of RLOC probing
2093 define show_lisp_rloc_probe_state_reply
2100 /** \brief enable/disable LISP RLOC probing
2101 @param client_index - opaque cookie to identify the sender
2102 @param context - sender context, to match reply w/ request
2103 @param is_enable - enable if non-zero; disable otherwise
2105 define lisp_rloc_probe_enable_disable
2112 /** \brief Reply for lisp_rloc_probe_enable_disable
2113 @param context - returned sender context, to match reply w/ request
2114 @param retval - return code
2116 define lisp_rloc_probe_enable_disable_reply
2122 /** \brief enable/disable LISP map-register
2123 @param client_index - opaque cookie to identify the sender
2124 @param context - sender context, to match reply w/ request
2125 @param is_enable - enable if non-zero; disable otherwise
2127 define lisp_map_register_enable_disable
2134 /** \brief Reply for lisp_map_register_enable_disable
2135 @param context - returned sender context, to match reply w/ request
2136 @param retval - return code
2138 define lisp_map_register_enable_disable_reply
2144 /** \brief Get state of LISP map-register
2145 @param client_index - opaque cookie to identify the sender
2146 @param context - sender context, to match reply w/ request
2148 define show_lisp_map_register_state
2154 /** \brief Reply for show_lisp_map_register_state
2155 @param context - returned sender context, to match reply w/ request
2156 @param retval - return code
2158 define show_lisp_map_register_state_reply
2165 /** \brief set LISP map-request mode. Based on configuration VPP will send
2166 src/dest or just normal destination map requests.
2167 @param client_index - opaque cookie to identify the sender
2168 @param context - sender context, to match reply w/ request
2169 @param mode - new map-request mode. Supported values are:
2170 0 - destination only
2171 1 - source/destaination
2173 define lisp_map_request_mode
2180 /** \brief Reply for lisp_map_request_mode
2181 @param context - returned sender context, to match reply w/ request
2182 @param retval - return code
2184 define lisp_map_request_mode_reply
2190 /** \brief Request for LISP map-request mode
2191 @param client_index - opaque cookie to identify the sender
2192 @param context - sender context, to match reply w/ request
2194 define show_lisp_map_request_mode
2200 /** \brief Reply for show_lisp_map_request_mode
2201 @param context - returned sender context, to match reply w/ request
2202 @param retval - return code
2203 @param mode - map-request mode
2205 define show_lisp_map_request_mode_reply
2212 /** \brief add or delete remote static mapping
2213 @param client_index - opaque cookie to identify the sender
2214 @param context - sender context, to match reply w/ request
2215 @param is_add - add address if non-zero, else delete
2216 @param is_src_dst - flag indicating src/dst based routing policy
2217 @param del_all - if set, delete all remote mappings
2218 @param vni - virtual network instance
2219 @param action - negative map-reply action
2224 @param deid - dst EID
2225 @param seid - src EID, valid only if is_src_dst is enabled
2226 @param rloc_num - number of remote locators
2227 @param rlocs - remote locator records
2228 Structure of remote locator:
2237 define lisp_add_del_remote_mapping
2255 /** \brief Reply for lisp_add_del_remote_mapping
2256 @param context - returned sender context, to match reply w/ request
2257 @param retval - return code
2259 define lisp_add_del_remote_mapping_reply
2265 /** \brief add or delete LISP adjacency adjacency
2266 @param client_index - opaque cookie to identify the sender
2267 @param context - sender context, to match reply w/ request
2268 @param is_add - add address if non-zero, else delete
2269 @param vni - virtual network instance
2274 @param reid - remote EID
2275 @param leid - local EID
2277 define lisp_add_del_adjacency
2290 /** \brief Reply for lisp_add_del_adjacency
2291 @param context - returned sender context, to match reply w/ request
2292 @param retval - return code
2294 define lisp_add_del_adjacency_reply
2300 /** \brief add or delete map request itr rlocs
2301 @param client_index - opaque cookie to identify the sender
2302 @param context - sender context, to match reply w/ request
2303 @param is_add - add address if non-zero, else delete
2304 @param locator_set_name - locator set name
2306 define lisp_add_del_map_request_itr_rlocs
2311 u8 locator_set_name[64];
2314 /** \brief Reply for lisp_add_del_map_request_itr_rlocs
2315 @param context - returned sender context, to match reply w/ request
2316 @param retval - return code
2319 define lisp_add_del_map_request_itr_rlocs_reply
2325 /** \brief map/unmap vni/bd_index to vrf
2326 @param client_index - opaque cookie to identify the sender
2327 @param context - sender context, to match reply w/ request
2328 @param is_add - add or delete mapping
2329 @param dp_table - virtual network id/bridge domain index
2332 define lisp_eid_table_add_del_map
2342 /** \brief Reply for lisp_eid_table_add_del_map
2343 @param context - returned sender context, to match reply w/ request
2344 @param retval - return code
2346 define lisp_eid_table_add_del_map_reply
2352 /** \brief Request for map lisp locator status
2353 @param client_index - opaque cookie to identify the sender
2354 @param context - sender context, to match reply w/ request
2355 @param locator_set_index - index of locator_set
2356 @param ls_name - locator set name
2357 @param is_index_set - flag indicating whether ls_name or ls_index is set
2359 define lisp_locator_dump
2368 /** \brief LISP locator_set status
2369 @param local - if is set, then locator is local
2370 @param locator_set_name - name of the locator_set
2371 @param sw_if_index - sw_if_index of the locator
2372 @param priority - locator priority
2373 @param weight - locator weight
2375 define lisp_locator_details
2386 /** \brief LISP locator_set status
2387 @param context - sender context, to match reply w/ request
2388 @param ls_index - locator set index
2389 @param ls_name - name of the locator set
2391 define lisp_locator_set_details
2398 /** \brief Request for locator_set summary status
2399 @param client_index - opaque cookie to identify the sender
2400 @param context - sender context, to match reply w/ request
2401 @param filter - filter type
2404 1: local locator sets
2405 2: remote locator sets
2407 define lisp_locator_set_dump
2414 /** \brief Dump lisp eid-table
2415 @param client_index - opaque cookie to identify the sender
2416 @param context - sender context, to match reply w/ request
2417 @param locator_set_index - index of locator_set, if ~0 then the mapping
2419 @param action - negative map request action
2420 @param is_local - local if non-zero, else remote
2425 @param is_src_dst - EID is type of source/destination
2426 @param eid - EID can be ip4, ip6 or mac
2427 @param eid_prefix_len - prefix length
2428 @param seid - source EID can be ip4, ip6 or mac
2429 @param seid_prefix_len - source prefix length
2430 @param vni - virtual network instance
2431 @param ttl - time to live
2432 @param authoritative - authoritative
2437 @param key - secret key
2440 define lisp_eid_table_details
2443 u32 locator_set_index;
2459 /** \brief Request for eid table summary status
2460 @param client_index - opaque cookie to identify the sender
2461 @param context - sender context, to match reply w/ request
2462 @param eid_set - if non-zero request info about specific mapping
2463 @param vni - virtual network instance; valid only if eid_set != 0
2464 @param prefix_length - prefix length if EID is IP address;
2465 valid only if eid_set != 0
2466 @param eid_type - EID type; valid only if eid_set != 0
2470 2: EID is ethernet address
2471 @param eid - endpoint identifier
2472 @param filter - filter type;
2478 define lisp_eid_table_dump
2490 /** \brief LISP adjacency
2495 @param reid - remote EID
2496 @param leid - local EID
2497 @param reid_prefix_len - remote EID IP prefix length
2498 @param leid_prefix_len - local EID IP prefix length
2500 typeonly manual_print manual_endian define lisp_adjacency
2509 /** \brief LISP adjacency reply
2510 @param count - number of adjacencies
2511 @param adjacencies - array of adjacencies
2513 manual_endian manual_print define lisp_adjacencies_get_reply
2518 vl_api_lisp_adjacency_t adjacencies[count];
2521 /** \brief Request for LISP adjacencies
2522 @param client_index - opaque cookie to identify the sender
2523 @param context - sender context, to match reply w/ request
2524 @param vni - filter adjacencies by VNI
2526 define lisp_adjacencies_get
2533 /** \brief Shows relationship between vni and vrf/bd
2534 @param dp_table - VRF index or bridge domain index
2535 @param vni - vitual network instance
2537 define lisp_eid_table_map_details
2544 /** \brief Request for lisp_eid_table_map_details
2545 @param client_index - opaque cookie to identify the sender
2546 @param context - sender context, to match reply w/ request
2547 @param is_l2 - if set dump vni/bd mappings else vni/vrf
2549 define lisp_eid_table_map_dump
2556 /** \brief Dumps all VNIs used in mappings
2557 @param client_index - opaque cookie to identify the sender
2558 @param context - sender context, to match reply w/ request
2560 define lisp_eid_table_vni_dump
2566 /** \brief reply to lisp_eid_table_vni_dump
2567 @param client_index - opaque cookie to identify the sender
2568 @param context - sender context, to match reply w/ request
2569 @param vni - virtual network instance
2571 define lisp_eid_table_vni_details
2578 define lisp_gpe_tunnel_details
2584 u8 destination_ip[16];
2596 /** \brief Request for gpe tunnel summary status
2597 @param client_index - opaque cookie to identify the sender
2598 @param context - sender context, to match reply w/ request
2600 define lisp_gpe_tunnel_dump
2606 /** \brief LISP map resolver status
2607 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2608 @param ip_address - array of address bytes
2610 define lisp_map_resolver_details
2617 /** \brief Request for map resolver summary status
2618 @param client_index - opaque cookie to identify the sender
2619 @param context - sender context, to match reply w/ request
2621 define lisp_map_resolver_dump
2627 /** \brief LISP map server details
2628 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2629 @param ip_address - array of address bytes
2631 define lisp_map_server_details
2638 /** \brief Request for map server summary status
2639 @param client_index - opaque cookie to identify the sender
2640 @param context - sender context, to match reply w/ request
2642 define lisp_map_server_dump
2648 /** \brief Request for lisp-gpe protocol status
2649 @param client_index - opaque cookie to identify the sender
2650 @param context - sender context, to match reply w/ request
2652 define show_lisp_status
2658 /** \brief Status of lisp, enable or disable
2659 @param context - sender context, to match reply w/ request
2660 @param feature_status - lisp enable if non-zero, else disable
2661 @param gpe_status - lisp enable if non-zero, else disable
2663 define show_lisp_status_reply
2671 /** \brief Get LISP map request itr rlocs status
2672 @param context - sender context, to match reply w/ request
2673 @param locator_set_name - name of the locator_set
2675 define lisp_get_map_request_itr_rlocs
2681 /** \brief Request for map request itr rlocs summary status
2683 define lisp_get_map_request_itr_rlocs_reply
2687 u8 locator_set_name[64];
2690 /** \brief Request for lisp pitr status
2691 @param client_index - opaque cookie to identify the sender
2692 @param context - sender context, to match reply w/ request
2694 define show_lisp_pitr
2700 /** \brief Status of lisp pitr, enable or disable
2701 @param context - sender context, to match reply w/ request
2702 @param status - lisp pitr enable if non-zero, else disable
2703 @param locator_set_name - name of the locator_set
2705 define show_lisp_pitr_reply
2710 u8 locator_set_name[64];
2713 /* Gross kludge, DGMS */
2714 define interface_name_renumber
2719 u32 new_show_dev_instance;
2722 define interface_name_renumber_reply
2728 /** \brief Register for ip4 arp resolution events
2729 @param client_index - opaque cookie to identify the sender
2730 @param context - sender context, to match reply w/ request
2731 @param enable_disable - 1 => register for events, 0 => cancel registration
2732 @param pid - sender's pid
2733 @param address - the exact ip4 address of interest
2735 define want_ip4_arp_events
2744 /** \brief Reply for interface events registration
2745 @param context - returned sender context, to match reply w/ request
2746 @param retval - return code
2748 define want_ip4_arp_events_reply
2754 /** \brief Tell client about an ip4 arp resolution event
2755 @param client_index - opaque cookie to identify the sender
2756 @param context - sender context, to match reply w/ request
2757 @param address - the exact ip4 address of interest
2758 @param pid - client pid registered to receive notification
2759 @param sw_if_index - interface which received ARP packet
2760 @param new_mac - the new mac address
2761 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
2763 define ip4_arp_event
2774 /** \brief Register for ip6 nd resolution events
2775 @param client_index - opaque cookie to identify the sender
2776 @param context - sender context, to match reply w/ request
2777 @param enable_disable - 1 => register for events, 0 => cancel registration
2778 @param pid - sender's pid
2779 @param address - the exact ip6 address of interest
2781 define want_ip6_nd_events
2790 /** \brief Reply for ip6 nd resolution events registration
2791 @param context - returned sender context, to match reply w/ request
2792 @param retval - return code
2794 define want_ip6_nd_events_reply
2800 /** \brief Tell client about an ip6 nd resolution or mac/ip event
2801 @param client_index - opaque cookie to identify the sender
2802 @param context - sender context, to match reply w/ request
2803 @param pid - client pid registered to receive notification
2804 @param sw_if_index - interface which received ARP packet
2805 @param address - the exact ip6 address of interest
2806 @param new_mac - the new mac address
2807 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
2820 /** \brief L2 bridge domain add or delete request
2821 @param client_index - opaque cookie to identify the sender
2822 @param context - sender context, to match reply w/ request
2823 @param bd_id - the bridge domain to create
2824 @param flood - enable/disable bcast/mcast flooding in the bd
2825 @param uu_flood - enable/disable uknown unicast flood in the bd
2826 @param forward - enable/disable forwarding on all interfaces in the bd
2827 @param learn - enable/disable learning on all interfaces in the bd
2828 @param arp_term - enable/disable arp termination in the bd
2829 @param mac_age - mac aging time in min, 0 for disabled
2830 @param is_add - add or delete flag
2832 define bridge_domain_add_del
2846 /** \brief L2 bridge domain add or delete response
2847 @param context - sender context, to match reply w/ request
2848 @param retval - return code for the set bridge flags request
2850 define bridge_domain_add_del_reply
2856 /** \brief L2 bridge domain request operational state details
2857 @param client_index - opaque cookie to identify the sender
2858 @param context - sender context, to match reply w/ request
2859 @param bd_id - the bridge domain id desired or ~0 to request all bds
2861 define bridge_domain_dump
2868 /** \brief L2 bridge domain operational state response
2869 @param bd_id - the bridge domain id
2870 @param flood - bcast/mcast flooding state on all interfaces in the bd
2871 @param uu_flood - uknown unicast flooding state on all interfaces in the bd
2872 @param forward - forwarding state on all interfaces in the bd
2873 @param learn - learning state on all interfaces in the bd
2874 @param arp_term - arp termination state on all interfaces in the bd
2875 @param mac_age - mac aging time in min, 0 for disabled
2876 @param n_sw_ifs - number of sw_if_index's in the domain
2878 define bridge_domain_details
2888 u32 bvi_sw_if_index;
2892 /** \brief L2 bridge domain sw interface operational state response
2893 @param bd_id - the bridge domain id
2894 @param sw_if_index - sw_if_index in the domain
2895 @param shg - split horizon group for the interface
2897 define bridge_domain_sw_if_details
2905 /** \brief DHCP Client config add / del request
2906 @param client_index - opaque cookie to identify the sender
2907 @param context - sender context, to match reply w/ request
2908 @param sw_if_index - index of the interface for DHCP client
2909 @param hostname - hostname
2910 @param is_add - add the config if non-zero, else delete
2911 @param want_dhcp_event - DHCP event sent to the sender
2912 via dhcp_compl_event API message if non-zero
2913 @param pid - sender's pid
2915 define dhcp_client_config
2926 /** \brief DHCP Client config response
2927 @param context - sender context, to match reply w/ request
2928 @param retval - return code for the request
2930 define dhcp_client_config_reply
2936 /** \brief Set/unset input ACL interface
2937 @param client_index - opaque cookie to identify the sender
2938 @param context - sender context, to match reply w/ request
2939 @param sw_if_index - interface to set/unset input ACL
2940 @param ip4_table_index - ip4 classify table index (~0 for skip)
2941 @param ip6_table_index - ip6 classify table index (~0 for skip)
2942 @param l2_table_index - l2 classify table index (~0 for skip)
2943 @param is_add - Set input ACL if non-zero, else unset
2944 Note: User is recommeneded to use just one valid table_index per call.
2945 (ip4_table_index, ip6_table_index, or l2_table_index)
2947 define input_acl_set_interface
2952 u32 ip4_table_index;
2953 u32 ip6_table_index;
2958 /** \brief Set/unset input ACL interface response
2959 @param context - sender context, to match reply w/ request
2960 @param retval - return code for the request
2962 define input_acl_set_interface_reply
2968 /** \brief IPsec: Add/delete Security Policy Database
2969 @param client_index - opaque cookie to identify the sender
2970 @param context - sender context, to match reply w/ request
2971 @param is_add - add SPD if non-zero, else delete
2972 @param spd_id - SPD instance id (control plane allocated)
2975 define ipsec_spd_add_del
2983 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
2984 @param context - returned sender context, to match reply w/ request
2985 @param retval - return code
2988 define ipsec_spd_add_del_reply
2994 /** \brief IPsec: Add/delete SPD from interface
2996 @param client_index - opaque cookie to identify the sender
2997 @param context - sender context, to match reply w/ request
2998 @param is_add - add security mode if non-zero, else delete
2999 @param sw_if_index - index of the interface
3000 @param spd_id - SPD instance id to use for lookups
3004 define ipsec_interface_add_del_spd
3014 /** \brief Reply for IPsec: Add/delete SPD from interface
3015 @param context - returned sender context, to match reply w/ request
3016 @param retval - return code
3019 define ipsec_interface_add_del_spd_reply
3025 /** \brief IPsec: Add/delete Security Policy Database entry
3027 See RFC 4301, 4.4.1.1 on how to match packet to selectors
3029 @param client_index - opaque cookie to identify the sender
3030 @param context - sender context, to match reply w/ request
3031 @param is_add - add SPD if non-zero, else delete
3032 @param spd_id - SPD instance id (control plane allocated)
3033 @param priority - priority of SPD entry (non-unique value). Used to order SPD matching - higher priorities match before lower
3034 @param is_outbound - entry applies to outbound traffic if non-zero, otherwise applies to inbound traffic
3035 @param is_ipv6 - remote/local address are IPv6 if non-zero, else IPv4
3036 @param remote_address_start - start of remote address range to match
3037 @param remote_address_stop - end of remote address range to match
3038 @param local_address_start - start of local address range to match
3039 @param local_address_stop - end of local address range to match
3040 @param protocol - protocol type to match [0 means any]
3041 @param remote_port_start - start of remote port range to match ...
3042 @param remote_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3043 @param local_port_start - start of local port range to match ...
3044 @param local_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3045 @param policy - 0 = bypass (no IPsec processing), 1 = discard (discard packet with ICMP processing), 2 = resolve (send request to control plane for SA resolving, and discard without ICMP processing), 3 = protect (apply IPsec policy using following parameters)
3046 @param sa_id - SAD instance id (control plane allocated)
3050 define ipsec_spd_add_del_entry
3063 u8 remote_address_start[16];
3064 u8 remote_address_stop[16];
3065 u8 local_address_start[16];
3066 u8 local_address_stop[16];
3070 u16 remote_port_start;
3071 u16 remote_port_stop;
3072 u16 local_port_start;
3073 u16 local_port_stop;
3080 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
3081 @param context - returned sender context, to match reply w/ request
3082 @param retval - return code
3085 define ipsec_spd_add_del_entry_reply
3091 /** \brief IPsec: Add/delete Security Association Database entry
3092 @param client_index - opaque cookie to identify the sender
3093 @param context - sender context, to match reply w/ request
3094 @param is_add - add SAD entry if non-zero, else delete
3096 @param sad_id - sad id
3098 @param spi - security parameter index
3100 @param protocol - 0 = AH, 1 = ESP
3102 @param crypto_algorithm - 0 = Null, 1 = AES-CBC-128, 2 = AES-CBC-192, 3 = AES-CBC-256, 4 = 3DES-CBC
3103 @param crypto_key_length - length of crypto_key in bytes
3104 @param crypto_key - crypto keying material
3106 @param integrity_algorithm - 0 = None, 1 = MD5-96, 2 = SHA1-96, 3 = SHA-256, 4 = SHA-384, 5=SHA-512
3107 @param integrity_key_length - length of integrity_key in bytes
3108 @param integrity_key - integrity keying material
3110 @param use_extended_sequence_number - use ESN when non-zero
3112 @param is_tunnel - IPsec tunnel mode if non-zero, else transport mode
3113 @param is_tunnel_ipv6 - IPsec tunnel mode is IPv6 if non-zero, else IPv4 tunnel only valid if is_tunnel is non-zero
3114 @param tunnel_src_address - IPsec tunnel source address IPv6 if is_tunnel_ipv6 is non-zero, else IPv4. Only valid if is_tunnel is non-zero
3115 @param tunnel_dst_address - IPsec tunnel destination address IPv6 if is_tunnel_ipv6 is non-zero, else IPv4. Only valid if is_tunnel is non-zero
3119 IPsec tunnel address copy mode (to support GDOI)
3122 define ipsec_sad_add_del_entry
3134 u8 crypto_algorithm;
3135 u8 crypto_key_length;
3138 u8 integrity_algorithm;
3139 u8 integrity_key_length;
3140 u8 integrity_key[128];
3142 u8 use_extended_sequence_number;
3146 u8 tunnel_src_address[16];
3147 u8 tunnel_dst_address[16];
3150 /** \brief Reply for IPsec: Add/delete Security Association Database entry
3151 @param context - returned sender context, to match reply w/ request
3152 @param retval - return code
3155 define ipsec_sad_add_del_entry_reply
3161 /** \brief IPsec: Update Security Association keys
3162 @param client_index - opaque cookie to identify the sender
3163 @param context - sender context, to match reply w/ request
3165 @param sa_id - sa id
3167 @param crypto_key_length - length of crypto_key in bytes
3168 @param crypto_key - crypto keying material
3170 @param integrity_key_length - length of integrity_key in bytes
3171 @param integrity_key - integrity keying material
3174 define ipsec_sa_set_key
3181 u8 crypto_key_length;
3184 u8 integrity_key_length;
3185 u8 integrity_key[128];
3188 /** \brief Reply for IPsec: Update Security Association keys
3189 @param context - returned sender context, to match reply w/ request
3190 @param retval - return code
3193 define ipsec_sa_set_key_reply
3199 /** \brief IKEv2: Add/delete profile
3200 @param client_index - opaque cookie to identify the sender
3201 @param context - sender context, to match reply w/ request
3203 @param name - IKEv2 profile name
3204 @param is_add - Add IKEv2 profile if non-zero, else delete
3206 define ikev2_profile_add_del
3215 /** \brief Reply for IKEv2: Add/delete profile
3216 @param context - returned sender context, to match reply w/ request
3217 @param retval - return code
3219 define ikev2_profile_add_del_reply
3225 /** \brief IKEv2: Set IKEv2 profile authentication method
3226 @param client_index - opaque cookie to identify the sender
3227 @param context - sender context, to match reply w/ request
3229 @param name - IKEv2 profile name
3230 @param auth_method - IKEv2 authentication method (shared-key-mic/rsa-sig)
3231 @param is_hex - Authentication data in hex format if non-zero, else string
3232 @param data_len - Authentication data length
3233 @param data - Authentication data (for rsa-sig cert file path)
3235 define ikev2_profile_set_auth
3247 /** \brief Reply for IKEv2: Set IKEv2 profile authentication method
3248 @param context - returned sender context, to match reply w/ request
3249 @param retval - return code
3251 define ikev2_profile_set_auth_reply
3257 /** \brief IKEv2: Set IKEv2 profile local/remote identification
3258 @param client_index - opaque cookie to identify the sender
3259 @param context - sender context, to match reply w/ request
3261 @param name - IKEv2 profile name
3262 @param is_local - Identification is local if non-zero, else remote
3263 @param id_type - Identification type
3264 @param data_len - Identification data length
3265 @param data - Identification data
3267 define ikev2_profile_set_id
3279 /** \brief Reply for IKEv2:
3280 @param context - returned sender context, to match reply w/ request
3281 @param retval - return code
3283 define ikev2_profile_set_id_reply
3289 /** \brief IKEv2: Set IKEv2 profile traffic selector parameters
3290 @param client_index - opaque cookie to identify the sender
3291 @param context - sender context, to match reply w/ request
3293 @param name - IKEv2 profile name
3294 @param is_local - Traffic selector is local if non-zero, else remote
3295 @param proto - Traffic selector IP protocol (if zero not relevant)
3296 @param start_port - The smallest port number allowed by traffic selector
3297 @param end_port - The largest port number allowed by traffic selector
3298 @param start_addr - The smallest address included in traffic selector
3299 @param end_addr - The largest address included in traffic selector
3301 define ikev2_profile_set_ts
3315 /** \brief Reply for IKEv2: Set IKEv2 profile traffic selector parameters
3316 @param context - returned sender context, to match reply w/ request
3317 @param retval - return code
3319 define ikev2_profile_set_ts_reply
3325 /** \brief IKEv2: Set IKEv2 local RSA private key
3326 @param client_index - opaque cookie to identify the sender
3327 @param context - sender context, to match reply w/ request
3329 @param key_file - Key file absolute path
3331 define ikev2_set_local_key
3339 /** \brief Reply for IKEv2: Set IKEv2 local key
3340 @param context - returned sender context, to match reply w/ request
3341 @param retval - return code
3343 define ikev2_set_local_key_reply
3349 /** \brief Tell client about a DHCP completion event
3350 @param client_index - opaque cookie to identify the sender
3351 @param pid - client pid registered to receive notification
3352 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
3353 @param host_address - Host IP address
3354 @param router_address - Router IP address
3355 @param host_mac - Host MAC address
3357 define dhcp_compl_event
3363 u8 host_address[16];
3364 u8 router_address[16];
3368 /** \brief cop: enable/disable junk filtration features on an interface
3369 @param client_index - opaque cookie to identify the sender
3370 @param context - sender context, to match reply w/ request
3371 @param sw_if_inded - desired interface
3372 @param enable_disable - 1 => enable, 0 => disable
3375 define cop_interface_enable_disable
3383 /** \brief cop: interface enable/disable junk filtration reply
3384 @param context - returned sender context, to match reply w/ request
3385 @param retval - return code
3388 define cop_interface_enable_disable_reply
3394 /** \brief cop: enable/disable whitelist filtration features on an interface
3395 Note: the supplied fib_id must match in order to remove the feature!
3397 @param client_index - opaque cookie to identify the sender
3398 @param context - sender context, to match reply w/ request
3399 @param sw_if_index - interface handle, physical interfaces only
3400 @param fib_id - fib identifier for the whitelist / blacklist fib
3401 @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration
3402 @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration
3403 @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it
3406 define cop_whitelist_enable_disable
3417 /** \brief cop: interface enable/disable junk filtration reply
3418 @param context - returned sender context, to match reply w/ request
3419 @param retval - return code
3422 define cop_whitelist_enable_disable_reply
3428 /** \brief get_node_graph - get a copy of the vpp node graph
3429 including the current set of graph arcs.
3431 @param client_index - opaque cookie to identify the sender
3432 @param context - sender context, to match reply w/ request
3435 define get_node_graph
3441 /** \brief get_node_graph_reply
3442 @param context - returned sender context, to match reply w/ request
3443 @param retval - return code
3444 @param reply_in_shmem - result from vlib_node_serialize, in shared
3445 memory. Process with vlib_node_unserialize, remember to switch
3446 heaps and free the result.
3449 define get_node_graph_reply
3456 /** \brief IOAM enable : Enable in-band OAM
3457 @param id - profile id
3458 @param seqno - To enable Seqno Processing
3459 @param analyse - Enabling analysis of iOAM at decap node
3460 @param pow_enable - Proof of Work enabled or not flag
3461 @param trace_enable - iOAM Trace enabled or not flag
3475 /** \brief iOAM Trace profile add / del response
3476 @param context - sender context, to match reply w/ request
3477 @param retval - return value for request
3479 define ioam_enable_reply
3485 /** \brief iOAM disable
3486 @param client_index - opaque cookie to identify the sender
3487 @param context - sender context, to match reply w/ request
3488 @param index - MAP Domain index
3497 /** \brief iOAM disable response
3498 @param context - sender context, to match reply w/ request
3499 @param retval - return value for request
3501 define ioam_disable_reply
3507 /** \brief Add/del policer
3508 @param client_index - opaque cookie to identify the sender
3509 @param context - sender context, to match reply w/ request
3510 @param is_add - add policer if non-zero, else delete
3511 @param name - policer name
3514 @param cb - Committed Burst
3515 @param eb - Excess or Peak Burst
3516 @param rate_type - rate type
3517 @param round_type - rounding type
3518 @param type - policer algorithm
3519 @param color_aware - 0=color-blind, 1=color-aware
3520 @param conform_action_type - conform action type
3521 @param conform_dscp - DSCP for conform mar-and-transmit action
3522 @param exceed_action_type - exceed action type
3523 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3524 @param violate_action_type - violate action type
3525 @param violate_dscp - DSCP for violate mar-and-transmit action
3527 define policer_add_del
3542 u8 conform_action_type;
3544 u8 exceed_action_type;
3546 u8 violate_action_type;
3550 /** \brief Add/del policer response
3551 @param context - sender context, to match reply w/ request
3552 @param retval - return value for request
3553 @param policer_index - for add, returned index of the new policer
3555 define policer_add_del_reply
3562 /** \brief Get list of policers
3563 @param client_index - opaque cookie to identify the sender
3564 @param context - sender context, to match reply w/ request
3565 @param match_name_valid - if 0 request all policers otherwise use match_name
3566 @param match_name - policer name
3573 u8 match_name_valid;
3577 /** \brief Policer operational state response.
3578 @param context - sender context, to match reply w/ request
3579 @param name - policer name
3582 @param cb - Committed Burst
3583 @param eb - Excess or Peak Burst
3584 @param rate_type - rate type
3585 @param round_type - rounding type
3586 @param type - policer algorithm
3587 @param conform_action_type - conform action type
3588 @param conform_dscp - DSCP for conform mar-and-transmit action
3589 @param exceed_action_type - exceed action type
3590 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3591 @param violate_action_type - violate action type
3592 @param violate_dscp - DSCP for violate mar-and-transmit action
3593 @param single_rate - 1 = single rate policer, 0 = two rate policer
3594 @param color_aware - for hierarchical policing
3595 @param scale - power-of-2 shift amount for lower rates
3596 @param cir_tokens_per_period - number of tokens for each period
3597 @param pir_tokens_per_period - number of tokens for each period for 2-rate policer
3598 @param current_limit - current limit
3599 @param current_bucket - current bucket
3600 @param extended_limit - extended limit
3601 @param extended_bucket - extended bucket
3602 @param last_update_time - last update time
3604 define policer_details
3616 u8 conform_action_type;
3618 u8 exceed_action_type;
3620 u8 violate_action_type;
3625 u32 cir_tokens_per_period;
3626 u32 pir_tokens_per_period;
3630 u32 extended_bucket;
3631 u64 last_update_time;
3634 /** \brief Set/unset policer classify interface
3635 @param client_index - opaque cookie to identify the sender
3636 @param context - sender context, to match reply w/ request
3637 @param sw_if_index - interface to set/unset policer classify
3638 @param ip4_table_index - ip4 classify table index (~0 for skip)
3639 @param ip6_table_index - ip6 classify table index (~0 for skip)
3640 @param l2_table_index - l2 classify table index (~0 for skip)
3641 @param is_add - Set if non-zero, else unset
3642 Note: User is recommeneded to use just one valid table_index per call.
3643 (ip4_table_index, ip6_table_index, or l2_table_index)
3645 define policer_classify_set_interface
3650 u32 ip4_table_index;
3651 u32 ip6_table_index;
3656 /** \brief Set/unset policer classify interface response
3657 @param context - sender context, to match reply w/ request
3658 @param retval - return value for request
3660 define policer_classify_set_interface_reply
3666 /** \brief Get list of policer classify interfaces and tables
3667 @param client_index - opaque cookie to identify the sender
3668 @param context - sender context, to match reply w/ request
3669 @param type - classify table type
3671 define policer_classify_dump
3678 /** \brief Policer iclassify operational state response.
3679 @param context - sender context, to match reply w/ request
3680 @param sw_if_index - software interface index
3681 @param table_index - classify table index
3683 define policer_classify_details
3690 /** \brief Classify get table IDs request
3691 @param client_index - opaque cookie to identify the sender
3692 @param context - sender context, to match reply w/ request
3694 define classify_table_ids
3700 /** \brief Reply for classify get table IDs request
3701 @param context - sender context which was passed in the request
3702 @param count - number of ids returned in response
3703 @param ids - array of classify table ids
3705 define classify_table_ids_reply
3713 /** \brief Classify table ids by interface index request
3714 @param client_index - opaque cookie to identify the sender
3715 @param context - sender context, to match reply w/ request
3716 @param sw_if_index - index of the interface
3718 define classify_table_by_interface
3725 /** \brief Reply for classify table id by interface index request
3726 @param context - sender context which was passed in the request
3727 @param count - number of ids returned in response
3728 @param sw_if_index - index of the interface
3729 @param l2_table_id - l2 classify table index
3730 @param ip4_table_id - ip4 classify table index
3731 @param ip6_table_id - ip6 classify table index
3733 define classify_table_by_interface_reply
3743 /** \brief Classify table info
3744 @param client_index - opaque cookie to identify the sender
3745 @param context - sender context, to match reply w/ request
3746 @param table_id - classify table index
3748 define classify_table_info
3755 /** \brief Reply for classify table info request
3756 @param context - sender context which was passed in the request
3757 @param count - number of ids returned in response
3758 @param table_id - classify table index
3759 @param nbuckets - number of buckets when adding a table
3760 @param match_n_vectors - number of match vectors
3761 @param skip_n_vectors - number of skip_n_vectors
3762 @param active_sessions - number of sessions (active entries)
3763 @param next_table_index - index of next table
3764 @param miss_next_index - index of miss table
3765 @param mask[] - match mask
3767 define classify_table_info_reply
3773 u32 match_n_vectors;
3775 u32 active_sessions;
3776 u32 next_table_index;
3777 u32 miss_next_index;
3779 u8 mask[mask_length];
3782 /** \brief Classify sessions dump request
3783 @param client_index - opaque cookie to identify the sender
3784 @param context - sender context, to match reply w/ request
3785 @param table_id - classify table index
3787 define classify_session_dump
3794 /** \brief Reply for classify table session dump request
3795 @param context - sender context which was passed in the request
3796 @param count - number of ids returned in response
3797 @param table_id - classify table index
3798 @param hit_next_index - hit_next_index of session
3799 @param opaque_index - for add, opaque_index of session
3800 @param advance - advance value of session
3801 @param match[] - match value for session
3803 define classify_session_details
3812 u8 match[match_length];
3815 /** \brief Configure IPFIX exporter process request
3816 @param client_index - opaque cookie to identify the sender
3817 @param context - sender context, to match reply w/ request
3818 @param collector_address - address of IPFIX collector
3819 @param collector_port - port of IPFIX collector
3820 @param src_address - address of IPFIX exporter
3821 @param vrf_id - VRF / fib table ID
3822 @param path_mtu - Path MTU between exporter and collector
3823 @param template_interval - number of seconds after which to resend template
3824 @param udp_checksum - UDP checksum calculation enable flag
3826 define set_ipfix_exporter
3830 u8 collector_address[16];
3835 u32 template_interval;
3839 /** \brief Reply to IPFIX exporter configure request
3840 @param context - sender context which was passed in the request
3842 define set_ipfix_exporter_reply
3848 /** \brief IPFIX exporter dump request
3849 @param client_index - opaque cookie to identify the sender
3850 @param context - sender context, to match reply w/ request
3852 define ipfix_exporter_dump
3858 /** \brief Reply to IPFIX exporter dump request
3859 @param context - sender context which was passed in the request
3860 @param collector_address - address of IPFIX collector
3861 @param collector_port - port of IPFIX collector
3862 @param src_address - address of IPFIX exporter
3863 @param fib_index - fib table index
3864 @param path_mtu - Path MTU between exporter and collector
3865 @param template_interval - number of seconds after which to resend template
3866 @param udp_checksum - UDP checksum calculation enable flag
3868 define ipfix_exporter_details
3871 u8 collector_address[16];
3876 u32 template_interval;
3880 /** \brief IPFIX classify stream configure request
3881 @param client_index - opaque cookie to identify the sender
3882 @param context - sender context, to match reply w/ request
3883 @param domain_id - domain ID reported in IPFIX messages for classify stream
3884 @param src_port - source port of UDP session for classify stream
3886 define set_ipfix_classify_stream {
3893 /** \brief IPFIX classify stream configure response
3894 @param context - sender context, to match reply w/ request
3895 @param retval - return value for request
3897 define set_ipfix_classify_stream_reply {
3902 /** \brief IPFIX classify stream dump request
3903 @param client_index - opaque cookie to identify the sender
3904 @param context - sender context, to match reply w/ request
3906 define ipfix_classify_stream_dump {
3911 /** \brief Reply to IPFIX classify stream dump request
3912 @param context - sender context, to match reply w/ request
3913 @param domain_id - domain ID reported in IPFIX messages for classify stream
3914 @param src_port - source port of UDP session for classify stream
3916 define ipfix_classify_stream_details {
3922 /** \brief IPFIX add or delete classifier table request
3923 @param client_index - opaque cookie to identify the sender
3924 @param context - sender context, to match reply w/ request
3925 @param table_id - classifier table ID
3926 @param ip_version - version of IP used in the classifier table
3927 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
3929 define ipfix_classify_table_add_del {
3934 u8 transport_protocol;
3938 /** \brief IPFIX add classifier table response
3939 @param context - sender context which was passed in the request
3941 define ipfix_classify_table_add_del_reply {
3946 /** \brief IPFIX classify tables dump request
3947 @param client_index - opaque cookie to identify the sender
3948 @param context - sender context, to match reply w/ request
3950 define ipfix_classify_table_dump {
3955 /** \brief Reply to IPFIX classify tables dump request
3956 @param context - sender context, to match reply w/ request
3957 @param table_id - classifier table ID
3958 @param ip_version - version of IP used in the classifier table
3959 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
3961 define ipfix_classify_table_details {
3965 u8 transport_protocol;
3968 /** \brief Set/unset flow classify interface
3969 @param client_index - opaque cookie to identify the sender
3970 @param context - sender context, to match reply w/ request
3971 @param sw_if_index - interface to set/unset flow classify
3972 @param ip4_table_index - ip4 classify table index (~0 for skip)
3973 @param ip6_table_index - ip6 classify table index (~0 for skip)
3974 @param l2_table_index - l2 classify table index (~0 for skip)
3975 @param is_add - Set if non-zero, else unset
3976 Note: User is recommeneded to use just one valid table_index per call.
3977 (ip4_table_index, ip6_table_index, or l2_table_index)
3979 define flow_classify_set_interface {
3983 u32 ip4_table_index;
3984 u32 ip6_table_index;
3988 /** \brief Set/unset flow classify interface response
3989 @param context - sender context, to match reply w/ request
3990 @param retval - return value for request
3992 define flow_classify_set_interface_reply {
3997 /** \brief Get list of flow classify interfaces and tables
3998 @param client_index - opaque cookie to identify the sender
3999 @param context - sender context, to match reply w/ request
4000 @param type - classify table type
4002 define flow_classify_dump {
4008 /** \brief Flow classify operational state response.
4009 @param context - sender context, to match reply w/ request
4010 @param sw_if_index - software interface index
4011 @param table_index - classify table index
4013 define flow_classify_details {
4019 /** \brief Query relative index via node names
4020 @param client_index - opaque cookie to identify the sender
4021 @param context - sender context, to match reply w/ request
4022 @param node_name - name of node to find relative index from
4023 @param next_name - next node from node_name to find relative index of
4025 define get_next_index
4033 /** \brief Reply for get next node index
4034 @param context - sender context which was passed in the request
4035 @param retval - return value
4036 @param next_index - index of the next_node
4038 define get_next_index_reply
4045 /** \brief PacketGenerator create interface request
4046 @param client_index - opaque cookie to identify the sender
4047 @param context - sender context, to match reply w/ request
4048 @param interface_id - interface index
4050 define pg_create_interface
4057 /** \brief PacketGenerator create interface response
4058 @param context - sender context, to match reply w/ request
4059 @param retval - return value for request
4061 define pg_create_interface_reply
4068 /** \brief PacketGenerator capture packets on given interface request
4069 @param client_index - opaque cookie to identify the sender
4070 @param context - sender context, to match reply w/ request
4071 @param interface_id - pg interface index
4072 @param is_enabled - 1 if enabling streams, 0 if disabling
4073 @param count - number of packets to be captured
4074 @param pcap_file - pacp file name to store captured packets
4083 u32 pcap_name_length;
4084 u8 pcap_file_name[pcap_name_length];
4087 /** \brief PacketGenerator capture packets response
4088 @param context - sender context, to match reply w/ request
4089 @param retval - return value for request
4091 define pg_capture_reply
4097 /** \brief Enable / disable packet generator request
4098 @param client_index - opaque cookie to identify the sender
4099 @param context - sender context, to match reply w/ request
4100 @param is_enabled - 1 if enabling streams, 0 if disabling
4101 @param stream - stream name to be enable/disabled, if not specified handle all streams
4103 define pg_enable_disable
4108 u32 stream_name_length;
4109 u8 stream_name[stream_name_length];
4112 /** \brief Reply for enable / disable packet generator
4113 @param context - returned sender context, to match reply w/ request
4114 @param retval - return code
4116 define pg_enable_disable_reply
4122 /** \brief Configure IP source and L4 port-range check
4123 @param client_index - opaque cookie to identify the sender
4124 @param context - sender context, to match reply w/ request
4125 @param is_ip6 - 1 if source address type is IPv6
4126 @param is_add - 1 if add, 0 if delete
4127 @param mask_length - mask length for address entry
4128 @param address - array of address bytes
4129 @param number_of_ranges - length of low_port and high_port arrays (must match)
4130 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
4131 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
4132 @param vrf_id - fib table/vrf id to associate the source and port-range check with
4133 @note To specify a single port set low_port and high_port entry the same
4135 define ip_source_and_port_range_check_add_del
4143 u8 number_of_ranges;
4149 /** \brief Configure IP source and L4 port-range check reply
4150 @param context - returned sender context, to match reply w/ request
4151 @param retval - return code
4153 define ip_source_and_port_range_check_add_del_reply
4159 /** \brief Set interface source and L4 port-range request
4160 @param client_index - opaque cookie to identify the sender
4161 @param context - sender context, to match reply w/ request
4162 @param interface_id - interface index
4163 @param tcp_vrf_id - VRF associated with source and TCP port-range check
4164 @param udp_vrf_id - VRF associated with source and TCP port-range check
4166 define ip_source_and_port_range_check_interface_add_del
4178 /** \brief Set interface source and L4 port-range response
4179 @param context - sender context, to match reply w/ request
4180 @param retval - return value for request
4182 define ip_source_and_port_range_check_interface_add_del_reply
4188 /** \brief Add / del ipsec gre tunnel request
4189 @param client_index - opaque cookie to identify the sender
4190 @param context - sender context, to match reply w/ request
4191 @param local_sa_id - local SA id
4192 @param remote_sa_id - remote SA id
4193 @param is_add - 1 if adding the tunnel, 0 if deleting
4194 @param src_address - tunnel source address
4195 @param dst_address - tunnel destination address
4197 define ipsec_gre_add_del_tunnel {
4207 /** \brief Reply for add / del ipsec gre tunnel request
4208 @param context - returned sender context, to match reply w/ request
4209 @param retval - return code
4210 @param sw_if_index - software index of the new ipsec gre tunnel
4212 define ipsec_gre_add_del_tunnel_reply {
4218 /** \brief Dump ipsec gre tunnel table
4219 @param client_index - opaque cookie to identify the sender
4220 @param context - sender context, to match reply w/ request
4221 @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
4223 define ipsec_gre_tunnel_dump {
4229 /** \brief mpls gre tunnel operational state response
4230 @param context - returned sender context, to match reply w/ request
4231 @param sw_if_index - software index of the ipsec gre tunnel
4232 @param local_sa_id - local SA id
4233 @param remote_sa_id - remote SA id
4234 @param src_address - tunnel source address
4235 @param dst_address - tunnel destination address
4237 define ipsec_gre_tunnel_details {
4246 /** \brief Delete sub interface request
4247 @param client_index - opaque cookie to identify the sender
4248 @param context - sender context, to match reply w/ request
4249 @param sw_if_index - sw index of the interface that was created by create_subif
4251 define delete_subif {
4257 /** \brief Delete sub interface response
4258 @param context - sender context, to match reply w/ request
4259 @param retval - return code for the request
4261 define delete_subif_reply {
4266 /** \brief DPDK interface HQoS pipe profile set request
4267 @param client_index - opaque cookie to identify the sender
4268 @param context - sender context, to match reply w/ request
4269 @param sw_if_index - the interface
4270 @param subport - subport ID
4271 @param pipe - pipe ID within its subport
4272 @param profile - pipe profile ID
4274 define sw_interface_set_dpdk_hqos_pipe {
4283 /** \brief DPDK interface HQoS pipe profile set reply
4284 @param context - sender context, to match reply w/ request
4285 @param retval - request return code
4287 define sw_interface_set_dpdk_hqos_pipe_reply {
4292 /** \brief DPDK interface HQoS subport parameters set request
4293 @param client_index - opaque cookie to identify the sender
4294 @param context - sender context, to match reply w/ request
4295 @param sw_if_index - the interface
4296 @param subport - subport ID
4297 @param tb_rate - subport token bucket rate (measured in bytes/second)
4298 @param tb_size - subport token bucket size (measured in credits)
4299 @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second)
4300 @param tc_period - enforcement period for rates (measured in milliseconds)
4302 define sw_interface_set_dpdk_hqos_subport {
4313 /** \brief DPDK interface HQoS subport parameters set reply
4314 @param context - sender context, to match reply w/ request
4315 @param retval - request return code
4317 define sw_interface_set_dpdk_hqos_subport_reply {
4322 /** \brief DPDK interface HQoS tctbl entry set request
4323 @param client_index - opaque cookie to identify the sender
4324 @param context - sender context, to match reply w/ request
4325 @param sw_if_index - the interface
4326 @param entry - entry index ID
4327 @param tc - traffic class (0 .. 3)
4328 @param queue - traffic class queue (0 .. 3)
4330 define sw_interface_set_dpdk_hqos_tctbl {
4339 /** \brief DPDK interface HQoS tctbl entry set reply
4340 @param context - sender context, to match reply w/ request
4341 @param retval - request return code
4343 define sw_interface_set_dpdk_hqos_tctbl_reply {
4348 /** \brief L2 interface pbb tag rewrite configure request
4349 @param client_index - opaque cookie to identify the sender
4350 @param context - sender context, to match reply w/ request
4351 @param sw_if_index - interface the operation is applied to
4352 @param vtr_op - Choose from l2_vtr_op_t enum values
4353 @param inner_tag - needed for translate_qinq vtr op only
4354 @param outer_tag - needed for translate_qinq vtr op only
4355 @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op
4356 @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op
4357 @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op
4358 @param i_sid - I-tag service id, needed for any push or translate qinq vtr op
4360 define l2_interface_pbb_tag_rewrite
4373 /** \brief L2 interface pbb tag rewrite response
4374 @param context - sender context, to match reply w/ request
4375 @param retval - return code for the request
4377 define l2_interface_pbb_tag_rewrite_reply
4383 /** \brief Punt traffic to the host
4384 @param client_index - opaque cookie to identify the sender
4385 @param context - sender context, to match reply w/ request
4386 @param is_add - add punt if non-zero, else delete
4387 @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All
4388 @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported
4389 @param l4_port - TCP/UDP port to be punted
4400 /** \brief Reply to the punt request
4401 @param context - sender context which was passed in the request
4402 @param retval - return code of punt request
4410 /** \brief Dump ipsec policy database data
4411 @param client_index - opaque cookie to identify the sender
4412 @param context - sender context, to match reply w/ request
4413 @param spd_id - SPD instance id
4414 @param sa_id - SA id, optional, set to ~0 to see all policies in SPD
4416 define ipsec_spd_dump {
4423 /** \brief IPsec policy database response
4424 @param context - sender context which was passed in the request
4425 @param spd_id - SPD instance id
4426 @param priority - numeric value to control policy evaluation order
4427 @param is_outbound - [1|0] to indicate if direction is [out|in]bound
4428 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
4429 @param local_start_addr - first address in local traffic selector range
4430 @param local_stop_addr - last address in local traffic selector range
4431 @param local_start_port - first port in local traffic selector range
4432 @param local_stop_port - last port in local traffic selector range
4433 @param remote_start_addr - first address in remote traffic selector range
4434 @param remote_stop_addr - last address in remote traffic selector range
4435 @param remote_start_port - first port in remote traffic selector range
4436 @param remote_stop_port - last port in remote traffic selector range
4437 @param protocol - traffic selector protocol
4438 @param policy - policy action
4439 @param sa_id - SA id
4440 @param bytes - byte count of packets matching this policy
4441 @param packets - count of packets matching this policy
4444 define ipsec_spd_details {
4450 u8 local_start_addr[16];
4451 u8 local_stop_addr[16];
4452 u16 local_start_port;
4453 u16 local_stop_port;
4454 u8 remote_start_addr[16];
4455 u8 remote_stop_addr[16];
4456 u16 remote_start_port;
4457 u16 remote_stop_port;
4465 /** \brief Feature path enable/disable request
4466 @param client_index - opaque cookie to identify the sender
4467 @param context - sender context, to match reply w/ request
4468 @param sw_if_index - the interface
4469 @param enable - 1 = on, 0 = off
4471 define feature_enable_disable {
4477 u8 feature_name[64];
4480 /** \brief Reply to the eature path enable/disable request
4481 @param context - sender context which was passed in the request
4482 @param retval - return code for the request
4484 define feature_enable_disable_reply
4490 /** \brief Configure BFD feature
4491 @param client_index - opaque cookie to identify the sender
4492 @param context - sender context, to match reply w/ request
4493 @param slow_timer - slow timer (seconds)
4494 @param min_tx - desired min tx interval
4495 @param min_rx - desired min rx interval
4496 @param detect_mult - desired detection multiplier
4498 define bfd_set_config {
4507 /** \brief Configure BFD feature response
4508 @param context - sender context, to match reply w/ request
4509 @param retval - return code for the request
4511 define bfd_set_config_reply {
4516 /** \brief Get BFD configuration
4518 define bfd_get_config {
4523 /** \brief Get BFD configuration response
4524 @param context - sender context, to match reply w/ request
4525 @param retval - return code for the request
4526 @param slow_timer - slow timer (seconds)
4527 @param min_tx - desired min tx interval
4528 @param min_rx - desired min rx interval
4529 @param detect_mult - desired detection multiplier
4531 define bfd_get_config_reply {
4540 /** \brief Add UDP BFD session on interface
4541 @param client_index - opaque cookie to identify the sender
4542 @param context - sender context, to match reply w/ request
4543 @param sw_if_index - sw index of the interface
4544 @param desired_min_tx - desired min transmit interval (microseconds)
4545 @param required_min_rx - required min receive interval (microseconds)
4546 @param detect_mult - detect multiplier (# of packets missed between connection goes down)
4547 @param local_addr - local address
4548 @param peer_addr - peer address
4549 @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
4551 define bfd_udp_add {
4556 u32 required_min_rx;
4563 /** \brief Add UDP BFD session response
4564 @param context - sender context, to match reply w/ request
4565 @param retval - return code for the request
4566 @param bs_index - index of the session created
4568 define bfd_udp_add_reply {
4574 /** \brief Delete UDP BFD session on interface
4575 @param client_index - opaque cookie to identify the sender
4576 @param context - sender context, to match reply w/ request
4577 @param sw_if_index - sw index of the interface
4578 @param local_addr - local address
4579 @param peer_addr - peer address
4580 @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
4582 define bfd_udp_del {
4591 /** \brief Delete UDP BFD session response
4592 @param context - sender context, to match reply w/ request
4593 @param retval - return code for the request
4595 define bfd_udp_del_reply {
4600 /** \brief Get all BFD sessions
4601 @param client_index - opaque cookie to identify the sender
4602 @param context - sender context, to match reply w/ request
4604 define bfd_udp_session_dump {
4609 /** \brief BFD session details structure
4610 @param context - sender context, to match reply w/ request
4611 @param bs_index - index of the session
4612 @param sw_if_index - sw index of the interface
4613 @param local_addr - local address
4614 @param peer_addr - peer address
4615 @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
4616 @param state - session state
4618 define bfd_udp_session_details {
4628 /** \brief Set flags of BFD session
4629 @param client_index - opaque cookie to identify the sender
4630 @param context - sender context, to match reply w/ request
4631 @param bs_index - index of the bfd session to set flags on
4632 @param admin_up_down - set the admin state, 1 = up, 0 = down
4634 define bfd_session_set_flags {
4641 /** \brief Reply to bfd_session_set_flags
4642 @param context - sender context which was passed in the request
4643 @param retval - return code of the set flags request
4645 define bfd_session_set_flags_reply
4651 /** \brief Register for BFD events
4652 @param client_index - opaque cookie to identify the sender
4653 @param context - sender context, to match reply w/ request
4654 @param enable_disable - 1 => register for events, 0 => cancel registration
4655 @param pid - sender's pid
4657 define want_bfd_events
4665 /** \brief Reply for BFD events registration
4666 @param context - returned sender context, to match reply w/ request
4667 @param retval - return code
4669 define want_bfd_events_reply
4677 * eval: (c-set-style "gnu")