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}
31 * VHOST-USER APIs: see .../vnet/devices/virtio/{vhost_user.api, vhost_user_api.c}
32 * VXLAN GPE APIs: see .../vnet/vnet/vxlan-gpe/{vxlan_gpe.api, vxlan_gpe_api.c}
33 * GRE APIs: see .../vnet/vnet/gre/{gre.api, gre_api.c}
36 /** \brief Create a new subinterface with the given vlan id
37 @param client_index - opaque cookie to identify the sender
38 @param context - sender context, to match reply w/ request
39 @param sw_if_index - software index of the new vlan's parent interface
40 @param vlan_id - vlan tag of the new interface
42 define create_vlan_subif
50 /** \brief Reply for the vlan subinterface create request
51 @param context - returned sender context, to match reply w/ request
52 @param retval - return code
53 @param sw_if_index - software index allocated for the new subinterface
55 define create_vlan_subif_reply
62 /** \brief Enable or Disable MPLS on and interface
63 @param client_index - opaque cookie to identify the sender
64 @param context - sender context, to match reply w/ request
65 @param sw_if_index - index of the interface
66 @param enable - if non-zero enable, else disable
68 define sw_interface_set_mpls_enable
76 /** \brief Reply for MPLS state on an interface
77 @param context - returned sender context, to match reply w/ request
78 @param retval - return code
80 define sw_interface_set_mpls_enable_reply
86 /** \brief MPLS Route Add / del route
87 @param client_index - opaque cookie to identify the sender
88 @param context - sender context, to match reply w/ request
89 @param mr_label - The MPLS label value
90 @param mr_eos - The End of stack bit
91 @param mr_table_id - The MPLS table-id the route is added in
92 @param mr_classify_table_index - If this is a classify route,
93 this is the classify table index
94 @param mr_create_table_if_needed - If the MPLS or IP tables do not exist,
96 @param mr_is_add - Is this a route add or delete
97 @param mr_is_classify - Is this route result a classify
98 @param mr_is_multipath - Is this route update a multipath - i.e. is this
99 a path addition to an existing route
100 @param mr_is_resolve_host - Recurse resolution constraint via a host prefix
101 @param mr_is_resolve_attached - Recurse resolution constraint via attached prefix
102 @param mr_next_hop_proto_is_ip4 - The next-hop is IPV4
103 @param mr_next_hop_weight - The weight, for UCMP
104 @param mr_next_hop[16] - the nextop address
105 @param mr_next_hop_sw_if_index - the next-hop SW interface
106 @param mr_next_hop_table_id - the next-hop table-id (if appropriate)
107 @param mr_next_hop_n_out_labels - the number of labels in the label stack
108 @param mr_next_hop_out_label_stack - the next-hop output label stack, outer most first
109 @param next_hop_via_label - The next-hop is a resolved via a local label
111 define mpls_route_add_del
118 u32 mr_classify_table_index;
119 u8 mr_create_table_if_needed;
123 u8 mr_is_resolve_host;
124 u8 mr_is_resolve_attached;
125 u8 mr_next_hop_proto_is_ip4;
126 u8 mr_next_hop_weight;
128 u8 mr_next_hop_n_out_labels;
129 u32 mr_next_hop_sw_if_index;
130 u32 mr_next_hop_table_id;
131 u32 mr_next_hop_via_label;
132 u32 mr_next_hop_out_label_stack[mr_next_hop_n_out_labels];
135 /** \brief Reply for MPLS route add / del request
136 @param context - returned sender context, to match reply w/ request
137 @param retval - return code
139 define mpls_route_add_del_reply
145 /** \brief Dump MPLS fib table
146 @param client_index - opaque cookie to identify the sender
155 @param sw_if_index - index of the interface
156 @param weight - The weight, for UCMP
157 @param is_local - local if non-zero, else remote
158 @param is_drop - Drop the packet
159 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
160 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
161 @param afi - the afi of the next hop, IP46_TYPE_IP4=1, IP46_TYPE_IP6=2
162 @param next_hop[16] - the next hop address
164 WARNING: this type is replicated, pending cleanup completion
167 typeonly manual_print manual_endian define fib_path2
179 /** \brief mpls FIB table response
180 @param table_id - MPLS fib table id
181 @param s_bit - End-of-stack bit
182 @param label - MPLS label value
183 @param count - the number of fib_path in path
184 @param path - array of of fib_path structures
186 manual_endian manual_print define mpls_fib_details
193 vl_api_fib_path2_t path[count];
196 /** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create
197 a per-prefix label entry.
198 @param client_index - opaque cookie to identify the sender
199 @param context - sender context, to match reply w/ request
200 @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in
201 @param mb_label - The MPLS label value to bind
202 @param mb_ip_table_id - The IP table-id of the IP prefix to bind to.
203 @param mb_create_table_if_needed - Create either/both tables if required.
204 @param mb_is_bind - Bind or unbind
205 @param mb_is_ip4 - The prefix to bind to is IPv4
206 @param mb_address_length - Length of IP prefix
207 @param mb_address[16] - IP prefix/
209 define mpls_ip_bind_unbind
213 u32 mb_mpls_table_id;
216 u8 mb_create_table_if_needed;
219 u8 mb_address_length;
223 /** \brief Reply for MPLS IP bind/unbind request
224 @param context - returned sender context, to match reply w/ request
225 @param retval - return code
227 define mpls_ip_bind_unbind_reply
233 /** \brief MPLS tunnel Add / del route
234 @param client_index - opaque cookie to identify the sender
235 @param context - sender context, to match reply w/ request
236 @param mt_is_add - Is this a route add or delete
237 @param mt_sw_if_index - The SW interface index of the tunnel to delete
238 @param mt_next_hop_proto_is_ip4 - The next-hop is IPV4
239 @param mt_next_hop_weight - The weight, for UCMP
240 @param mt_next_hop[16] - the nextop address
241 @param mt_next_hop_sw_if_index - the next-hop SW interface
242 @param mt_next_hop_table_id - the next-hop table-id (if appropriate)
243 @param mt_next_hop_n_out_labels - the number of next-hop output labels
244 @param mt_next_hop_out_label_stack - the next-hop output label stack, outer most first
246 define mpls_tunnel_add_del
253 u8 mt_next_hop_proto_is_ip4;
254 u8 mt_next_hop_weight;
256 u8 mt_next_hop_n_out_labels;
257 u32 mt_next_hop_sw_if_index;
258 u32 mt_next_hop_table_id;
259 u32 mt_next_hop_out_label_stack[mt_next_hop_n_out_labels];
262 /** \brief Reply for MPLS tunnel add / del request
263 @param context - returned sender context, to match reply w/ request
264 @param retval - return code
265 @param sw_if_index - SW interface index of the tunnel created
267 define mpls_tunnel_add_del_reply
274 /** \brief Dump mpls eth tunnel table
275 @param client_index - opaque cookie to identify the sender
276 @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels
278 define mpls_tunnel_dump
285 /** \brief mpls eth tunnel operational state response
286 @param tunnel_index - eth tunnel identifier
287 @param intfc_address - interface ipv4 addr
288 @param mask_width - interface ipv4 addr mask
289 @param hw_if_index - interface id
291 @param tunnel_dst_mac -
292 @param tx_sw_if_index -
293 @param encap_index - reference to mpls label table
294 @param nlabels - number of resolved labels
295 @param labels - resolved labels
297 define mpls_tunnel_details
303 u8 mt_next_hop_proto_is_ip4;
305 u32 mt_next_hop_sw_if_index;
306 u32 mt_next_hop_table_id;
307 u32 mt_next_hop_n_labels;
308 u32 mt_next_hop_out_labels[mt_next_hop_n_labels];
311 /** \brief Proxy ARP add / del request
312 @param client_index - opaque cookie to identify the sender
313 @param context - sender context, to match reply w/ request
314 @param vrf_id - VRF / Fib table ID
315 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
316 @param low_address[4] - Low address of the Proxy ARP range
317 @param hi_address[4] - High address of the Proxy ARP range
319 define proxy_arp_add_del
329 /** \brief Reply for proxy arp add / del request
330 @param context - returned sender context, to match reply w/ request
331 @param retval - return code
333 define proxy_arp_add_del_reply
339 /** \brief Proxy ARP add / del request
340 @param client_index - opaque cookie to identify the sender
341 @param context - sender context, to match reply w/ request
342 @param sw_if_index - Which interface to enable / disable Proxy Arp on
343 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
345 define proxy_arp_intfc_enable_disable
350 /* 1 = on, 0 = off */
354 /** \brief Reply for Proxy ARP interface enable / disable request
355 @param context - returned sender context, to match reply w/ request
356 @param retval - return code
358 define proxy_arp_intfc_enable_disable_reply
364 /** \brief Reset VRF (remove all routes etc) request
365 @param client_index - opaque cookie to identify the sender
366 @param context - sender context, to match reply w/ request
367 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
368 @param vrf_id - ID of th FIB table / VRF to reset
378 /** \brief Reply for Reset VRF request
379 @param context - returned sender context, to match reply w/ request
380 @param retval - return code
382 define reset_vrf_reply
388 /** \brief Is Address Reachable request - DISABLED
389 @param client_index - opaque cookie to identify the sender
390 @param context - sender context, to match reply w/ request
391 @param next_hop_sw_if_index - index of interface used to get to next hop
392 @param is_ipv6 - 1 for IPv6, 0 for IPv4
393 @param is_error - address not found or does not match intf
394 @param address[] - Address in question
396 define is_address_reachable
398 u32 client_index; /* (api_main_t *) am->my_client_index */
400 u32 next_hop_sw_if_index;
401 u8 is_known; /* on reply, this is the answer */
403 u8 is_error; /* address not found or does not match intf */
407 /** \brief Want Stats, register for stats updates
408 @param client_index - opaque cookie to identify the sender
409 @param context - sender context, to match reply w/ request
410 @param enable_disable - 1 = enable stats, 0 = disable
411 @param pid - pid of process requesting stats updates
421 /** \brief Reply for Want Stats request
422 @param context - returned sender context, to match reply w/ request
423 @param retval - return code
425 define want_stats_reply
431 typeonly manual_print manual_endian define ip4_fib_counter
439 manual_print manual_endian define vnet_ip4_fib_counters
443 vl_api_ip4_fib_counter_t c[count];
446 typeonly manual_print manual_endian define ip6_fib_counter
454 manual_print manual_endian define vnet_ip6_fib_counters
458 vl_api_ip6_fib_counter_t c[count];
461 /** \brief Request for a single block of summary stats
462 @param client_index - opaque cookie to identify the sender
463 @param context - sender context, to match reply w/ request
465 define vnet_get_summary_stats
471 /** \brief Reply for vnet_get_summary_stats request
472 @param context - sender context, to match reply w/ request
473 @param retval - return code for request
478 define vnet_summary_stats_reply
487 /** \brief OAM event structure
488 @param dst_address[] -
497 /** \brief Want OAM events request
498 @param client_index - opaque cookie to identify the sender
499 @param context - sender context, to match reply w/ request
500 @param enable_disable- enable if non-zero, else disable
501 @param pid - pid of the requesting process
503 define want_oam_events
511 /** \brief Want OAM events response
512 @param context - sender context, to match reply w/ request
513 @param retval - return code for the want oam stats request
515 define want_oam_events_reply
521 /** \brief OAM add / del target request
522 @param client_index - opaque cookie to identify the sender
523 @param context - sender context, to match reply w/ request
524 @param vrf_id - vrf_id of the target
525 @param src_address[] - source address to use for the updates
526 @param dst_address[] - destination address of the target
527 @param is_add - add target if non-zero, else delete
539 /** \brief OAM add / del target response
540 @param context - sender context, to match reply w/ request
541 @param retval - return code of the request
543 define oam_add_del_reply
549 /** \brief Reset fib table request
550 @param client_index - opaque cookie to identify the sender
551 @param context - sender context, to match reply w/ request
552 @param vrf_id - vrf/table id of the fib table to reset
553 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
563 /** \brief Reset fib response
564 @param context - sender context, to match reply w/ request
565 @param retval - return code for the reset bfib request
567 define reset_fib_reply
573 /** \brief DHCP Proxy config add / del request
574 @param client_index - opaque cookie to identify the sender
575 @param context - sender context, to match reply w/ request
576 @param vrf_id - vrf id
577 @param if_ipv6 - ipv6 if non-zero, else ipv4
578 @param is_add - add the config if non-zero, else delete
579 @param insert_circuit_id - option82 suboption 1 fib number
580 @param dhcp_server[] - server address
581 @param dhcp_src_address[] - <fix this, need details>
583 define dhcp_proxy_config
590 u8 insert_circuit_id;
592 u8 dhcp_src_address[16];
595 /** \brief DHCP Proxy config response
596 @param context - sender context, to match reply w/ request
597 @param retval - return code for the request
599 define dhcp_proxy_config_reply
605 /** \brief DHCP Proxy set / unset vss request
606 @param client_index - opaque cookie to identify the sender
607 @param context - sender context, to match reply w/ request
608 @param tbl_id - table id
609 @param oui - first part of vpn id
610 @param fib_id - second part of vpn id
611 @param is_ipv6 - ip6 if non-zero, else ip4
612 @param is_add - set vss if non-zero, else delete
614 define dhcp_proxy_set_vss
625 /** \brief DHCP proxy set / unset vss response
626 @param context - sender context, to match reply w/ request
627 @param retval - return code for the request
629 define dhcp_proxy_set_vss_reply
635 /** \brief Create loopback interface request
636 @param client_index - opaque cookie to identify the sender
637 @param context - sender context, to match reply w/ request
638 @param mac_address - mac addr to assign to the interface if none-zero
640 define create_loopback
647 /** \brief Create loopback interface response
648 @param context - sender context, to match reply w/ request
649 @param sw_if_index - sw index of the interface that was created
650 @param retval - return code for the request
652 define create_loopback_reply
659 /** \brief Delete loopback interface request
660 @param client_index - opaque cookie to identify the sender
661 @param context - sender context, to match reply w/ request
662 @param sw_if_index - sw index of the interface that was created
664 define delete_loopback
671 /** \brief Delete loopback interface response
672 @param context - sender context, to match reply w/ request
673 @param retval - return code for the request
675 define delete_loopback_reply
681 /** \brief Control ping from client to api server request
682 @param client_index - opaque cookie to identify the sender
683 @param context - sender context, to match reply w/ request
691 /** \brief Control ping from the client to the server response
692 @param client_index - opaque cookie to identify the sender
693 @param context - sender context, to match reply w/ request
694 @param retval - return code for the request
695 @param vpe_pid - the pid of the vpe, returned by the server
697 define control_ping_reply
705 /** \brief Process a vpe parser cli string request
706 @param client_index - opaque cookie to identify the sender
707 @param context - sender context, to match reply w/ request
708 @param cmd_in_shmem - pointer to cli command string
724 /** \brief vpe parser cli string response
725 @param context - sender context, to match reply w/ request
726 @param retval - return code for request
727 @param reply_in_shmem - Reply string from cli processing if any
735 define cli_inband_reply
743 /** \brief Set max allowed ARP or ip6 neighbor entries request
744 @param client_index - opaque cookie to identify the sender
745 @param context - sender context, to match reply w/ request
746 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
747 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
749 define set_arp_neighbor_limit
754 u32 arp_neighbor_limit;
757 /** \brief Set max allowed ARP or ip6 neighbor entries response
758 @param context - sender context, to match reply w/ request
759 @param retval - return code for request
761 define set_arp_neighbor_limit_reply
767 /** \brief L2 interface patch add / del request
768 @param client_index - opaque cookie to identify the sender
769 @param context - sender context, to match reply w/ request
770 @param rx_sw_if_index - receive side interface
771 @param tx_sw_if_index - transmit side interface
772 @param is_add - if non-zero set up the interface patch, else remove it
774 define l2_patch_add_del
783 /** \brief L2 interface patch add / del response
784 @param context - sender context, to match reply w/ request
785 @param retval - return code for the request
787 define l2_patch_add_del_reply
793 /** \brief IPv6 segment routing tunnel add / del request
794 @param client_index - opaque cookie to identify the sender
795 @param context - sender context, to match reply w/ request
796 @param is_add - add the tunnel if non-zero, else delete it
797 @param name[] - tunnel name (len. 64)
798 @param src_address[] -
799 @param dst_address[] -
800 @param dst_mask_width -
801 @param inner_vrf_id -
802 @param outer_vrf_id -
803 @param flags_net_byte_order -
806 @param segs_and_tags[] -
807 @param policy_name[] - name of policy to associate this tunnel to (len. 64)
809 define sr_tunnel_add_del
820 u16 flags_net_byte_order;
827 /** \brief IPv6 segment routing tunnel add / del response
828 @param context - sender context, to match reply w/ request
829 @param retval - return value for request
831 define sr_tunnel_add_del_reply
837 /** \brief IPv6 segment routing policy add / del request
838 @param client_index - opaque cookie to identify the sender
839 @param context - sender context, to match reply w/ request
840 @param is_add - add the tunnel if non-zero, else delete it
841 @param name[] - policy name (len. 64)
842 @param tunnel_names[] -
844 define sr_policy_add_del
853 /** \brief IPv6 segment routing policy add / del response
854 @param context - sender context, to match reply w/ request
855 @param retval - return value for request
857 define sr_policy_add_del_reply
863 /** \brief IPv6 segment routing multicast map to policy add / del request
864 @param client_index - opaque cookie to identify the sender
865 @param context - sender context, to match reply w/ request
866 @param is_add - add the tunnel if non-zero, else delete it
867 @param multicast_address[] - IP6 multicast address
868 @param policy_name[] = policy name (len.64)
870 define sr_multicast_map_add_del
875 u8 multicast_address[16];
879 /** \brief IPv6 segment routing multicast map to policy add / del response
880 @param context - sender context, to match reply w/ request
881 @param retval - return value for request
883 define sr_multicast_map_add_del_reply
889 /** \brief Interface set vpath request
890 @param client_index - opaque cookie to identify the sender
891 @param context - sender context, to match reply w/ request
892 @param sw_if_index - interface used to reach neighbor
893 @param enable - if non-zero enable, else disable
895 define sw_interface_set_vpath
903 /** \brief Interface set vpath response
904 @param context - sender context, to match reply w/ request
905 @param retval - return code for the request
907 define sw_interface_set_vpath_reply
913 /** \brief Set L2 XConnect between two interfaces request
914 @param client_index - opaque cookie to identify the sender
915 @param context - sender context, to match reply w/ request
916 @param rx_sw_if_index - Receive interface index
917 @param tx_sw_if_index - Transmit interface index
918 @param enable - enable xconnect if not 0, else set to L3 mode
920 define sw_interface_set_l2_xconnect
929 /** \brief Set L2 XConnect response
930 @param context - sender context, to match reply w/ request
931 @param retval - L2 XConnect request return code
933 define sw_interface_set_l2_xconnect_reply
939 /** \brief Interface bridge mode request
940 @param client_index - opaque cookie to identify the sender
941 @param context - sender context, to match reply w/ request
942 @param rx_sw_if_index - the interface
943 @param bd_id - bridge domain id
944 @param bvi - Setup interface as a bvi, bridge mode only
945 @param shg - Shared horizon group, for bridge mode only
946 @param enable - Enable beige mode if not 0, else set to L3 mode
948 define sw_interface_set_l2_bridge
959 /** \brief Interface bridge mode response
960 @param context - sender context, to match reply w/ request
961 @param retval - Bridge mode request return code
963 define sw_interface_set_l2_bridge_reply
969 /** \brief L2 FIB add entry request
970 @param client_index - opaque cookie to identify the sender
971 @param context - sender context, to match reply w/ request
972 @param mac - the entry's mac address
973 @param bd_id - the entry's bridge domain id
974 @param sw_if_index - the interface
975 @param is_add - If non zero add the entry, else delete it
992 /** \brief L2 FIB add entry response
993 @param context - sender context, to match reply w/ request
994 @param retval - return code for the add l2fib entry request
996 define l2fib_add_del_reply
1002 /** \brief Set L2 flags request !!! TODO - need more info, feature bits in l2_input.h
1003 @param client_index - opaque cookie to identify the sender
1004 @param context - sender context, to match reply w/ request
1005 @param sw_if_index - interface
1006 @param is_set - if non-zero, set the bits, else clear them
1007 @param feature_bitmap - non-zero bits to set or clear
1018 /** \brief Set L2 bits response
1019 @param context - sender context, to match reply w/ request
1020 @param retval - return code for the set l2 bits request
1022 define l2_flags_reply
1026 u32 resulting_feature_bitmap;
1029 /** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD,
1030 L2_UU_FLOOD, or L2_ARP_TERM) request
1031 @param client_index - opaque cookie to identify the sender
1032 @param context - sender context, to match reply w/ request
1033 @param bd_id - the bridge domain to set the flags for
1034 @param is_set - if non-zero, set the flags, else clear them
1035 @param feature_bitmap - bits that are non-zero to set or clear
1046 /** \brief Set bridge flags response
1047 @param context - sender context, to match reply w/ request
1048 @param retval - return code for the set bridge flags request
1049 @param resulting_feature_bitmap - the feature bitmap value after the request is implemented
1051 define bridge_flags_reply
1055 u32 resulting_feature_bitmap;
1058 /** \brief Set bridge domain ip to mac entry request
1059 @param client_index - opaque cookie to identify the sender
1060 @param context - sender context, to match reply w/ request
1061 @param bd_id - the bridge domain to set the flags for
1062 @param is_add - if non-zero, add the entry, else clear it
1063 @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
1064 @param mac_address - MAC address
1067 define bd_ip_mac_add_del
1078 /** \brief Set bridge domain ip to mac entry response
1079 @param context - sender context, to match reply w/ request
1080 @param retval - return code for the set bridge flags request
1082 define bd_ip_mac_add_del_reply
1088 /** \brief Add/Delete classification table request
1089 @param client_index - opaque cookie to identify the sender
1090 @param context - sender context, to match reply w/ request
1091 @param is_add- if non-zero add the table, else delete it
1092 @param del_chain - if non-zero delete the whole chain of tables
1093 @param table_index - if add, reuturns index of the created table, else specifies the table to delete
1094 @param nbuckets - number of buckets when adding a table
1095 @param memory_size - memory size when adding a table
1096 @param match_n_vectors - number of match vectors
1097 @param next_table_index - index of next table
1098 @param miss_next_index - index of miss table
1099 @param current_data_flag - option to use current node's packet payload
1100 as the starting point from where packets are classified,
1101 This option is only valid for L2/L3 input ACL for now.
1102 0: by default, classify data from the buffer's start location
1103 1: classify packets from VPP node’s current data pointer
1104 @param current_data_offset - a signed value to shift the start location of
1105 the packet to be classified
1106 For example, if input IP ACL node is used, L2 header’s first byte
1107 can be accessible by configuring current_data_offset to -14
1108 if there is no vlan tag.
1109 This is valid only if current_data_flag is set to 1.
1110 @param mask[] - match mask
1112 define classify_add_del_table
1122 u32 match_n_vectors;
1123 u32 next_table_index;
1124 u32 miss_next_index;
1125 u32 current_data_flag;
1126 i32 current_data_offset;
1130 /** \brief Add/Delete classification table response
1131 @param context - sender context, to match reply w/ request
1132 @param retval - return code for the table add/del requst
1133 @param new_table_index - for add, returned index of the new table
1134 @param skip_n_vectors - for add, returned value of skip_n_vectors in table
1135 @param match_n_vectors -for add, returned value of match_n_vectors in table
1137 define classify_add_del_table_reply
1141 u32 new_table_index;
1143 u32 match_n_vectors;
1146 /** \brief Classify add / del session request
1147 @param client_index - opaque cookie to identify the sender
1148 @param context - sender context, to match reply w/ request
1149 @param is_add - add session if non-zero, else delete
1150 @param table_index - index of the table to add/del the session, required
1151 @param hit_next_index - for add, hit_next_index of new session, required
1152 @param opaque_index - for add, opaque_index of new session
1153 @param advance -for add, advance value for session
1155 0: no action (by default)
1156 metadata is not used.
1157 1: Classified IP packets will be looked up from the
1158 specified ipv4 fib table (configured by metadata as VRF id).
1159 Only valid for L3 input ACL node
1160 2: Classified IP packets will be looked up from the
1161 specified ipv6 fib table (configured by metadata as VRF id).
1162 Only valid for L3 input ACL node
1163 @param metadata - valid only if action != 0
1164 VRF id if action is 1 or 2.
1165 @param match[] - for add, match value for session, required
1167 define classify_add_del_session
1181 /** \brief Classify add / del session response
1182 @param context - sender context, to match reply w/ request
1183 @param retval - return code for the add/del session request
1185 define classify_add_del_session_reply
1191 /** \brief Set/unset the classification table for an interface request
1192 @param client_index - opaque cookie to identify the sender
1193 @param context - sender context, to match reply w/ request
1194 @param is_ipv6 - ipv6 if non-zero, else ipv4
1195 @param sw_if_index - interface to associate with the table
1196 @param table_index - index of the table, if ~0 unset the table
1198 define classify_set_interface_ip_table
1204 u32 table_index; /* ~0 => off */
1207 /** \brief Set/unset interface classification table response
1208 @param context - sender context, to match reply w/ request
1209 @param retval - return code
1211 define classify_set_interface_ip_table_reply
1217 /** \brief Set/unset l2 classification tables for an interface request
1218 @param client_index - opaque cookie to identify the sender
1219 @param context - sender context, to match reply w/ request
1220 @param sw_if_index - interface to set/unset tables for
1221 @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
1222 @param ip6_table_index - ip6 index
1223 @param other_table_index - other index
1225 define classify_set_interface_l2_tables
1231 u32 ip4_table_index;
1232 u32 ip6_table_index;
1233 u32 other_table_index;
1237 /** \brief Set/unset l2 classification tables for an interface response
1238 @param context - sender context, to match reply w/ request
1239 @param retval - return code for the request
1241 define classify_set_interface_l2_tables_reply
1247 /** \brief Get node index using name request
1248 @param client_index - opaque cookie to identify the sender
1249 @param context - sender context, to match reply w/ request
1250 @param node_name[] - name of the node
1252 define get_node_index
1259 /** \brief Get node index using name request
1260 @param context - sender context, to match reply w/ request
1261 @param retval - return code for the request
1262 @param node_index - index of the desired node if found, else ~0
1264 define get_node_index_reply
1271 /** \brief Set the next node for a given node request
1272 @param client_index - opaque cookie to identify the sender
1273 @param context - sender context, to match reply w/ request
1274 @param node_name[] - node to add the next node to
1275 @param next_name[] - node to add as the next node
1277 define add_node_next
1285 /** \brief IP Set the next node for a given node response
1286 @param context - sender context, to match reply w/ request
1287 @param retval - return code for the add next node request
1288 @param next_index - the index of the next node if success, else ~0
1290 define add_node_next_reply
1297 /** \brief DHCP Proxy config 2 add / del request
1298 @param client_index - opaque cookie to identify the sender
1299 @param context - sender context, to match reply w/ request
1300 @param rx_vrf_id - receive vrf id
1301 @param server_vrf_id - server vrf id
1302 @param if_ipv6 - ipv6 if non-zero, else ipv4
1303 @param is_add - add the config if non-zero, else delete
1304 @param insert_circuit_id - option82 suboption 1 fib number
1305 @param dhcp_server[] - server address
1306 @param dhcp_src_address[] - <fix this, need details>
1308 define dhcp_proxy_config_2
1316 u8 insert_circuit_id;
1318 u8 dhcp_src_address[16];
1321 /** \brief DHCP Proxy config 2 add / del response
1322 @param context - sender context, to match reply w/ request
1323 @param retval - return code for request
1325 define dhcp_proxy_config_2_reply
1331 /** \brief l2tpv3 tunnel interface create request
1332 @param client_index - opaque cookie to identify the sender
1333 @param context - sender context, to match reply w/ request
1334 @param client_address - remote client tunnel ip address
1335 @param client_address - local tunnel ip address
1336 @param is_ipv6 - ipv6 if non-zero, else ipv4
1337 @param local_session_id - local tunnel session id
1338 @param remote_session_id - remote tunnel session id
1339 @param local_cookie - local tunnel cookie
1340 @param l2_sublayer_present - l2 sublayer is present in packets if non-zero
1341 @param encap_vrf_id - fib identifier used for outgoing encapsulated packets
1343 define l2tpv3_create_tunnel
1347 u8 client_address[16];
1350 u32 local_session_id;
1351 u32 remote_session_id;
1354 u8 l2_sublayer_present;
1358 /** \brief l2tpv3 tunnel interface create response
1359 @param context - sender context, to match reply w/ request
1360 @param retval - return code for the request
1361 @param sw_if_index - index of the new tunnel interface
1363 define l2tpv3_create_tunnel_reply
1370 define l2tpv3_set_tunnel_cookies
1375 u64 new_local_cookie;
1376 u64 new_remote_cookie;
1379 /** \brief L2TP tunnel set cookies response
1380 @param context - sender context, to match reply w/ request
1381 @param retval - return code for the request
1383 define l2tpv3_set_tunnel_cookies_reply
1389 define sw_if_l2tpv3_tunnel_details
1393 u8 interface_name[64];
1394 u8 client_address[16];
1396 u32 local_session_id;
1397 u32 remote_session_id;
1398 u64 local_cookie[2];
1400 u8 l2_sublayer_present;
1403 define sw_if_l2tpv3_tunnel_dump
1409 /** \brief L2 fib clear table request, clear all mac entries in the l2 fib
1410 @param client_index - opaque cookie to identify the sender
1411 @param context - sender context, to match reply w/ request
1413 define l2_fib_clear_table
1419 /** \brief L2 fib clear table response
1420 @param context - sender context, to match reply w/ request
1421 @param retval - return code for the request
1423 define l2_fib_clear_table_reply
1429 /** \brief L2 interface ethernet flow point filtering enable/disable request
1430 @param client_index - opaque cookie to identify the sender
1431 @param context - sender context, to match reply w/ request
1432 @param sw_if_index - interface to enable/disable filtering on
1433 @param enable_disable - if non-zero enable filtering, else disable
1435 define l2_interface_efp_filter
1443 /** \brief L2 interface ethernet flow point filtering response
1444 @param context - sender context, to match reply w/ request
1445 @param retval - return code for the request
1447 define l2_interface_efp_filter_reply
1453 define l2tpv3_interface_enable_disable
1461 define l2tpv3_interface_enable_disable_reply
1467 define l2tpv3_set_lookup_key
1471 /* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */
1475 define l2tpv3_set_lookup_key_reply
1481 /** \brief L2 interface vlan tag rewrite configure request
1482 @param client_index - opaque cookie to identify the sender
1483 @param context - sender context, to match reply w/ request
1484 @param sw_if_index - interface the operation is applied to
1485 @param vtr_op - Choose from l2_vtr_op_t enum values
1486 @param push_dot1q - first pushed flag dot1q id set, else dot1ad
1487 @param tag1 - Needed for any push or translate vtr op
1488 @param tag2 - Needed for any push 2 or translate x-2 vtr ops
1490 define l2_interface_vlan_tag_rewrite
1496 u32 push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
1497 u32 tag1; // first pushed tag
1498 u32 tag2; // second pushed tag
1501 /** \brief L2 interface vlan tag rewrite response
1502 @param context - sender context, to match reply w/ request
1503 @param retval - return code for the request
1505 define l2_interface_vlan_tag_rewrite_reply
1518 /* These fields map directly onto the subif template */
1522 u8 dot1ad; // 0 = dot1q, 1=dot1ad
1525 u8 outer_vlan_id_any;
1526 u8 inner_vlan_id_any;
1531 define create_subif_reply
1538 /** \brief show version
1539 @param client_index - opaque cookie to identify the sender
1540 @param context - sender context, to match reply w/ request
1548 /** \brief show version response
1549 @param context - sender context, to match reply w/ request
1550 @param retval - return code for the request
1551 @param program - name of the program (vpe)
1552 @param version - version of the program
1553 @param build_directory - root of the workspace where the program was built
1555 define show_version_reply
1562 u8 build_directory[256];
1565 /** \brief l2 fib table entry structure
1566 @param bd_id - the l2 fib / bridge domain table id
1567 @param mac - the entry's mac address
1568 @param sw_if_index - index of the interface
1569 @param static_mac - the entry is statically configured.
1570 @param filter_mac - the entry is a mac filter entry.
1571 @param bvi_mac - the mac address is a bridge virtual interface
1573 define l2_fib_table_entry
1584 /** \brief Dump l2 fib (aka bridge domain) table
1585 @param client_index - opaque cookie to identify the sender
1586 @param bd_id - the l2 fib / bridge domain table identifier
1588 define l2_fib_table_dump
1595 /** \brief add or delete locator_set
1596 @param client_index - opaque cookie to identify the sender
1597 @param context - sender context, to match reply w/ request
1598 @param is_add - add address if non-zero, else delete
1599 @param locator_set_name - locator name
1600 @param locator_num - number of locators
1601 @param locators - LISP locator records
1602 Structure of one locator record is as follows:
1610 define lisp_add_del_locator_set
1615 u8 locator_set_name[64];
1620 /** \brief Reply for locator_set add/del
1621 @param context - returned sender context, to match reply w/ request
1622 @param retval - return code
1623 @param ls_index - locator set index
1625 define lisp_add_del_locator_set_reply
1632 /** \brief add or delete locator for locator_set
1633 @param client_index - opaque cookie to identify the sender
1634 @param context - sender context, to match reply w/ request
1635 @param is_add - add address if non-zero, else delete
1636 @param locator_set_name - name of locator_set to add/del locator
1637 @param sw_if_index - index of the interface
1638 @param priority - priority of the lisp locator
1639 @param weight - weight of the lisp locator
1641 define lisp_add_del_locator
1646 u8 locator_set_name[64];
1652 /** \brief Reply for locator add/del
1653 @param context - returned sender context, to match reply w/ request
1654 @param retval - return code
1656 define lisp_add_del_locator_reply
1662 /** \brief add or delete lisp eid-table
1663 @param client_index - opaque cookie to identify the sender
1664 @param context - sender context, to match reply w/ request
1665 @param is_add - add address if non-zero, else delete
1670 @param eid - EID can be ip4, ip6 or mac
1671 @param prefix_len - prefix len
1672 @param locator_set_name - name of locator_set to add/del eid-table
1673 @param vni - virtual network instance
1678 @param key - secret key
1680 define lisp_add_del_local_eid
1688 u8 locator_set_name[64];
1694 /** \brief Reply for local_eid add/del
1695 @param context - returned sender context, to match reply w/ request
1696 @param retval - return code
1698 define lisp_add_del_local_eid_reply
1704 /** \brief add or delete lisp gpe tunnel
1705 @param client_index - opaque cookie to identify the sender
1706 @param context - sender context, to match reply w/ request
1707 @param is_add - add address if non-zero, else delete
1712 @param rmt_eid - remote eid
1713 @param lcl_eid - local eid
1714 @param rmt_len - remote prefix len
1715 @param lcl_len - local prefix len
1716 @param vni - virtual network identifier
1717 @param dp_table - vrf/bridge domain id
1718 @param loc_num - number of locators
1719 @param lcl_locs - array of local locators
1720 @param rmt_locs - array of remote locators
1721 @param action - negative action when 0 locators configured
1723 define lisp_gpe_add_del_fwd_entry
1736 u8 lcl_locs[loc_num];
1737 u8 rmt_locs[loc_num];
1741 /** \brief Reply for gpe_fwd_entry add/del
1742 @param context - returned sender context, to match reply w/ request
1743 @param retval - return code
1745 define lisp_gpe_add_del_fwd_entry_reply
1751 /** \brief Add/delete map server
1752 @param client_index - opaque cookie to identify the sender
1753 @param context - sender context, to match reply w/ request
1754 @param is_add - add address if non-zero; delete otherwise
1755 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
1756 @param ip_address - map server IP address
1758 define lisp_add_del_map_server
1767 /** \brief Reply for lisp_add_del_map_server
1768 @param context - returned sender context, to match reply w/ request
1769 @param retval - return code
1771 define lisp_add_del_map_server_reply
1777 /** \brief add or delete map-resolver
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 is_ipv6 - if non-zero the address is ipv6, else ipv4
1782 @param ip_address - array of address bytes
1784 define lisp_add_del_map_resolver
1793 /** \brief Reply for map_resolver add/del
1794 @param context - returned sender context, to match reply w/ request
1795 @param retval - return code
1797 define lisp_add_del_map_resolver_reply
1803 /** \brief enable or disable lisp-gpe protocol
1804 @param client_index - opaque cookie to identify the sender
1805 @param context - sender context, to match reply w/ request
1806 @param is_en - enable protocol if non-zero, else disable
1808 define lisp_gpe_enable_disable
1815 /** \brief Reply for gpe enable/disable
1816 @param context - returned sender context, to match reply w/ request
1817 @param retval - return code
1819 define lisp_gpe_enable_disable_reply
1825 /** \brief enable or disable LISP feature
1826 @param client_index - opaque cookie to identify the sender
1827 @param context - sender context, to match reply w/ request
1828 @param is_en - enable protocol if non-zero, else disable
1830 define lisp_enable_disable
1837 /** \brief Reply for gpe enable/disable
1838 @param context - returned sender context, to match reply w/ request
1839 @param retval - return code
1841 define lisp_enable_disable_reply
1847 /** \brief add or delete gpe_iface
1848 @param client_index - opaque cookie to identify the sender
1849 @param context - sender context, to match reply w/ request
1850 @param is_add - add address if non-zero, else delete
1852 define lisp_gpe_add_del_iface
1862 /** \brief Reply for gpe_iface add/del
1863 @param context - returned sender context, to match reply w/ request
1864 @param retval - return code
1866 define lisp_gpe_add_del_iface_reply
1872 /** \brief configure or disable LISP PITR node
1873 @param client_index - opaque cookie to identify the sender
1874 @param context - sender context, to match reply w/ request
1875 @param ls_name - locator set name
1876 @param is_add - add locator set if non-zero, else disable pitr
1878 define lisp_pitr_set_locator_set
1886 /** \brief Reply for lisp_pitr_set_locator_set
1887 @param context - returned sender context, to match reply w/ request
1888 @param retval - return code
1890 define lisp_pitr_set_locator_set_reply
1896 /** \brief Get state of LISP RLOC probing
1897 @param client_index - opaque cookie to identify the sender
1898 @param context - sender context, to match reply w/ request
1900 define show_lisp_rloc_probe_state
1906 /** \brief Reply for show_lisp_rloc_probe_state
1907 @param context - returned sender context, to match reply w/ request
1908 @param retval - return code
1909 @param is_enabled - state of RLOC probing
1911 define show_lisp_rloc_probe_state_reply
1918 /** \brief enable/disable LISP RLOC probing
1919 @param client_index - opaque cookie to identify the sender
1920 @param context - sender context, to match reply w/ request
1921 @param is_enable - enable if non-zero; disable otherwise
1923 define lisp_rloc_probe_enable_disable
1930 /** \brief Reply for lisp_rloc_probe_enable_disable
1931 @param context - returned sender context, to match reply w/ request
1932 @param retval - return code
1934 define lisp_rloc_probe_enable_disable_reply
1940 /** \brief enable/disable LISP map-register
1941 @param client_index - opaque cookie to identify the sender
1942 @param context - sender context, to match reply w/ request
1943 @param is_enable - enable if non-zero; disable otherwise
1945 define lisp_map_register_enable_disable
1952 /** \brief Reply for lisp_map_register_enable_disable
1953 @param context - returned sender context, to match reply w/ request
1954 @param retval - return code
1956 define lisp_map_register_enable_disable_reply
1962 /** \brief Get state of LISP map-register
1963 @param client_index - opaque cookie to identify the sender
1964 @param context - sender context, to match reply w/ request
1966 define show_lisp_map_register_state
1972 /** \brief Reply for show_lisp_map_register_state
1973 @param context - returned sender context, to match reply w/ request
1974 @param retval - return code
1976 define show_lisp_map_register_state_reply
1983 /** \brief set LISP map-request mode. Based on configuration VPP will send
1984 src/dest or just normal destination map requests.
1985 @param client_index - opaque cookie to identify the sender
1986 @param context - sender context, to match reply w/ request
1987 @param mode - new map-request mode. Supported values are:
1988 0 - destination only
1989 1 - source/destaination
1991 define lisp_map_request_mode
1998 /** \brief Reply for lisp_map_request_mode
1999 @param context - returned sender context, to match reply w/ request
2000 @param retval - return code
2002 define lisp_map_request_mode_reply
2008 /** \brief Request for LISP map-request mode
2009 @param client_index - opaque cookie to identify the sender
2010 @param context - sender context, to match reply w/ request
2012 define show_lisp_map_request_mode
2018 /** \brief Reply for show_lisp_map_request_mode
2019 @param context - returned sender context, to match reply w/ request
2020 @param retval - return code
2021 @param mode - map-request mode
2023 define show_lisp_map_request_mode_reply
2030 /** \brief add or delete remote static mapping
2031 @param client_index - opaque cookie to identify the sender
2032 @param context - sender context, to match reply w/ request
2033 @param is_add - add address if non-zero, else delete
2034 @param is_src_dst - flag indicating src/dst based routing policy
2035 @param del_all - if set, delete all remote mappings
2036 @param vni - virtual network instance
2037 @param action - negative map-reply action
2042 @param deid - dst EID
2043 @param seid - src EID, valid only if is_src_dst is enabled
2044 @param rloc_num - number of remote locators
2045 @param rlocs - remote locator records
2046 Structure of remote locator:
2055 define lisp_add_del_remote_mapping
2073 /** \brief Reply for lisp_add_del_remote_mapping
2074 @param context - returned sender context, to match reply w/ request
2075 @param retval - return code
2077 define lisp_add_del_remote_mapping_reply
2083 /** \brief add or delete LISP adjacency adjacency
2084 @param client_index - opaque cookie to identify the sender
2085 @param context - sender context, to match reply w/ request
2086 @param is_add - add address if non-zero, else delete
2087 @param vni - virtual network instance
2092 @param reid - remote EID
2093 @param leid - local EID
2095 define lisp_add_del_adjacency
2108 /** \brief Reply for lisp_add_del_adjacency
2109 @param context - returned sender context, to match reply w/ request
2110 @param retval - return code
2112 define lisp_add_del_adjacency_reply
2118 /** \brief add or delete map request itr rlocs
2119 @param client_index - opaque cookie to identify the sender
2120 @param context - sender context, to match reply w/ request
2121 @param is_add - add address if non-zero, else delete
2122 @param locator_set_name - locator set name
2124 define lisp_add_del_map_request_itr_rlocs
2129 u8 locator_set_name[64];
2132 /** \brief Reply for lisp_add_del_map_request_itr_rlocs
2133 @param context - returned sender context, to match reply w/ request
2134 @param retval - return code
2137 define lisp_add_del_map_request_itr_rlocs_reply
2143 /** \brief map/unmap vni/bd_index to vrf
2144 @param client_index - opaque cookie to identify the sender
2145 @param context - sender context, to match reply w/ request
2146 @param is_add - add or delete mapping
2147 @param dp_table - virtual network id/bridge domain index
2150 define lisp_eid_table_add_del_map
2160 /** \brief Reply for lisp_eid_table_add_del_map
2161 @param context - returned sender context, to match reply w/ request
2162 @param retval - return code
2164 define lisp_eid_table_add_del_map_reply
2170 /** \brief Request for map lisp locator status
2171 @param client_index - opaque cookie to identify the sender
2172 @param context - sender context, to match reply w/ request
2173 @param locator_set_index - index of locator_set
2174 @param ls_name - locator set name
2175 @param is_index_set - flag indicating whether ls_name or ls_index is set
2177 define lisp_locator_dump
2186 /** \brief LISP locator_set status
2187 @param local - if is set, then locator is local
2188 @param locator_set_name - name of the locator_set
2189 @param sw_if_index - sw_if_index of the locator
2190 @param priority - locator priority
2191 @param weight - locator weight
2193 define lisp_locator_details
2204 /** \brief LISP locator_set status
2205 @param context - sender context, to match reply w/ request
2206 @param ls_index - locator set index
2207 @param ls_name - name of the locator set
2209 define lisp_locator_set_details
2216 /** \brief Request for locator_set summary status
2217 @param client_index - opaque cookie to identify the sender
2218 @param context - sender context, to match reply w/ request
2219 @param filter - filter type
2222 1: local locator sets
2223 2: remote locator sets
2225 define lisp_locator_set_dump
2232 /** \brief Dump lisp eid-table
2233 @param client_index - opaque cookie to identify the sender
2234 @param context - sender context, to match reply w/ request
2235 @param locator_set_index - index of locator_set, if ~0 then the mapping
2237 @param action - negative map request action
2238 @param is_local - local if non-zero, else remote
2243 @param is_src_dst - EID is type of source/destination
2244 @param eid - EID can be ip4, ip6 or mac
2245 @param eid_prefix_len - prefix length
2246 @param seid - source EID can be ip4, ip6 or mac
2247 @param seid_prefix_len - source prefix length
2248 @param vni - virtual network instance
2249 @param ttl - time to live
2250 @param authoritative - authoritative
2255 @param key - secret key
2258 define lisp_eid_table_details
2261 u32 locator_set_index;
2277 /** \brief Request for eid table summary status
2278 @param client_index - opaque cookie to identify the sender
2279 @param context - sender context, to match reply w/ request
2280 @param eid_set - if non-zero request info about specific mapping
2281 @param vni - virtual network instance; valid only if eid_set != 0
2282 @param prefix_length - prefix length if EID is IP address;
2283 valid only if eid_set != 0
2284 @param eid_type - EID type; valid only if eid_set != 0
2288 2: EID is ethernet address
2289 @param eid - endpoint identifier
2290 @param filter - filter type;
2296 define lisp_eid_table_dump
2308 /** \brief LISP adjacency
2313 @param reid - remote EID
2314 @param leid - local EID
2315 @param reid_prefix_len - remote EID IP prefix length
2316 @param leid_prefix_len - local EID IP prefix length
2318 typeonly manual_print manual_endian define lisp_adjacency
2327 /** \brief LISP adjacency reply
2328 @param count - number of adjacencies
2329 @param adjacencies - array of adjacencies
2331 manual_endian manual_print define lisp_adjacencies_get_reply
2336 vl_api_lisp_adjacency_t adjacencies[count];
2339 /** \brief Request for LISP adjacencies
2340 @param client_index - opaque cookie to identify the sender
2341 @param context - sender context, to match reply w/ request
2342 @param vni - filter adjacencies by VNI
2344 define lisp_adjacencies_get
2351 /** \brief Shows relationship between vni and vrf/bd
2352 @param dp_table - VRF index or bridge domain index
2353 @param vni - vitual network instance
2355 define lisp_eid_table_map_details
2362 /** \brief Request for lisp_eid_table_map_details
2363 @param client_index - opaque cookie to identify the sender
2364 @param context - sender context, to match reply w/ request
2365 @param is_l2 - if set dump vni/bd mappings else vni/vrf
2367 define lisp_eid_table_map_dump
2374 /** \brief Dumps all VNIs used in mappings
2375 @param client_index - opaque cookie to identify the sender
2376 @param context - sender context, to match reply w/ request
2378 define lisp_eid_table_vni_dump
2384 /** \brief reply to lisp_eid_table_vni_dump
2385 @param client_index - opaque cookie to identify the sender
2386 @param context - sender context, to match reply w/ request
2387 @param vni - virtual network instance
2389 define lisp_eid_table_vni_details
2396 define lisp_gpe_tunnel_details
2402 u8 destination_ip[16];
2414 /** \brief Request for gpe tunnel summary status
2415 @param client_index - opaque cookie to identify the sender
2416 @param context - sender context, to match reply w/ request
2418 define lisp_gpe_tunnel_dump
2424 /** \brief LISP map resolver status
2425 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2426 @param ip_address - array of address bytes
2428 define lisp_map_resolver_details
2435 /** \brief Request for map resolver summary status
2436 @param client_index - opaque cookie to identify the sender
2437 @param context - sender context, to match reply w/ request
2439 define lisp_map_resolver_dump
2445 /** \brief LISP map server details
2446 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2447 @param ip_address - array of address bytes
2449 define lisp_map_server_details
2456 /** \brief Request for map server summary status
2457 @param client_index - opaque cookie to identify the sender
2458 @param context - sender context, to match reply w/ request
2460 define lisp_map_server_dump
2466 /** \brief Request for lisp-gpe protocol status
2467 @param client_index - opaque cookie to identify the sender
2468 @param context - sender context, to match reply w/ request
2470 define show_lisp_status
2476 /** \brief Status of lisp, enable or disable
2477 @param context - sender context, to match reply w/ request
2478 @param feature_status - lisp enable if non-zero, else disable
2479 @param gpe_status - lisp enable if non-zero, else disable
2481 define show_lisp_status_reply
2489 /** \brief Get LISP map request itr rlocs status
2490 @param context - sender context, to match reply w/ request
2491 @param locator_set_name - name of the locator_set
2493 define lisp_get_map_request_itr_rlocs
2499 /** \brief Request for map request itr rlocs summary status
2501 define lisp_get_map_request_itr_rlocs_reply
2505 u8 locator_set_name[64];
2508 /** \brief Request for lisp pitr status
2509 @param client_index - opaque cookie to identify the sender
2510 @param context - sender context, to match reply w/ request
2512 define show_lisp_pitr
2518 /** \brief Status of lisp pitr, enable or disable
2519 @param context - sender context, to match reply w/ request
2520 @param status - lisp pitr enable if non-zero, else disable
2521 @param locator_set_name - name of the locator_set
2523 define show_lisp_pitr_reply
2528 u8 locator_set_name[64];
2531 /* Gross kludge, DGMS */
2532 define interface_name_renumber
2537 u32 new_show_dev_instance;
2540 define interface_name_renumber_reply
2546 /** \brief Register for ip4 arp resolution events
2547 @param client_index - opaque cookie to identify the sender
2548 @param context - sender context, to match reply w/ request
2549 @param enable_disable - 1 => register for events, 0 => cancel registration
2550 @param pid - sender's pid
2551 @param address - the exact ip4 address of interest
2553 define want_ip4_arp_events
2562 /** \brief Reply for interface events registration
2563 @param context - returned sender context, to match reply w/ request
2564 @param retval - return code
2566 define want_ip4_arp_events_reply
2572 /** \brief Tell client about an ip4 arp resolution event
2573 @param client_index - opaque cookie to identify the sender
2574 @param context - sender context, to match reply w/ request
2575 @param address - the exact ip4 address of interest
2576 @param pid - client pid registered to receive notification
2577 @param sw_if_index - interface which received ARP packet
2578 @param new_mac - the new mac address
2579 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
2581 define ip4_arp_event
2592 /** \brief Register for ip6 nd resolution events
2593 @param client_index - opaque cookie to identify the sender
2594 @param context - sender context, to match reply w/ request
2595 @param enable_disable - 1 => register for events, 0 => cancel registration
2596 @param pid - sender's pid
2597 @param address - the exact ip6 address of interest
2599 define want_ip6_nd_events
2608 /** \brief Reply for ip6 nd resolution events registration
2609 @param context - returned sender context, to match reply w/ request
2610 @param retval - return code
2612 define want_ip6_nd_events_reply
2618 /** \brief Tell client about an ip6 nd resolution or mac/ip event
2619 @param client_index - opaque cookie to identify the sender
2620 @param context - sender context, to match reply w/ request
2621 @param pid - client pid registered to receive notification
2622 @param sw_if_index - interface which received ARP packet
2623 @param address - the exact ip6 address of interest
2624 @param new_mac - the new mac address
2625 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
2638 /** \brief L2 bridge domain add or delete request
2639 @param client_index - opaque cookie to identify the sender
2640 @param context - sender context, to match reply w/ request
2641 @param bd_id - the bridge domain to create
2642 @param flood - enable/disable bcast/mcast flooding in the bd
2643 @param uu_flood - enable/disable uknown unicast flood in the bd
2644 @param forward - enable/disable forwarding on all interfaces in the bd
2645 @param learn - enable/disable learning on all interfaces in the bd
2646 @param arp_term - enable/disable arp termination in the bd
2647 @param mac_age - mac aging time in min, 0 for disabled
2648 @param is_add - add or delete flag
2650 define bridge_domain_add_del
2664 /** \brief L2 bridge domain add or delete response
2665 @param context - sender context, to match reply w/ request
2666 @param retval - return code for the set bridge flags request
2668 define bridge_domain_add_del_reply
2674 /** \brief L2 bridge domain request operational state details
2675 @param client_index - opaque cookie to identify the sender
2676 @param context - sender context, to match reply w/ request
2677 @param bd_id - the bridge domain id desired or ~0 to request all bds
2679 define bridge_domain_dump
2686 /** \brief L2 bridge domain operational state response
2687 @param bd_id - the bridge domain id
2688 @param flood - bcast/mcast flooding state on all interfaces in the bd
2689 @param uu_flood - uknown unicast flooding state on all interfaces in the bd
2690 @param forward - forwarding state on all interfaces in the bd
2691 @param learn - learning state on all interfaces in the bd
2692 @param arp_term - arp termination state on all interfaces in the bd
2693 @param mac_age - mac aging time in min, 0 for disabled
2694 @param n_sw_ifs - number of sw_if_index's in the domain
2696 define bridge_domain_details
2706 u32 bvi_sw_if_index;
2710 /** \brief L2 bridge domain sw interface operational state response
2711 @param bd_id - the bridge domain id
2712 @param sw_if_index - sw_if_index in the domain
2713 @param shg - split horizon group for the interface
2715 define bridge_domain_sw_if_details
2723 /** \brief DHCP Client config add / del request
2724 @param client_index - opaque cookie to identify the sender
2725 @param context - sender context, to match reply w/ request
2726 @param sw_if_index - index of the interface for DHCP client
2727 @param hostname - hostname
2728 @param is_add - add the config if non-zero, else delete
2729 @param want_dhcp_event - DHCP event sent to the sender
2730 via dhcp_compl_event API message if non-zero
2731 @param pid - sender's pid
2733 define dhcp_client_config
2744 /** \brief DHCP Client config response
2745 @param context - sender context, to match reply w/ request
2746 @param retval - return code for the request
2748 define dhcp_client_config_reply
2754 /** \brief Set/unset input ACL interface
2755 @param client_index - opaque cookie to identify the sender
2756 @param context - sender context, to match reply w/ request
2757 @param sw_if_index - interface to set/unset input ACL
2758 @param ip4_table_index - ip4 classify table index (~0 for skip)
2759 @param ip6_table_index - ip6 classify table index (~0 for skip)
2760 @param l2_table_index - l2 classify table index (~0 for skip)
2761 @param is_add - Set input ACL if non-zero, else unset
2762 Note: User is recommeneded to use just one valid table_index per call.
2763 (ip4_table_index, ip6_table_index, or l2_table_index)
2765 define input_acl_set_interface
2770 u32 ip4_table_index;
2771 u32 ip6_table_index;
2776 /** \brief Set/unset input ACL interface response
2777 @param context - sender context, to match reply w/ request
2778 @param retval - return code for the request
2780 define input_acl_set_interface_reply
2786 /** \brief IPsec: Add/delete Security Policy Database
2787 @param client_index - opaque cookie to identify the sender
2788 @param context - sender context, to match reply w/ request
2789 @param is_add - add SPD if non-zero, else delete
2790 @param spd_id - SPD instance id (control plane allocated)
2793 define ipsec_spd_add_del
2801 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
2802 @param context - returned sender context, to match reply w/ request
2803 @param retval - return code
2806 define ipsec_spd_add_del_reply
2812 /** \brief IPsec: Add/delete SPD from interface
2814 @param client_index - opaque cookie to identify the sender
2815 @param context - sender context, to match reply w/ request
2816 @param is_add - add security mode if non-zero, else delete
2817 @param sw_if_index - index of the interface
2818 @param spd_id - SPD instance id to use for lookups
2822 define ipsec_interface_add_del_spd
2832 /** \brief Reply for IPsec: Add/delete SPD from interface
2833 @param context - returned sender context, to match reply w/ request
2834 @param retval - return code
2837 define ipsec_interface_add_del_spd_reply
2843 /** \brief IPsec: Add/delete Security Policy Database entry
2845 See RFC 4301, 4.4.1.1 on how to match packet to selectors
2847 @param client_index - opaque cookie to identify the sender
2848 @param context - sender context, to match reply w/ request
2849 @param is_add - add SPD if non-zero, else delete
2850 @param spd_id - SPD instance id (control plane allocated)
2851 @param priority - priority of SPD entry (non-unique value). Used to order SPD matching - higher priorities match before lower
2852 @param is_outbound - entry applies to outbound traffic if non-zero, otherwise applies to inbound traffic
2853 @param is_ipv6 - remote/local address are IPv6 if non-zero, else IPv4
2854 @param remote_address_start - start of remote address range to match
2855 @param remote_address_stop - end of remote address range to match
2856 @param local_address_start - start of local address range to match
2857 @param local_address_stop - end of local address range to match
2858 @param protocol - protocol type to match [0 means any]
2859 @param remote_port_start - start of remote port range to match ...
2860 @param remote_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
2861 @param local_port_start - start of local port range to match ...
2862 @param local_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
2863 @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)
2864 @param sa_id - SAD instance id (control plane allocated)
2868 define ipsec_spd_add_del_entry
2881 u8 remote_address_start[16];
2882 u8 remote_address_stop[16];
2883 u8 local_address_start[16];
2884 u8 local_address_stop[16];
2888 u16 remote_port_start;
2889 u16 remote_port_stop;
2890 u16 local_port_start;
2891 u16 local_port_stop;
2898 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
2899 @param context - returned sender context, to match reply w/ request
2900 @param retval - return code
2903 define ipsec_spd_add_del_entry_reply
2909 /** \brief IPsec: Add/delete Security Association Database entry
2910 @param client_index - opaque cookie to identify the sender
2911 @param context - sender context, to match reply w/ request
2912 @param is_add - add SAD entry if non-zero, else delete
2914 @param sad_id - sad id
2916 @param spi - security parameter index
2918 @param protocol - 0 = AH, 1 = ESP
2920 @param crypto_algorithm - 0 = Null, 1 = AES-CBC-128, 2 = AES-CBC-192, 3 = AES-CBC-256, 4 = 3DES-CBC
2921 @param crypto_key_length - length of crypto_key in bytes
2922 @param crypto_key - crypto keying material
2924 @param integrity_algorithm - 0 = None, 1 = MD5-96, 2 = SHA1-96, 3 = SHA-256, 4 = SHA-384, 5=SHA-512
2925 @param integrity_key_length - length of integrity_key in bytes
2926 @param integrity_key - integrity keying material
2928 @param use_extended_sequence_number - use ESN when non-zero
2930 @param is_tunnel - IPsec tunnel mode if non-zero, else transport mode
2931 @param is_tunnel_ipv6 - IPsec tunnel mode is IPv6 if non-zero, else IPv4 tunnel only valid if is_tunnel is non-zero
2932 @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
2933 @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
2937 IPsec tunnel address copy mode (to support GDOI)
2940 define ipsec_sad_add_del_entry
2952 u8 crypto_algorithm;
2953 u8 crypto_key_length;
2956 u8 integrity_algorithm;
2957 u8 integrity_key_length;
2958 u8 integrity_key[128];
2960 u8 use_extended_sequence_number;
2964 u8 tunnel_src_address[16];
2965 u8 tunnel_dst_address[16];
2968 /** \brief Reply for IPsec: Add/delete Security Association Database entry
2969 @param context - returned sender context, to match reply w/ request
2970 @param retval - return code
2973 define ipsec_sad_add_del_entry_reply
2979 /** \brief IPsec: Update Security Association keys
2980 @param client_index - opaque cookie to identify the sender
2981 @param context - sender context, to match reply w/ request
2983 @param sa_id - sa id
2985 @param crypto_key_length - length of crypto_key in bytes
2986 @param crypto_key - crypto keying material
2988 @param integrity_key_length - length of integrity_key in bytes
2989 @param integrity_key - integrity keying material
2992 define ipsec_sa_set_key
2999 u8 crypto_key_length;
3002 u8 integrity_key_length;
3003 u8 integrity_key[128];
3006 /** \brief Reply for IPsec: Update Security Association keys
3007 @param context - returned sender context, to match reply w/ request
3008 @param retval - return code
3011 define ipsec_sa_set_key_reply
3017 /** \brief IKEv2: Add/delete profile
3018 @param client_index - opaque cookie to identify the sender
3019 @param context - sender context, to match reply w/ request
3021 @param name - IKEv2 profile name
3022 @param is_add - Add IKEv2 profile if non-zero, else delete
3024 define ikev2_profile_add_del
3033 /** \brief Reply for IKEv2: Add/delete profile
3034 @param context - returned sender context, to match reply w/ request
3035 @param retval - return code
3037 define ikev2_profile_add_del_reply
3043 /** \brief IKEv2: Set IKEv2 profile authentication method
3044 @param client_index - opaque cookie to identify the sender
3045 @param context - sender context, to match reply w/ request
3047 @param name - IKEv2 profile name
3048 @param auth_method - IKEv2 authentication method (shared-key-mic/rsa-sig)
3049 @param is_hex - Authentication data in hex format if non-zero, else string
3050 @param data_len - Authentication data length
3051 @param data - Authentication data (for rsa-sig cert file path)
3053 define ikev2_profile_set_auth
3065 /** \brief Reply for IKEv2: Set IKEv2 profile authentication method
3066 @param context - returned sender context, to match reply w/ request
3067 @param retval - return code
3069 define ikev2_profile_set_auth_reply
3075 /** \brief IKEv2: Set IKEv2 profile local/remote identification
3076 @param client_index - opaque cookie to identify the sender
3077 @param context - sender context, to match reply w/ request
3079 @param name - IKEv2 profile name
3080 @param is_local - Identification is local if non-zero, else remote
3081 @param id_type - Identification type
3082 @param data_len - Identification data length
3083 @param data - Identification data
3085 define ikev2_profile_set_id
3097 /** \brief Reply for IKEv2:
3098 @param context - returned sender context, to match reply w/ request
3099 @param retval - return code
3101 define ikev2_profile_set_id_reply
3107 /** \brief IKEv2: Set IKEv2 profile traffic selector parameters
3108 @param client_index - opaque cookie to identify the sender
3109 @param context - sender context, to match reply w/ request
3111 @param name - IKEv2 profile name
3112 @param is_local - Traffic selector is local if non-zero, else remote
3113 @param proto - Traffic selector IP protocol (if zero not relevant)
3114 @param start_port - The smallest port number allowed by traffic selector
3115 @param end_port - The largest port number allowed by traffic selector
3116 @param start_addr - The smallest address included in traffic selector
3117 @param end_addr - The largest address included in traffic selector
3119 define ikev2_profile_set_ts
3133 /** \brief Reply for IKEv2: Set IKEv2 profile traffic selector parameters
3134 @param context - returned sender context, to match reply w/ request
3135 @param retval - return code
3137 define ikev2_profile_set_ts_reply
3143 /** \brief IKEv2: Set IKEv2 local RSA private key
3144 @param client_index - opaque cookie to identify the sender
3145 @param context - sender context, to match reply w/ request
3147 @param key_file - Key file absolute path
3149 define ikev2_set_local_key
3157 /** \brief Reply for IKEv2: Set IKEv2 local key
3158 @param context - returned sender context, to match reply w/ request
3159 @param retval - return code
3161 define ikev2_set_local_key_reply
3167 /** \brief Tell client about a DHCP completion event
3168 @param client_index - opaque cookie to identify the sender
3169 @param pid - client pid registered to receive notification
3170 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
3171 @param host_address - Host IP address
3172 @param router_address - Router IP address
3173 @param host_mac - Host MAC address
3175 define dhcp_compl_event
3181 u8 host_address[16];
3182 u8 router_address[16];
3186 /** \brief cop: enable/disable junk filtration features on an interface
3187 @param client_index - opaque cookie to identify the sender
3188 @param context - sender context, to match reply w/ request
3189 @param sw_if_inded - desired interface
3190 @param enable_disable - 1 => enable, 0 => disable
3193 define cop_interface_enable_disable
3201 /** \brief cop: interface enable/disable junk filtration reply
3202 @param context - returned sender context, to match reply w/ request
3203 @param retval - return code
3206 define cop_interface_enable_disable_reply
3212 /** \brief cop: enable/disable whitelist filtration features on an interface
3213 Note: the supplied fib_id must match in order to remove the feature!
3215 @param client_index - opaque cookie to identify the sender
3216 @param context - sender context, to match reply w/ request
3217 @param sw_if_index - interface handle, physical interfaces only
3218 @param fib_id - fib identifier for the whitelist / blacklist fib
3219 @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration
3220 @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration
3221 @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it
3224 define cop_whitelist_enable_disable
3235 /** \brief cop: interface enable/disable junk filtration reply
3236 @param context - returned sender context, to match reply w/ request
3237 @param retval - return code
3240 define cop_whitelist_enable_disable_reply
3246 /** \brief get_node_graph - get a copy of the vpp node graph
3247 including the current set of graph arcs.
3249 @param client_index - opaque cookie to identify the sender
3250 @param context - sender context, to match reply w/ request
3253 define get_node_graph
3259 /** \brief get_node_graph_reply
3260 @param context - returned sender context, to match reply w/ request
3261 @param retval - return code
3262 @param reply_in_shmem - result from vlib_node_serialize, in shared
3263 memory. Process with vlib_node_unserialize, remember to switch
3264 heaps and free the result.
3267 define get_node_graph_reply
3274 /** \brief IOAM enable : Enable in-band OAM
3275 @param id - profile id
3276 @param seqno - To enable Seqno Processing
3277 @param analyse - Enabling analysis of iOAM at decap node
3278 @param pow_enable - Proof of Work enabled or not flag
3279 @param trace_enable - iOAM Trace enabled or not flag
3293 /** \brief iOAM Trace profile add / del response
3294 @param context - sender context, to match reply w/ request
3295 @param retval - return value for request
3297 define ioam_enable_reply
3303 /** \brief iOAM disable
3304 @param client_index - opaque cookie to identify the sender
3305 @param context - sender context, to match reply w/ request
3306 @param index - MAP Domain index
3315 /** \brief iOAM disable response
3316 @param context - sender context, to match reply w/ request
3317 @param retval - return value for request
3319 define ioam_disable_reply
3325 /** \brief Add/del policer
3326 @param client_index - opaque cookie to identify the sender
3327 @param context - sender context, to match reply w/ request
3328 @param is_add - add policer if non-zero, else delete
3329 @param name - policer name
3332 @param cb - Committed Burst
3333 @param eb - Excess or Peak Burst
3334 @param rate_type - rate type
3335 @param round_type - rounding type
3336 @param type - policer algorithm
3337 @param color_aware - 0=color-blind, 1=color-aware
3338 @param conform_action_type - conform action type
3339 @param conform_dscp - DSCP for conform mar-and-transmit action
3340 @param exceed_action_type - exceed action type
3341 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3342 @param violate_action_type - violate action type
3343 @param violate_dscp - DSCP for violate mar-and-transmit action
3345 define policer_add_del
3360 u8 conform_action_type;
3362 u8 exceed_action_type;
3364 u8 violate_action_type;
3368 /** \brief Add/del policer response
3369 @param context - sender context, to match reply w/ request
3370 @param retval - return value for request
3371 @param policer_index - for add, returned index of the new policer
3373 define policer_add_del_reply
3380 /** \brief Get list of policers
3381 @param client_index - opaque cookie to identify the sender
3382 @param context - sender context, to match reply w/ request
3383 @param match_name_valid - if 0 request all policers otherwise use match_name
3384 @param match_name - policer name
3391 u8 match_name_valid;
3395 /** \brief Policer operational state response.
3396 @param context - sender context, to match reply w/ request
3397 @param name - policer name
3400 @param cb - Committed Burst
3401 @param eb - Excess or Peak Burst
3402 @param rate_type - rate type
3403 @param round_type - rounding type
3404 @param type - policer algorithm
3405 @param conform_action_type - conform action type
3406 @param conform_dscp - DSCP for conform mar-and-transmit action
3407 @param exceed_action_type - exceed action type
3408 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3409 @param violate_action_type - violate action type
3410 @param violate_dscp - DSCP for violate mar-and-transmit action
3411 @param single_rate - 1 = single rate policer, 0 = two rate policer
3412 @param color_aware - for hierarchical policing
3413 @param scale - power-of-2 shift amount for lower rates
3414 @param cir_tokens_per_period - number of tokens for each period
3415 @param pir_tokens_per_period - number of tokens for each period for 2-rate policer
3416 @param current_limit - current limit
3417 @param current_bucket - current bucket
3418 @param extended_limit - extended limit
3419 @param extended_bucket - extended bucket
3420 @param last_update_time - last update time
3422 define policer_details
3434 u8 conform_action_type;
3436 u8 exceed_action_type;
3438 u8 violate_action_type;
3443 u32 cir_tokens_per_period;
3444 u32 pir_tokens_per_period;
3448 u32 extended_bucket;
3449 u64 last_update_time;
3452 /** \brief Set/unset policer classify interface
3453 @param client_index - opaque cookie to identify the sender
3454 @param context - sender context, to match reply w/ request
3455 @param sw_if_index - interface to set/unset policer classify
3456 @param ip4_table_index - ip4 classify table index (~0 for skip)
3457 @param ip6_table_index - ip6 classify table index (~0 for skip)
3458 @param l2_table_index - l2 classify table index (~0 for skip)
3459 @param is_add - Set if non-zero, else unset
3460 Note: User is recommeneded to use just one valid table_index per call.
3461 (ip4_table_index, ip6_table_index, or l2_table_index)
3463 define policer_classify_set_interface
3468 u32 ip4_table_index;
3469 u32 ip6_table_index;
3474 /** \brief Set/unset policer classify interface response
3475 @param context - sender context, to match reply w/ request
3476 @param retval - return value for request
3478 define policer_classify_set_interface_reply
3484 /** \brief Get list of policer classify interfaces and tables
3485 @param client_index - opaque cookie to identify the sender
3486 @param context - sender context, to match reply w/ request
3487 @param type - classify table type
3489 define policer_classify_dump
3496 /** \brief Policer iclassify operational state response.
3497 @param context - sender context, to match reply w/ request
3498 @param sw_if_index - software interface index
3499 @param table_index - classify table index
3501 define policer_classify_details
3508 /** \brief Classify get table IDs request
3509 @param client_index - opaque cookie to identify the sender
3510 @param context - sender context, to match reply w/ request
3512 define classify_table_ids
3518 /** \brief Reply for classify get table IDs request
3519 @param context - sender context which was passed in the request
3520 @param count - number of ids returned in response
3521 @param ids - array of classify table ids
3523 define classify_table_ids_reply
3531 /** \brief Classify table ids by interface index request
3532 @param client_index - opaque cookie to identify the sender
3533 @param context - sender context, to match reply w/ request
3534 @param sw_if_index - index of the interface
3536 define classify_table_by_interface
3543 /** \brief Reply for classify table id by interface index request
3544 @param context - sender context which was passed in the request
3545 @param count - number of ids returned in response
3546 @param sw_if_index - index of the interface
3547 @param l2_table_id - l2 classify table index
3548 @param ip4_table_id - ip4 classify table index
3549 @param ip6_table_id - ip6 classify table index
3551 define classify_table_by_interface_reply
3561 /** \brief Classify table info
3562 @param client_index - opaque cookie to identify the sender
3563 @param context - sender context, to match reply w/ request
3564 @param table_id - classify table index
3566 define classify_table_info
3573 /** \brief Reply for classify table info request
3574 @param context - sender context which was passed in the request
3575 @param count - number of ids returned in response
3576 @param table_id - classify table index
3577 @param nbuckets - number of buckets when adding a table
3578 @param match_n_vectors - number of match vectors
3579 @param skip_n_vectors - number of skip_n_vectors
3580 @param active_sessions - number of sessions (active entries)
3581 @param next_table_index - index of next table
3582 @param miss_next_index - index of miss table
3583 @param mask[] - match mask
3585 define classify_table_info_reply
3591 u32 match_n_vectors;
3593 u32 active_sessions;
3594 u32 next_table_index;
3595 u32 miss_next_index;
3597 u8 mask[mask_length];
3600 /** \brief Classify sessions dump request
3601 @param client_index - opaque cookie to identify the sender
3602 @param context - sender context, to match reply w/ request
3603 @param table_id - classify table index
3605 define classify_session_dump
3612 /** \brief Reply for classify table session dump request
3613 @param context - sender context which was passed in the request
3614 @param count - number of ids returned in response
3615 @param table_id - classify table index
3616 @param hit_next_index - hit_next_index of session
3617 @param opaque_index - for add, opaque_index of session
3618 @param advance - advance value of session
3619 @param match[] - match value for session
3621 define classify_session_details
3630 u8 match[match_length];
3633 /** \brief Configure IPFIX exporter process request
3634 @param client_index - opaque cookie to identify the sender
3635 @param context - sender context, to match reply w/ request
3636 @param collector_address - address of IPFIX collector
3637 @param collector_port - port of IPFIX collector
3638 @param src_address - address of IPFIX exporter
3639 @param vrf_id - VRF / fib table ID
3640 @param path_mtu - Path MTU between exporter and collector
3641 @param template_interval - number of seconds after which to resend template
3642 @param udp_checksum - UDP checksum calculation enable flag
3644 define set_ipfix_exporter
3648 u8 collector_address[16];
3653 u32 template_interval;
3657 /** \brief Reply to IPFIX exporter configure request
3658 @param context - sender context which was passed in the request
3660 define set_ipfix_exporter_reply
3666 /** \brief IPFIX exporter dump request
3667 @param client_index - opaque cookie to identify the sender
3668 @param context - sender context, to match reply w/ request
3670 define ipfix_exporter_dump
3676 /** \brief Reply to IPFIX exporter dump request
3677 @param context - sender context which was passed in the request
3678 @param collector_address - address of IPFIX collector
3679 @param collector_port - port of IPFIX collector
3680 @param src_address - address of IPFIX exporter
3681 @param fib_index - fib table index
3682 @param path_mtu - Path MTU between exporter and collector
3683 @param template_interval - number of seconds after which to resend template
3684 @param udp_checksum - UDP checksum calculation enable flag
3686 define ipfix_exporter_details
3689 u8 collector_address[16];
3694 u32 template_interval;
3698 /** \brief IPFIX classify stream configure request
3699 @param client_index - opaque cookie to identify the sender
3700 @param context - sender context, to match reply w/ request
3701 @param domain_id - domain ID reported in IPFIX messages for classify stream
3702 @param src_port - source port of UDP session for classify stream
3704 define set_ipfix_classify_stream {
3711 /** \brief IPFIX classify stream configure response
3712 @param context - sender context, to match reply w/ request
3713 @param retval - return value for request
3715 define set_ipfix_classify_stream_reply {
3720 /** \brief IPFIX classify stream dump request
3721 @param client_index - opaque cookie to identify the sender
3722 @param context - sender context, to match reply w/ request
3724 define ipfix_classify_stream_dump {
3729 /** \brief Reply to IPFIX classify stream dump request
3730 @param context - sender context, to match reply w/ request
3731 @param domain_id - domain ID reported in IPFIX messages for classify stream
3732 @param src_port - source port of UDP session for classify stream
3734 define ipfix_classify_stream_details {
3740 /** \brief IPFIX add or delete classifier table request
3741 @param client_index - opaque cookie to identify the sender
3742 @param context - sender context, to match reply w/ request
3743 @param table_id - classifier table ID
3744 @param ip_version - version of IP used in the classifier table
3745 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
3747 define ipfix_classify_table_add_del {
3752 u8 transport_protocol;
3756 /** \brief IPFIX add classifier table response
3757 @param context - sender context which was passed in the request
3759 define ipfix_classify_table_add_del_reply {
3764 /** \brief IPFIX classify tables dump request
3765 @param client_index - opaque cookie to identify the sender
3766 @param context - sender context, to match reply w/ request
3768 define ipfix_classify_table_dump {
3773 /** \brief Reply to IPFIX classify tables dump request
3774 @param context - sender context, to match reply w/ request
3775 @param table_id - classifier table ID
3776 @param ip_version - version of IP used in the classifier table
3777 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
3779 define ipfix_classify_table_details {
3783 u8 transport_protocol;
3786 /** \brief Set/unset flow classify interface
3787 @param client_index - opaque cookie to identify the sender
3788 @param context - sender context, to match reply w/ request
3789 @param sw_if_index - interface to set/unset flow classify
3790 @param ip4_table_index - ip4 classify table index (~0 for skip)
3791 @param ip6_table_index - ip6 classify table index (~0 for skip)
3792 @param l2_table_index - l2 classify table index (~0 for skip)
3793 @param is_add - Set if non-zero, else unset
3794 Note: User is recommeneded to use just one valid table_index per call.
3795 (ip4_table_index, ip6_table_index, or l2_table_index)
3797 define flow_classify_set_interface {
3801 u32 ip4_table_index;
3802 u32 ip6_table_index;
3806 /** \brief Set/unset flow classify interface response
3807 @param context - sender context, to match reply w/ request
3808 @param retval - return value for request
3810 define flow_classify_set_interface_reply {
3815 /** \brief Get list of flow classify interfaces and tables
3816 @param client_index - opaque cookie to identify the sender
3817 @param context - sender context, to match reply w/ request
3818 @param type - classify table type
3820 define flow_classify_dump {
3826 /** \brief Flow classify operational state response.
3827 @param context - sender context, to match reply w/ request
3828 @param sw_if_index - software interface index
3829 @param table_index - classify table index
3831 define flow_classify_details {
3837 /** \brief Query relative index via node names
3838 @param client_index - opaque cookie to identify the sender
3839 @param context - sender context, to match reply w/ request
3840 @param node_name - name of node to find relative index from
3841 @param next_name - next node from node_name to find relative index of
3843 define get_next_index
3851 /** \brief Reply for get next node index
3852 @param context - sender context which was passed in the request
3853 @param retval - return value
3854 @param next_index - index of the next_node
3856 define get_next_index_reply
3863 /** \brief PacketGenerator create interface request
3864 @param client_index - opaque cookie to identify the sender
3865 @param context - sender context, to match reply w/ request
3866 @param interface_id - interface index
3868 define pg_create_interface
3875 /** \brief PacketGenerator create interface response
3876 @param context - sender context, to match reply w/ request
3877 @param retval - return value for request
3879 define pg_create_interface_reply
3886 /** \brief PacketGenerator capture packets on given interface request
3887 @param client_index - opaque cookie to identify the sender
3888 @param context - sender context, to match reply w/ request
3889 @param interface_id - pg interface index
3890 @param is_enabled - 1 if enabling streams, 0 if disabling
3891 @param count - number of packets to be captured
3892 @param pcap_file - pacp file name to store captured packets
3901 u32 pcap_name_length;
3902 u8 pcap_file_name[pcap_name_length];
3905 /** \brief PacketGenerator capture packets response
3906 @param context - sender context, to match reply w/ request
3907 @param retval - return value for request
3909 define pg_capture_reply
3915 /** \brief Enable / disable packet generator request
3916 @param client_index - opaque cookie to identify the sender
3917 @param context - sender context, to match reply w/ request
3918 @param is_enabled - 1 if enabling streams, 0 if disabling
3919 @param stream - stream name to be enable/disabled, if not specified handle all streams
3921 define pg_enable_disable
3926 u32 stream_name_length;
3927 u8 stream_name[stream_name_length];
3930 /** \brief Reply for enable / disable packet generator
3931 @param context - returned sender context, to match reply w/ request
3932 @param retval - return code
3934 define pg_enable_disable_reply
3940 /** \brief Configure IP source and L4 port-range check
3941 @param client_index - opaque cookie to identify the sender
3942 @param context - sender context, to match reply w/ request
3943 @param is_ip6 - 1 if source address type is IPv6
3944 @param is_add - 1 if add, 0 if delete
3945 @param mask_length - mask length for address entry
3946 @param address - array of address bytes
3947 @param number_of_ranges - length of low_port and high_port arrays (must match)
3948 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
3949 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
3950 @param vrf_id - fib table/vrf id to associate the source and port-range check with
3951 @note To specify a single port set low_port and high_port entry the same
3953 define ip_source_and_port_range_check_add_del
3961 u8 number_of_ranges;
3967 /** \brief Configure IP source and L4 port-range check reply
3968 @param context - returned sender context, to match reply w/ request
3969 @param retval - return code
3971 define ip_source_and_port_range_check_add_del_reply
3977 /** \brief Set interface source and L4 port-range request
3978 @param client_index - opaque cookie to identify the sender
3979 @param context - sender context, to match reply w/ request
3980 @param interface_id - interface index
3981 @param tcp_vrf_id - VRF associated with source and TCP port-range check
3982 @param udp_vrf_id - VRF associated with source and TCP port-range check
3984 define ip_source_and_port_range_check_interface_add_del
3996 /** \brief Set interface source and L4 port-range response
3997 @param context - sender context, to match reply w/ request
3998 @param retval - return value for request
4000 define ip_source_and_port_range_check_interface_add_del_reply
4006 /** \brief Add / del ipsec gre tunnel request
4007 @param client_index - opaque cookie to identify the sender
4008 @param context - sender context, to match reply w/ request
4009 @param local_sa_id - local SA id
4010 @param remote_sa_id - remote SA id
4011 @param is_add - 1 if adding the tunnel, 0 if deleting
4012 @param src_address - tunnel source address
4013 @param dst_address - tunnel destination address
4015 define ipsec_gre_add_del_tunnel {
4025 /** \brief Reply for add / del ipsec gre tunnel request
4026 @param context - returned sender context, to match reply w/ request
4027 @param retval - return code
4028 @param sw_if_index - software index of the new ipsec gre tunnel
4030 define ipsec_gre_add_del_tunnel_reply {
4036 /** \brief Dump ipsec gre tunnel table
4037 @param client_index - opaque cookie to identify the sender
4038 @param context - sender context, to match reply w/ request
4039 @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
4041 define ipsec_gre_tunnel_dump {
4047 /** \brief mpls gre tunnel operational state response
4048 @param context - returned sender context, to match reply w/ request
4049 @param sw_if_index - software index of the ipsec gre tunnel
4050 @param local_sa_id - local SA id
4051 @param remote_sa_id - remote SA id
4052 @param src_address - tunnel source address
4053 @param dst_address - tunnel destination address
4055 define ipsec_gre_tunnel_details {
4064 /** \brief Delete sub interface request
4065 @param client_index - opaque cookie to identify the sender
4066 @param context - sender context, to match reply w/ request
4067 @param sw_if_index - sw index of the interface that was created by create_subif
4069 define delete_subif {
4075 /** \brief Delete sub interface response
4076 @param context - sender context, to match reply w/ request
4077 @param retval - return code for the request
4079 define delete_subif_reply {
4084 /** \brief DPDK interface HQoS pipe profile set request
4085 @param client_index - opaque cookie to identify the sender
4086 @param context - sender context, to match reply w/ request
4087 @param sw_if_index - the interface
4088 @param subport - subport ID
4089 @param pipe - pipe ID within its subport
4090 @param profile - pipe profile ID
4092 define sw_interface_set_dpdk_hqos_pipe {
4101 /** \brief DPDK interface HQoS pipe profile set reply
4102 @param context - sender context, to match reply w/ request
4103 @param retval - request return code
4105 define sw_interface_set_dpdk_hqos_pipe_reply {
4110 /** \brief DPDK interface HQoS subport parameters set request
4111 @param client_index - opaque cookie to identify the sender
4112 @param context - sender context, to match reply w/ request
4113 @param sw_if_index - the interface
4114 @param subport - subport ID
4115 @param tb_rate - subport token bucket rate (measured in bytes/second)
4116 @param tb_size - subport token bucket size (measured in credits)
4117 @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second)
4118 @param tc_period - enforcement period for rates (measured in milliseconds)
4120 define sw_interface_set_dpdk_hqos_subport {
4131 /** \brief DPDK interface HQoS subport parameters set reply
4132 @param context - sender context, to match reply w/ request
4133 @param retval - request return code
4135 define sw_interface_set_dpdk_hqos_subport_reply {
4140 /** \brief DPDK interface HQoS tctbl entry set request
4141 @param client_index - opaque cookie to identify the sender
4142 @param context - sender context, to match reply w/ request
4143 @param sw_if_index - the interface
4144 @param entry - entry index ID
4145 @param tc - traffic class (0 .. 3)
4146 @param queue - traffic class queue (0 .. 3)
4148 define sw_interface_set_dpdk_hqos_tctbl {
4157 /** \brief DPDK interface HQoS tctbl entry set reply
4158 @param context - sender context, to match reply w/ request
4159 @param retval - request return code
4161 define sw_interface_set_dpdk_hqos_tctbl_reply {
4166 /** \brief L2 interface pbb tag rewrite configure request
4167 @param client_index - opaque cookie to identify the sender
4168 @param context - sender context, to match reply w/ request
4169 @param sw_if_index - interface the operation is applied to
4170 @param vtr_op - Choose from l2_vtr_op_t enum values
4171 @param inner_tag - needed for translate_qinq vtr op only
4172 @param outer_tag - needed for translate_qinq vtr op only
4173 @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op
4174 @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op
4175 @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op
4176 @param i_sid - I-tag service id, needed for any push or translate qinq vtr op
4178 define l2_interface_pbb_tag_rewrite
4191 /** \brief L2 interface pbb tag rewrite response
4192 @param context - sender context, to match reply w/ request
4193 @param retval - return code for the request
4195 define l2_interface_pbb_tag_rewrite_reply
4201 /** \brief Punt traffic to the host
4202 @param client_index - opaque cookie to identify the sender
4203 @param context - sender context, to match reply w/ request
4204 @param is_add - add punt if non-zero, else delete
4205 @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All
4206 @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported
4207 @param l4_port - TCP/UDP port to be punted
4218 /** \brief Reply to the punt request
4219 @param context - sender context which was passed in the request
4220 @param retval - return code of punt request
4228 /** \brief Dump ipsec policy database data
4229 @param client_index - opaque cookie to identify the sender
4230 @param context - sender context, to match reply w/ request
4231 @param spd_id - SPD instance id
4232 @param sa_id - SA id, optional, set to ~0 to see all policies in SPD
4234 define ipsec_spd_dump {
4241 /** \brief IPsec policy database response
4242 @param context - sender context which was passed in the request
4243 @param spd_id - SPD instance id
4244 @param priority - numeric value to control policy evaluation order
4245 @param is_outbound - [1|0] to indicate if direction is [out|in]bound
4246 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
4247 @param local_start_addr - first address in local traffic selector range
4248 @param local_stop_addr - last address in local traffic selector range
4249 @param local_start_port - first port in local traffic selector range
4250 @param local_stop_port - last port in local traffic selector range
4251 @param remote_start_addr - first address in remote traffic selector range
4252 @param remote_stop_addr - last address in remote traffic selector range
4253 @param remote_start_port - first port in remote traffic selector range
4254 @param remote_stop_port - last port in remote traffic selector range
4255 @param protocol - traffic selector protocol
4256 @param policy - policy action
4257 @param sa_id - SA id
4258 @param bytes - byte count of packets matching this policy
4259 @param packets - count of packets matching this policy
4262 define ipsec_spd_details {
4268 u8 local_start_addr[16];
4269 u8 local_stop_addr[16];
4270 u16 local_start_port;
4271 u16 local_stop_port;
4272 u8 remote_start_addr[16];
4273 u8 remote_stop_addr[16];
4274 u16 remote_start_port;
4275 u16 remote_stop_port;
4283 /** \brief Feature path enable/disable request
4284 @param client_index - opaque cookie to identify the sender
4285 @param context - sender context, to match reply w/ request
4286 @param sw_if_index - the interface
4287 @param enable - 1 = on, 0 = off
4289 define feature_enable_disable {
4295 u8 feature_name[64];
4298 /** \brief Reply to the eature path enable/disable request
4299 @param context - sender context which was passed in the request
4300 @param retval - return code for the request
4302 define feature_enable_disable_reply
4308 /** \brief Configure BFD feature
4309 @param client_index - opaque cookie to identify the sender
4310 @param context - sender context, to match reply w/ request
4311 @param slow_timer - slow timer (seconds)
4312 @param min_tx - desired min tx interval
4313 @param min_rx - desired min rx interval
4314 @param detect_mult - desired detection multiplier
4316 define bfd_set_config {
4325 /** \brief Configure BFD feature response
4326 @param context - sender context, to match reply w/ request
4327 @param retval - return code for the request
4329 define bfd_set_config_reply {
4334 /** \brief Get BFD configuration
4336 define bfd_get_config {
4341 /** \brief Get BFD configuration response
4342 @param context - sender context, to match reply w/ request
4343 @param retval - return code for the request
4344 @param slow_timer - slow timer (seconds)
4345 @param min_tx - desired min tx interval
4346 @param min_rx - desired min rx interval
4347 @param detect_mult - desired detection multiplier
4349 define bfd_get_config_reply {
4358 /** \brief Add UDP BFD session on interface
4359 @param client_index - opaque cookie to identify the sender
4360 @param context - sender context, to match reply w/ request
4361 @param sw_if_index - sw index of the interface
4362 @param desired_min_tx - desired min transmit interval (microseconds)
4363 @param required_min_rx - required min receive interval (microseconds)
4364 @param detect_mult - detect multiplier (# of packets missed between connection goes down)
4365 @param local_addr - local address
4366 @param peer_addr - peer address
4367 @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
4369 define bfd_udp_add {
4374 u32 required_min_rx;
4381 /** \brief Add UDP BFD session response
4382 @param context - sender context, to match reply w/ request
4383 @param retval - return code for the request
4384 @param bs_index - index of the session created
4386 define bfd_udp_add_reply {
4392 /** \brief Delete UDP BFD session on interface
4393 @param client_index - opaque cookie to identify the sender
4394 @param context - sender context, to match reply w/ request
4395 @param sw_if_index - sw index of the interface
4396 @param local_addr - local address
4397 @param peer_addr - peer address
4398 @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
4400 define bfd_udp_del {
4409 /** \brief Delete UDP BFD session response
4410 @param context - sender context, to match reply w/ request
4411 @param retval - return code for the request
4413 define bfd_udp_del_reply {
4418 /** \brief Get all BFD sessions
4419 @param client_index - opaque cookie to identify the sender
4420 @param context - sender context, to match reply w/ request
4422 define bfd_udp_session_dump {
4427 /** \brief BFD session details structure
4428 @param context - sender context, to match reply w/ request
4429 @param bs_index - index of the session
4430 @param sw_if_index - sw index of the interface
4431 @param local_addr - local address
4432 @param peer_addr - peer address
4433 @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
4434 @param state - session state
4436 define bfd_udp_session_details {
4446 /** \brief Set flags of BFD session
4447 @param client_index - opaque cookie to identify the sender
4448 @param context - sender context, to match reply w/ request
4449 @param bs_index - index of the bfd session to set flags on
4450 @param admin_up_down - set the admin state, 1 = up, 0 = down
4452 define bfd_session_set_flags {
4459 /** \brief Reply to bfd_session_set_flags
4460 @param context - sender context which was passed in the request
4461 @param retval - return code of the set flags request
4463 define bfd_session_set_flags_reply
4469 /** \brief Register for BFD events
4470 @param client_index - opaque cookie to identify the sender
4471 @param context - sender context, to match reply w/ request
4472 @param enable_disable - 1 => register for events, 0 => cancel registration
4473 @param pid - sender's pid
4475 define want_bfd_events
4483 /** \brief Reply for BFD events registration
4484 @param context - returned sender context, to match reply w/ request
4485 @param retval - return code
4487 define want_bfd_events_reply
4495 * eval: (c-set-style "gnu")