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}
34 * L2TP APIs: see .../vnet/vnet/l2tp/{l2tp.api, l2tp_api.c}
37 /** \brief Create a new subinterface with the given vlan id
38 @param client_index - opaque cookie to identify the sender
39 @param context - sender context, to match reply w/ request
40 @param sw_if_index - software index of the new vlan's parent interface
41 @param vlan_id - vlan tag of the new interface
43 define create_vlan_subif
51 /** \brief Reply for the vlan subinterface create request
52 @param context - returned sender context, to match reply w/ request
53 @param retval - return code
54 @param sw_if_index - software index allocated for the new subinterface
56 define create_vlan_subif_reply
63 /** \brief Enable or Disable MPLS on and interface
64 @param client_index - opaque cookie to identify the sender
65 @param context - sender context, to match reply w/ request
66 @param sw_if_index - index of the interface
67 @param enable - if non-zero enable, else disable
69 define sw_interface_set_mpls_enable
77 /** \brief Reply for MPLS state on an interface
78 @param context - returned sender context, to match reply w/ request
79 @param retval - return code
81 define sw_interface_set_mpls_enable_reply
87 /** \brief MPLS Route Add / del route
88 @param client_index - opaque cookie to identify the sender
89 @param context - sender context, to match reply w/ request
90 @param mr_label - The MPLS label value
91 @param mr_eos - The End of stack bit
92 @param mr_table_id - The MPLS table-id the route is added in
93 @param mr_classify_table_index - If this is a classify route,
94 this is the classify table index
95 @param mr_create_table_if_needed - If the MPLS or IP tables do not exist,
97 @param mr_is_add - Is this a route add or delete
98 @param mr_is_classify - Is this route result a classify
99 @param mr_is_multipath - Is this route update a multipath - i.e. is this
100 a path addition to an existing route
101 @param mr_is_resolve_host - Recurse resolution constraint via a host prefix
102 @param mr_is_resolve_attached - Recurse resolution constraint via attached prefix
103 @param mr_next_hop_proto_is_ip4 - The next-hop is IPV4
104 @param mr_next_hop_weight - The weight, for UCMP
105 @param mr_next_hop[16] - the nextop address
106 @param mr_next_hop_sw_if_index - the next-hop SW interface
107 @param mr_next_hop_table_id - the next-hop table-id (if appropriate)
108 @param mr_next_hop_n_out_labels - the number of labels in the label stack
109 @param mr_next_hop_out_label_stack - the next-hop output label stack, outer most first
110 @param next_hop_via_label - The next-hop is a resolved via a local label
112 define mpls_route_add_del
119 u32 mr_classify_table_index;
120 u8 mr_create_table_if_needed;
124 u8 mr_is_resolve_host;
125 u8 mr_is_resolve_attached;
126 u8 mr_next_hop_proto_is_ip4;
127 u8 mr_next_hop_weight;
129 u8 mr_next_hop_n_out_labels;
130 u32 mr_next_hop_sw_if_index;
131 u32 mr_next_hop_table_id;
132 u32 mr_next_hop_via_label;
133 u32 mr_next_hop_out_label_stack[mr_next_hop_n_out_labels];
136 /** \brief Reply for MPLS route add / del request
137 @param context - returned sender context, to match reply w/ request
138 @param retval - return code
140 define mpls_route_add_del_reply
146 /** \brief Dump MPLS fib table
147 @param client_index - opaque cookie to identify the sender
156 @param sw_if_index - index of the interface
157 @param weight - The weight, for UCMP
158 @param is_local - local if non-zero, else remote
159 @param is_drop - Drop the packet
160 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
161 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
162 @param afi - the afi of the next hop, IP46_TYPE_IP4=1, IP46_TYPE_IP6=2
163 @param next_hop[16] - the next hop address
165 WARNING: this type is replicated, pending cleanup completion
168 typeonly manual_print manual_endian define fib_path2
180 /** \brief mpls FIB table response
181 @param table_id - MPLS fib table id
182 @param s_bit - End-of-stack bit
183 @param label - MPLS label value
184 @param count - the number of fib_path in path
185 @param path - array of of fib_path structures
187 manual_endian manual_print define mpls_fib_details
194 vl_api_fib_path2_t path[count];
197 /** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create
198 a per-prefix label entry.
199 @param client_index - opaque cookie to identify the sender
200 @param context - sender context, to match reply w/ request
201 @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in
202 @param mb_label - The MPLS label value to bind
203 @param mb_ip_table_id - The IP table-id of the IP prefix to bind to.
204 @param mb_create_table_if_needed - Create either/both tables if required.
205 @param mb_is_bind - Bind or unbind
206 @param mb_is_ip4 - The prefix to bind to is IPv4
207 @param mb_address_length - Length of IP prefix
208 @param mb_address[16] - IP prefix/
210 define mpls_ip_bind_unbind
214 u32 mb_mpls_table_id;
217 u8 mb_create_table_if_needed;
220 u8 mb_address_length;
224 /** \brief Reply for MPLS IP bind/unbind request
225 @param context - returned sender context, to match reply w/ request
226 @param retval - return code
228 define mpls_ip_bind_unbind_reply
234 /** \brief MPLS tunnel Add / del route
235 @param client_index - opaque cookie to identify the sender
236 @param context - sender context, to match reply w/ request
237 @param mt_is_add - Is this a route add or delete
238 @param mt_sw_if_index - The SW interface index of the tunnel to delete
239 @param mt_next_hop_proto_is_ip4 - The next-hop is IPV4
240 @param mt_next_hop_weight - The weight, for UCMP
241 @param mt_next_hop[16] - the nextop address
242 @param mt_next_hop_sw_if_index - the next-hop SW interface
243 @param mt_next_hop_table_id - the next-hop table-id (if appropriate)
244 @param mt_next_hop_n_out_labels - the number of next-hop output labels
245 @param mt_next_hop_out_label_stack - the next-hop output label stack, outer most first
247 define mpls_tunnel_add_del
254 u8 mt_next_hop_proto_is_ip4;
255 u8 mt_next_hop_weight;
257 u8 mt_next_hop_n_out_labels;
258 u32 mt_next_hop_sw_if_index;
259 u32 mt_next_hop_table_id;
260 u32 mt_next_hop_out_label_stack[mt_next_hop_n_out_labels];
263 /** \brief Reply for MPLS tunnel add / del request
264 @param context - returned sender context, to match reply w/ request
265 @param retval - return code
266 @param sw_if_index - SW interface index of the tunnel created
268 define mpls_tunnel_add_del_reply
275 /** \brief Dump mpls eth tunnel table
276 @param client_index - opaque cookie to identify the sender
277 @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels
279 define mpls_tunnel_dump
286 /** \brief mpls eth tunnel operational state response
287 @param tunnel_index - eth tunnel identifier
288 @param intfc_address - interface ipv4 addr
289 @param mask_width - interface ipv4 addr mask
290 @param hw_if_index - interface id
292 @param tunnel_dst_mac -
293 @param tx_sw_if_index -
294 @param encap_index - reference to mpls label table
295 @param nlabels - number of resolved labels
296 @param labels - resolved labels
298 define mpls_tunnel_details
304 u8 mt_next_hop_proto_is_ip4;
306 u32 mt_next_hop_sw_if_index;
307 u32 mt_next_hop_table_id;
308 u32 mt_next_hop_n_labels;
309 u32 mt_next_hop_out_labels[mt_next_hop_n_labels];
312 /** \brief Proxy ARP add / del request
313 @param client_index - opaque cookie to identify the sender
314 @param context - sender context, to match reply w/ request
315 @param vrf_id - VRF / Fib table ID
316 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
317 @param low_address[4] - Low address of the Proxy ARP range
318 @param hi_address[4] - High address of the Proxy ARP range
320 define proxy_arp_add_del
330 /** \brief Reply for proxy arp add / del request
331 @param context - returned sender context, to match reply w/ request
332 @param retval - return code
334 define proxy_arp_add_del_reply
340 /** \brief Proxy ARP add / del request
341 @param client_index - opaque cookie to identify the sender
342 @param context - sender context, to match reply w/ request
343 @param sw_if_index - Which interface to enable / disable Proxy Arp on
344 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
346 define proxy_arp_intfc_enable_disable
351 /* 1 = on, 0 = off */
355 /** \brief Reply for Proxy ARP interface enable / disable request
356 @param context - returned sender context, to match reply w/ request
357 @param retval - return code
359 define proxy_arp_intfc_enable_disable_reply
365 /** \brief Reset VRF (remove all routes etc) request
366 @param client_index - opaque cookie to identify the sender
367 @param context - sender context, to match reply w/ request
368 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
369 @param vrf_id - ID of th FIB table / VRF to reset
379 /** \brief Reply for Reset VRF request
380 @param context - returned sender context, to match reply w/ request
381 @param retval - return code
383 define reset_vrf_reply
389 /** \brief Is Address Reachable request - DISABLED
390 @param client_index - opaque cookie to identify the sender
391 @param context - sender context, to match reply w/ request
392 @param next_hop_sw_if_index - index of interface used to get to next hop
393 @param is_ipv6 - 1 for IPv6, 0 for IPv4
394 @param is_error - address not found or does not match intf
395 @param address[] - Address in question
397 define is_address_reachable
399 u32 client_index; /* (api_main_t *) am->my_client_index */
401 u32 next_hop_sw_if_index;
402 u8 is_known; /* on reply, this is the answer */
404 u8 is_error; /* address not found or does not match intf */
408 /** \brief Want Stats, register for stats updates
409 @param client_index - opaque cookie to identify the sender
410 @param context - sender context, to match reply w/ request
411 @param enable_disable - 1 = enable stats, 0 = disable
412 @param pid - pid of process requesting stats updates
422 /** \brief Reply for Want Stats request
423 @param context - returned sender context, to match reply w/ request
424 @param retval - return code
426 define want_stats_reply
432 typeonly manual_print manual_endian define ip4_fib_counter
440 manual_print manual_endian define vnet_ip4_fib_counters
444 vl_api_ip4_fib_counter_t c[count];
447 typeonly manual_print manual_endian define ip6_fib_counter
455 manual_print manual_endian define vnet_ip6_fib_counters
459 vl_api_ip6_fib_counter_t c[count];
462 /** \brief Request for a single block of summary stats
463 @param client_index - opaque cookie to identify the sender
464 @param context - sender context, to match reply w/ request
466 define vnet_get_summary_stats
472 /** \brief Reply for vnet_get_summary_stats request
473 @param context - sender context, to match reply w/ request
474 @param retval - return code for request
479 define vnet_summary_stats_reply
488 /** \brief OAM event structure
489 @param dst_address[] -
498 /** \brief Want OAM events request
499 @param client_index - opaque cookie to identify the sender
500 @param context - sender context, to match reply w/ request
501 @param enable_disable- enable if non-zero, else disable
502 @param pid - pid of the requesting process
504 define want_oam_events
512 /** \brief Want OAM events response
513 @param context - sender context, to match reply w/ request
514 @param retval - return code for the want oam stats request
516 define want_oam_events_reply
522 /** \brief OAM add / del target request
523 @param client_index - opaque cookie to identify the sender
524 @param context - sender context, to match reply w/ request
525 @param vrf_id - vrf_id of the target
526 @param src_address[] - source address to use for the updates
527 @param dst_address[] - destination address of the target
528 @param is_add - add target if non-zero, else delete
540 /** \brief OAM add / del target response
541 @param context - sender context, to match reply w/ request
542 @param retval - return code of the request
544 define oam_add_del_reply
550 /** \brief Reset fib table request
551 @param client_index - opaque cookie to identify the sender
552 @param context - sender context, to match reply w/ request
553 @param vrf_id - vrf/table id of the fib table to reset
554 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
564 /** \brief Reset fib response
565 @param context - sender context, to match reply w/ request
566 @param retval - return code for the reset bfib request
568 define reset_fib_reply
574 /** \brief DHCP Proxy config add / del request
575 @param client_index - opaque cookie to identify the sender
576 @param context - sender context, to match reply w/ request
577 @param vrf_id - vrf id
578 @param if_ipv6 - ipv6 if non-zero, else ipv4
579 @param is_add - add the config if non-zero, else delete
580 @param insert_circuit_id - option82 suboption 1 fib number
581 @param dhcp_server[] - server address
582 @param dhcp_src_address[] - <fix this, need details>
584 define dhcp_proxy_config
591 u8 insert_circuit_id;
593 u8 dhcp_src_address[16];
596 /** \brief DHCP Proxy config response
597 @param context - sender context, to match reply w/ request
598 @param retval - return code for the request
600 define dhcp_proxy_config_reply
606 /** \brief DHCP Proxy set / unset vss request
607 @param client_index - opaque cookie to identify the sender
608 @param context - sender context, to match reply w/ request
609 @param tbl_id - table id
610 @param oui - first part of vpn id
611 @param fib_id - second part of vpn id
612 @param is_ipv6 - ip6 if non-zero, else ip4
613 @param is_add - set vss if non-zero, else delete
615 define dhcp_proxy_set_vss
626 /** \brief DHCP proxy set / unset vss response
627 @param context - sender context, to match reply w/ request
628 @param retval - return code for the request
630 define dhcp_proxy_set_vss_reply
636 /** \brief Create loopback interface request
637 @param client_index - opaque cookie to identify the sender
638 @param context - sender context, to match reply w/ request
639 @param mac_address - mac addr to assign to the interface if none-zero
641 define create_loopback
648 /** \brief Create loopback interface response
649 @param context - sender context, to match reply w/ request
650 @param sw_if_index - sw index of the interface that was created
651 @param retval - return code for the request
653 define create_loopback_reply
660 /** \brief Delete loopback interface request
661 @param client_index - opaque cookie to identify the sender
662 @param context - sender context, to match reply w/ request
663 @param sw_if_index - sw index of the interface that was created
665 define delete_loopback
672 /** \brief Delete loopback interface response
673 @param context - sender context, to match reply w/ request
674 @param retval - return code for the request
676 define delete_loopback_reply
682 /** \brief Control ping from client to api server request
683 @param client_index - opaque cookie to identify the sender
684 @param context - sender context, to match reply w/ request
692 /** \brief Control ping from the client to the server response
693 @param client_index - opaque cookie to identify the sender
694 @param context - sender context, to match reply w/ request
695 @param retval - return code for the request
696 @param vpe_pid - the pid of the vpe, returned by the server
698 define control_ping_reply
706 /** \brief Process a vpe parser cli string request
707 @param client_index - opaque cookie to identify the sender
708 @param context - sender context, to match reply w/ request
709 @param cmd_in_shmem - pointer to cli command string
725 /** \brief vpe parser cli string response
726 @param context - sender context, to match reply w/ request
727 @param retval - return code for request
728 @param reply_in_shmem - Reply string from cli processing if any
736 define cli_inband_reply
744 /** \brief Set max allowed ARP or ip6 neighbor entries request
745 @param client_index - opaque cookie to identify the sender
746 @param context - sender context, to match reply w/ request
747 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
748 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
750 define set_arp_neighbor_limit
755 u32 arp_neighbor_limit;
758 /** \brief Set max allowed ARP or ip6 neighbor entries response
759 @param context - sender context, to match reply w/ request
760 @param retval - return code for request
762 define set_arp_neighbor_limit_reply
768 /** \brief L2 interface patch add / del request
769 @param client_index - opaque cookie to identify the sender
770 @param context - sender context, to match reply w/ request
771 @param rx_sw_if_index - receive side interface
772 @param tx_sw_if_index - transmit side interface
773 @param is_add - if non-zero set up the interface patch, else remove it
775 define l2_patch_add_del
784 /** \brief L2 interface patch add / del response
785 @param context - sender context, to match reply w/ request
786 @param retval - return code for the request
788 define l2_patch_add_del_reply
794 /** \brief IPv6 segment routing tunnel add / del request
795 @param client_index - opaque cookie to identify the sender
796 @param context - sender context, to match reply w/ request
797 @param is_add - add the tunnel if non-zero, else delete it
798 @param name[] - tunnel name (len. 64)
799 @param src_address[] -
800 @param dst_address[] -
801 @param dst_mask_width -
802 @param inner_vrf_id -
803 @param outer_vrf_id -
804 @param flags_net_byte_order -
807 @param segs_and_tags[] -
808 @param policy_name[] - name of policy to associate this tunnel to (len. 64)
810 define sr_tunnel_add_del
821 u16 flags_net_byte_order;
828 /** \brief IPv6 segment routing tunnel add / del response
829 @param context - sender context, to match reply w/ request
830 @param retval - return value for request
832 define sr_tunnel_add_del_reply
838 /** \brief IPv6 segment routing policy add / del request
839 @param client_index - opaque cookie to identify the sender
840 @param context - sender context, to match reply w/ request
841 @param is_add - add the tunnel if non-zero, else delete it
842 @param name[] - policy name (len. 64)
843 @param tunnel_names[] -
845 define sr_policy_add_del
854 /** \brief IPv6 segment routing policy add / del response
855 @param context - sender context, to match reply w/ request
856 @param retval - return value for request
858 define sr_policy_add_del_reply
864 /** \brief IPv6 segment routing multicast map to policy add / del request
865 @param client_index - opaque cookie to identify the sender
866 @param context - sender context, to match reply w/ request
867 @param is_add - add the tunnel if non-zero, else delete it
868 @param multicast_address[] - IP6 multicast address
869 @param policy_name[] = policy name (len.64)
871 define sr_multicast_map_add_del
876 u8 multicast_address[16];
880 /** \brief IPv6 segment routing multicast map to policy add / del response
881 @param context - sender context, to match reply w/ request
882 @param retval - return value for request
884 define sr_multicast_map_add_del_reply
890 /** \brief Interface set vpath request
891 @param client_index - opaque cookie to identify the sender
892 @param context - sender context, to match reply w/ request
893 @param sw_if_index - interface used to reach neighbor
894 @param enable - if non-zero enable, else disable
896 define sw_interface_set_vpath
904 /** \brief Interface set vpath response
905 @param context - sender context, to match reply w/ request
906 @param retval - return code for the request
908 define sw_interface_set_vpath_reply
914 /** \brief Set L2 XConnect between two interfaces request
915 @param client_index - opaque cookie to identify the sender
916 @param context - sender context, to match reply w/ request
917 @param rx_sw_if_index - Receive interface index
918 @param tx_sw_if_index - Transmit interface index
919 @param enable - enable xconnect if not 0, else set to L3 mode
921 define sw_interface_set_l2_xconnect
930 /** \brief Set L2 XConnect response
931 @param context - sender context, to match reply w/ request
932 @param retval - L2 XConnect request return code
934 define sw_interface_set_l2_xconnect_reply
940 /** \brief Interface bridge mode request
941 @param client_index - opaque cookie to identify the sender
942 @param context - sender context, to match reply w/ request
943 @param rx_sw_if_index - the interface
944 @param bd_id - bridge domain id
945 @param bvi - Setup interface as a bvi, bridge mode only
946 @param shg - Shared horizon group, for bridge mode only
947 @param enable - Enable beige mode if not 0, else set to L3 mode
949 define sw_interface_set_l2_bridge
960 /** \brief Interface bridge mode response
961 @param context - sender context, to match reply w/ request
962 @param retval - Bridge mode request return code
964 define sw_interface_set_l2_bridge_reply
970 /** \brief L2 FIB add entry request
971 @param client_index - opaque cookie to identify the sender
972 @param context - sender context, to match reply w/ request
973 @param mac - the entry's mac address
974 @param bd_id - the entry's bridge domain id
975 @param sw_if_index - the interface
976 @param is_add - If non zero add the entry, else delete it
993 /** \brief L2 FIB add entry response
994 @param context - sender context, to match reply w/ request
995 @param retval - return code for the add l2fib entry request
997 define l2fib_add_del_reply
1003 /** \brief Set L2 flags request !!! TODO - need more info, feature bits in l2_input.h
1004 @param client_index - opaque cookie to identify the sender
1005 @param context - sender context, to match reply w/ request
1006 @param sw_if_index - interface
1007 @param is_set - if non-zero, set the bits, else clear them
1008 @param feature_bitmap - non-zero bits to set or clear
1019 /** \brief Set L2 bits response
1020 @param context - sender context, to match reply w/ request
1021 @param retval - return code for the set l2 bits request
1023 define l2_flags_reply
1027 u32 resulting_feature_bitmap;
1030 /** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD,
1031 L2_UU_FLOOD, or L2_ARP_TERM) request
1032 @param client_index - opaque cookie to identify the sender
1033 @param context - sender context, to match reply w/ request
1034 @param bd_id - the bridge domain to set the flags for
1035 @param is_set - if non-zero, set the flags, else clear them
1036 @param feature_bitmap - bits that are non-zero to set or clear
1047 /** \brief Set bridge flags response
1048 @param context - sender context, to match reply w/ request
1049 @param retval - return code for the set bridge flags request
1050 @param resulting_feature_bitmap - the feature bitmap value after the request is implemented
1052 define bridge_flags_reply
1056 u32 resulting_feature_bitmap;
1059 /** \brief Set bridge domain ip to mac entry request
1060 @param client_index - opaque cookie to identify the sender
1061 @param context - sender context, to match reply w/ request
1062 @param bd_id - the bridge domain to set the flags for
1063 @param is_add - if non-zero, add the entry, else clear it
1064 @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
1065 @param mac_address - MAC address
1068 define bd_ip_mac_add_del
1079 /** \brief Set bridge domain ip to mac entry response
1080 @param context - sender context, to match reply w/ request
1081 @param retval - return code for the set bridge flags request
1083 define bd_ip_mac_add_del_reply
1089 /** \brief Add/Delete classification table request
1090 @param client_index - opaque cookie to identify the sender
1091 @param context - sender context, to match reply w/ request
1092 @param is_add- if non-zero add the table, else delete it
1093 @param del_chain - if non-zero delete the whole chain of tables
1094 @param table_index - if add, reuturns index of the created table, else specifies the table to delete
1095 @param nbuckets - number of buckets when adding a table
1096 @param memory_size - memory size when adding a table
1097 @param match_n_vectors - number of match vectors
1098 @param next_table_index - index of next table
1099 @param miss_next_index - index of miss table
1100 @param current_data_flag - option to use current node's packet payload
1101 as the starting point from where packets are classified,
1102 This option is only valid for L2/L3 input ACL for now.
1103 0: by default, classify data from the buffer's start location
1104 1: classify packets from VPP node’s current data pointer
1105 @param current_data_offset - a signed value to shift the start location of
1106 the packet to be classified
1107 For example, if input IP ACL node is used, L2 header’s first byte
1108 can be accessible by configuring current_data_offset to -14
1109 if there is no vlan tag.
1110 This is valid only if current_data_flag is set to 1.
1111 @param mask[] - match mask
1113 define classify_add_del_table
1123 u32 match_n_vectors;
1124 u32 next_table_index;
1125 u32 miss_next_index;
1126 u32 current_data_flag;
1127 i32 current_data_offset;
1131 /** \brief Add/Delete classification table response
1132 @param context - sender context, to match reply w/ request
1133 @param retval - return code for the table add/del requst
1134 @param new_table_index - for add, returned index of the new table
1135 @param skip_n_vectors - for add, returned value of skip_n_vectors in table
1136 @param match_n_vectors -for add, returned value of match_n_vectors in table
1138 define classify_add_del_table_reply
1142 u32 new_table_index;
1144 u32 match_n_vectors;
1147 /** \brief Classify add / del session request
1148 @param client_index - opaque cookie to identify the sender
1149 @param context - sender context, to match reply w/ request
1150 @param is_add - add session if non-zero, else delete
1151 @param table_index - index of the table to add/del the session, required
1152 @param hit_next_index - for add, hit_next_index of new session, required
1153 @param opaque_index - for add, opaque_index of new session
1154 @param advance -for add, advance value for session
1156 0: no action (by default)
1157 metadata is not used.
1158 1: Classified IP packets will be looked up from the
1159 specified ipv4 fib table (configured by metadata as VRF id).
1160 Only valid for L3 input ACL node
1161 2: Classified IP packets will be looked up from the
1162 specified ipv6 fib table (configured by metadata as VRF id).
1163 Only valid for L3 input ACL node
1164 @param metadata - valid only if action != 0
1165 VRF id if action is 1 or 2.
1166 @param match[] - for add, match value for session, required
1168 define classify_add_del_session
1182 /** \brief Classify add / del session response
1183 @param context - sender context, to match reply w/ request
1184 @param retval - return code for the add/del session request
1186 define classify_add_del_session_reply
1192 /** \brief Set/unset the classification table for an interface request
1193 @param client_index - opaque cookie to identify the sender
1194 @param context - sender context, to match reply w/ request
1195 @param is_ipv6 - ipv6 if non-zero, else ipv4
1196 @param sw_if_index - interface to associate with the table
1197 @param table_index - index of the table, if ~0 unset the table
1199 define classify_set_interface_ip_table
1205 u32 table_index; /* ~0 => off */
1208 /** \brief Set/unset interface classification table response
1209 @param context - sender context, to match reply w/ request
1210 @param retval - return code
1212 define classify_set_interface_ip_table_reply
1218 /** \brief Set/unset l2 classification tables for an interface request
1219 @param client_index - opaque cookie to identify the sender
1220 @param context - sender context, to match reply w/ request
1221 @param sw_if_index - interface to set/unset tables for
1222 @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
1223 @param ip6_table_index - ip6 index
1224 @param other_table_index - other index
1226 define classify_set_interface_l2_tables
1232 u32 ip4_table_index;
1233 u32 ip6_table_index;
1234 u32 other_table_index;
1238 /** \brief Set/unset l2 classification tables for an interface response
1239 @param context - sender context, to match reply w/ request
1240 @param retval - return code for the request
1242 define classify_set_interface_l2_tables_reply
1248 /** \brief Get node index using name request
1249 @param client_index - opaque cookie to identify the sender
1250 @param context - sender context, to match reply w/ request
1251 @param node_name[] - name of the node
1253 define get_node_index
1260 /** \brief Get node index using name request
1261 @param context - sender context, to match reply w/ request
1262 @param retval - return code for the request
1263 @param node_index - index of the desired node if found, else ~0
1265 define get_node_index_reply
1272 /** \brief Set the next node for a given node request
1273 @param client_index - opaque cookie to identify the sender
1274 @param context - sender context, to match reply w/ request
1275 @param node_name[] - node to add the next node to
1276 @param next_name[] - node to add as the next node
1278 define add_node_next
1286 /** \brief IP Set the next node for a given node response
1287 @param context - sender context, to match reply w/ request
1288 @param retval - return code for the add next node request
1289 @param next_index - the index of the next node if success, else ~0
1291 define add_node_next_reply
1298 /** \brief DHCP Proxy config 2 add / del request
1299 @param client_index - opaque cookie to identify the sender
1300 @param context - sender context, to match reply w/ request
1301 @param rx_vrf_id - receive vrf id
1302 @param server_vrf_id - server vrf id
1303 @param if_ipv6 - ipv6 if non-zero, else ipv4
1304 @param is_add - add the config if non-zero, else delete
1305 @param insert_circuit_id - option82 suboption 1 fib number
1306 @param dhcp_server[] - server address
1307 @param dhcp_src_address[] - <fix this, need details>
1309 define dhcp_proxy_config_2
1317 u8 insert_circuit_id;
1319 u8 dhcp_src_address[16];
1322 /** \brief DHCP Proxy config 2 add / del response
1323 @param context - sender context, to match reply w/ request
1324 @param retval - return code for request
1326 define dhcp_proxy_config_2_reply
1332 /** \brief L2 fib clear table request, clear all mac entries in the l2 fib
1333 @param client_index - opaque cookie to identify the sender
1334 @param context - sender context, to match reply w/ request
1336 define l2_fib_clear_table
1342 /** \brief L2 fib clear table response
1343 @param context - sender context, to match reply w/ request
1344 @param retval - return code for the request
1346 define l2_fib_clear_table_reply
1352 /** \brief L2 interface ethernet flow point filtering enable/disable request
1353 @param client_index - opaque cookie to identify the sender
1354 @param context - sender context, to match reply w/ request
1355 @param sw_if_index - interface to enable/disable filtering on
1356 @param enable_disable - if non-zero enable filtering, else disable
1358 define l2_interface_efp_filter
1366 /** \brief L2 interface ethernet flow point filtering response
1367 @param context - sender context, to match reply w/ request
1368 @param retval - return code for the request
1370 define l2_interface_efp_filter_reply
1376 /** \brief L2 interface vlan tag rewrite configure request
1377 @param client_index - opaque cookie to identify the sender
1378 @param context - sender context, to match reply w/ request
1379 @param sw_if_index - interface the operation is applied to
1380 @param vtr_op - Choose from l2_vtr_op_t enum values
1381 @param push_dot1q - first pushed flag dot1q id set, else dot1ad
1382 @param tag1 - Needed for any push or translate vtr op
1383 @param tag2 - Needed for any push 2 or translate x-2 vtr ops
1385 define l2_interface_vlan_tag_rewrite
1391 u32 push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
1392 u32 tag1; // first pushed tag
1393 u32 tag2; // second pushed tag
1396 /** \brief L2 interface vlan tag rewrite response
1397 @param context - sender context, to match reply w/ request
1398 @param retval - return code for the request
1400 define l2_interface_vlan_tag_rewrite_reply
1413 /* These fields map directly onto the subif template */
1417 u8 dot1ad; // 0 = dot1q, 1=dot1ad
1420 u8 outer_vlan_id_any;
1421 u8 inner_vlan_id_any;
1426 define create_subif_reply
1433 /** \brief show version
1434 @param client_index - opaque cookie to identify the sender
1435 @param context - sender context, to match reply w/ request
1443 /** \brief show version response
1444 @param context - sender context, to match reply w/ request
1445 @param retval - return code for the request
1446 @param program - name of the program (vpe)
1447 @param version - version of the program
1448 @param build_directory - root of the workspace where the program was built
1450 define show_version_reply
1457 u8 build_directory[256];
1460 /** \brief l2 fib table entry structure
1461 @param bd_id - the l2 fib / bridge domain table id
1462 @param mac - the entry's mac address
1463 @param sw_if_index - index of the interface
1464 @param static_mac - the entry is statically configured.
1465 @param filter_mac - the entry is a mac filter entry.
1466 @param bvi_mac - the mac address is a bridge virtual interface
1468 define l2_fib_table_entry
1479 /** \brief Dump l2 fib (aka bridge domain) table
1480 @param client_index - opaque cookie to identify the sender
1481 @param bd_id - the l2 fib / bridge domain table identifier
1483 define l2_fib_table_dump
1490 /** \brief add or delete locator_set
1491 @param client_index - opaque cookie to identify the sender
1492 @param context - sender context, to match reply w/ request
1493 @param is_add - add address if non-zero, else delete
1494 @param locator_set_name - locator name
1495 @param locator_num - number of locators
1496 @param locators - LISP locator records
1497 Structure of one locator record is as follows:
1505 define lisp_add_del_locator_set
1510 u8 locator_set_name[64];
1515 /** \brief Reply for locator_set add/del
1516 @param context - returned sender context, to match reply w/ request
1517 @param retval - return code
1518 @param ls_index - locator set index
1520 define lisp_add_del_locator_set_reply
1527 /** \brief add or delete locator for locator_set
1528 @param client_index - opaque cookie to identify the sender
1529 @param context - sender context, to match reply w/ request
1530 @param is_add - add address if non-zero, else delete
1531 @param locator_set_name - name of locator_set to add/del locator
1532 @param sw_if_index - index of the interface
1533 @param priority - priority of the lisp locator
1534 @param weight - weight of the lisp locator
1536 define lisp_add_del_locator
1541 u8 locator_set_name[64];
1547 /** \brief Reply for locator add/del
1548 @param context - returned sender context, to match reply w/ request
1549 @param retval - return code
1551 define lisp_add_del_locator_reply
1557 /** \brief add or delete lisp eid-table
1558 @param client_index - opaque cookie to identify the sender
1559 @param context - sender context, to match reply w/ request
1560 @param is_add - add address if non-zero, else delete
1565 @param eid - EID can be ip4, ip6 or mac
1566 @param prefix_len - prefix len
1567 @param locator_set_name - name of locator_set to add/del eid-table
1568 @param vni - virtual network instance
1573 @param key - secret key
1575 define lisp_add_del_local_eid
1583 u8 locator_set_name[64];
1589 /** \brief Reply for local_eid add/del
1590 @param context - returned sender context, to match reply w/ request
1591 @param retval - return code
1593 define lisp_add_del_local_eid_reply
1599 /** \brief add or delete lisp gpe tunnel
1600 @param client_index - opaque cookie to identify the sender
1601 @param context - sender context, to match reply w/ request
1602 @param is_add - add address if non-zero, else delete
1607 @param rmt_eid - remote eid
1608 @param lcl_eid - local eid
1609 @param rmt_len - remote prefix len
1610 @param lcl_len - local prefix len
1611 @param vni - virtual network identifier
1612 @param dp_table - vrf/bridge domain id
1613 @param loc_num - number of locators
1614 @param lcl_locs - array of local locators
1615 @param rmt_locs - array of remote locators
1616 @param action - negative action when 0 locators configured
1618 define lisp_gpe_add_del_fwd_entry
1631 u8 lcl_locs[loc_num];
1632 u8 rmt_locs[loc_num];
1636 /** \brief Reply for gpe_fwd_entry add/del
1637 @param context - returned sender context, to match reply w/ request
1638 @param retval - return code
1640 define lisp_gpe_add_del_fwd_entry_reply
1646 /** \brief Add/delete map server
1647 @param client_index - opaque cookie to identify the sender
1648 @param context - sender context, to match reply w/ request
1649 @param is_add - add address if non-zero; delete otherwise
1650 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
1651 @param ip_address - map server IP address
1653 define lisp_add_del_map_server
1662 /** \brief Reply for lisp_add_del_map_server
1663 @param context - returned sender context, to match reply w/ request
1664 @param retval - return code
1666 define lisp_add_del_map_server_reply
1672 /** \brief add or delete map-resolver
1673 @param client_index - opaque cookie to identify the sender
1674 @param context - sender context, to match reply w/ request
1675 @param is_add - add address if non-zero, else delete
1676 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
1677 @param ip_address - array of address bytes
1679 define lisp_add_del_map_resolver
1688 /** \brief Reply for map_resolver add/del
1689 @param context - returned sender context, to match reply w/ request
1690 @param retval - return code
1692 define lisp_add_del_map_resolver_reply
1698 /** \brief enable or disable lisp-gpe protocol
1699 @param client_index - opaque cookie to identify the sender
1700 @param context - sender context, to match reply w/ request
1701 @param is_en - enable protocol if non-zero, else disable
1703 define lisp_gpe_enable_disable
1710 /** \brief Reply for gpe enable/disable
1711 @param context - returned sender context, to match reply w/ request
1712 @param retval - return code
1714 define lisp_gpe_enable_disable_reply
1720 /** \brief enable or disable LISP feature
1721 @param client_index - opaque cookie to identify the sender
1722 @param context - sender context, to match reply w/ request
1723 @param is_en - enable protocol if non-zero, else disable
1725 define lisp_enable_disable
1732 /** \brief Reply for gpe enable/disable
1733 @param context - returned sender context, to match reply w/ request
1734 @param retval - return code
1736 define lisp_enable_disable_reply
1742 /** \brief add or delete gpe_iface
1743 @param client_index - opaque cookie to identify the sender
1744 @param context - sender context, to match reply w/ request
1745 @param is_add - add address if non-zero, else delete
1747 define lisp_gpe_add_del_iface
1757 /** \brief Reply for gpe_iface add/del
1758 @param context - returned sender context, to match reply w/ request
1759 @param retval - return code
1761 define lisp_gpe_add_del_iface_reply
1767 /** \brief configure or disable LISP PITR node
1768 @param client_index - opaque cookie to identify the sender
1769 @param context - sender context, to match reply w/ request
1770 @param ls_name - locator set name
1771 @param is_add - add locator set if non-zero, else disable pitr
1773 define lisp_pitr_set_locator_set
1781 /** \brief Reply for lisp_pitr_set_locator_set
1782 @param context - returned sender context, to match reply w/ request
1783 @param retval - return code
1785 define lisp_pitr_set_locator_set_reply
1791 /** \brief Get state of LISP RLOC probing
1792 @param client_index - opaque cookie to identify the sender
1793 @param context - sender context, to match reply w/ request
1795 define show_lisp_rloc_probe_state
1801 /** \brief Reply for show_lisp_rloc_probe_state
1802 @param context - returned sender context, to match reply w/ request
1803 @param retval - return code
1804 @param is_enabled - state of RLOC probing
1806 define show_lisp_rloc_probe_state_reply
1813 /** \brief enable/disable LISP RLOC probing
1814 @param client_index - opaque cookie to identify the sender
1815 @param context - sender context, to match reply w/ request
1816 @param is_enable - enable if non-zero; disable otherwise
1818 define lisp_rloc_probe_enable_disable
1825 /** \brief Reply for lisp_rloc_probe_enable_disable
1826 @param context - returned sender context, to match reply w/ request
1827 @param retval - return code
1829 define lisp_rloc_probe_enable_disable_reply
1835 /** \brief enable/disable LISP map-register
1836 @param client_index - opaque cookie to identify the sender
1837 @param context - sender context, to match reply w/ request
1838 @param is_enable - enable if non-zero; disable otherwise
1840 define lisp_map_register_enable_disable
1847 /** \brief Reply for lisp_map_register_enable_disable
1848 @param context - returned sender context, to match reply w/ request
1849 @param retval - return code
1851 define lisp_map_register_enable_disable_reply
1857 /** \brief Get state of LISP map-register
1858 @param client_index - opaque cookie to identify the sender
1859 @param context - sender context, to match reply w/ request
1861 define show_lisp_map_register_state
1867 /** \brief Reply for show_lisp_map_register_state
1868 @param context - returned sender context, to match reply w/ request
1869 @param retval - return code
1871 define show_lisp_map_register_state_reply
1878 /** \brief set LISP map-request mode. Based on configuration VPP will send
1879 src/dest or just normal destination map requests.
1880 @param client_index - opaque cookie to identify the sender
1881 @param context - sender context, to match reply w/ request
1882 @param mode - new map-request mode. Supported values are:
1883 0 - destination only
1884 1 - source/destaination
1886 define lisp_map_request_mode
1893 /** \brief Reply for lisp_map_request_mode
1894 @param context - returned sender context, to match reply w/ request
1895 @param retval - return code
1897 define lisp_map_request_mode_reply
1903 /** \brief Request for LISP map-request mode
1904 @param client_index - opaque cookie to identify the sender
1905 @param context - sender context, to match reply w/ request
1907 define show_lisp_map_request_mode
1913 /** \brief Reply for show_lisp_map_request_mode
1914 @param context - returned sender context, to match reply w/ request
1915 @param retval - return code
1916 @param mode - map-request mode
1918 define show_lisp_map_request_mode_reply
1925 /** \brief add or delete remote static mapping
1926 @param client_index - opaque cookie to identify the sender
1927 @param context - sender context, to match reply w/ request
1928 @param is_add - add address if non-zero, else delete
1929 @param is_src_dst - flag indicating src/dst based routing policy
1930 @param del_all - if set, delete all remote mappings
1931 @param vni - virtual network instance
1932 @param action - negative map-reply action
1937 @param deid - dst EID
1938 @param seid - src EID, valid only if is_src_dst is enabled
1939 @param rloc_num - number of remote locators
1940 @param rlocs - remote locator records
1941 Structure of remote locator:
1950 define lisp_add_del_remote_mapping
1968 /** \brief Reply for lisp_add_del_remote_mapping
1969 @param context - returned sender context, to match reply w/ request
1970 @param retval - return code
1972 define lisp_add_del_remote_mapping_reply
1978 /** \brief add or delete LISP adjacency adjacency
1979 @param client_index - opaque cookie to identify the sender
1980 @param context - sender context, to match reply w/ request
1981 @param is_add - add address if non-zero, else delete
1982 @param vni - virtual network instance
1987 @param reid - remote EID
1988 @param leid - local EID
1990 define lisp_add_del_adjacency
2003 /** \brief Reply for lisp_add_del_adjacency
2004 @param context - returned sender context, to match reply w/ request
2005 @param retval - return code
2007 define lisp_add_del_adjacency_reply
2013 /** \brief add or delete map request itr rlocs
2014 @param client_index - opaque cookie to identify the sender
2015 @param context - sender context, to match reply w/ request
2016 @param is_add - add address if non-zero, else delete
2017 @param locator_set_name - locator set name
2019 define lisp_add_del_map_request_itr_rlocs
2024 u8 locator_set_name[64];
2027 /** \brief Reply for lisp_add_del_map_request_itr_rlocs
2028 @param context - returned sender context, to match reply w/ request
2029 @param retval - return code
2032 define lisp_add_del_map_request_itr_rlocs_reply
2038 /** \brief map/unmap vni/bd_index to vrf
2039 @param client_index - opaque cookie to identify the sender
2040 @param context - sender context, to match reply w/ request
2041 @param is_add - add or delete mapping
2042 @param dp_table - virtual network id/bridge domain index
2045 define lisp_eid_table_add_del_map
2055 /** \brief Reply for lisp_eid_table_add_del_map
2056 @param context - returned sender context, to match reply w/ request
2057 @param retval - return code
2059 define lisp_eid_table_add_del_map_reply
2065 /** \brief Request for map lisp locator status
2066 @param client_index - opaque cookie to identify the sender
2067 @param context - sender context, to match reply w/ request
2068 @param locator_set_index - index of locator_set
2069 @param ls_name - locator set name
2070 @param is_index_set - flag indicating whether ls_name or ls_index is set
2072 define lisp_locator_dump
2081 /** \brief LISP locator_set status
2082 @param local - if is set, then locator is local
2083 @param locator_set_name - name of the locator_set
2084 @param sw_if_index - sw_if_index of the locator
2085 @param priority - locator priority
2086 @param weight - locator weight
2088 define lisp_locator_details
2099 /** \brief LISP locator_set status
2100 @param context - sender context, to match reply w/ request
2101 @param ls_index - locator set index
2102 @param ls_name - name of the locator set
2104 define lisp_locator_set_details
2111 /** \brief Request for locator_set summary status
2112 @param client_index - opaque cookie to identify the sender
2113 @param context - sender context, to match reply w/ request
2114 @param filter - filter type
2117 1: local locator sets
2118 2: remote locator sets
2120 define lisp_locator_set_dump
2127 /** \brief Dump lisp eid-table
2128 @param client_index - opaque cookie to identify the sender
2129 @param context - sender context, to match reply w/ request
2130 @param locator_set_index - index of locator_set, if ~0 then the mapping
2132 @param action - negative map request action
2133 @param is_local - local if non-zero, else remote
2138 @param is_src_dst - EID is type of source/destination
2139 @param eid - EID can be ip4, ip6 or mac
2140 @param eid_prefix_len - prefix length
2141 @param seid - source EID can be ip4, ip6 or mac
2142 @param seid_prefix_len - source prefix length
2143 @param vni - virtual network instance
2144 @param ttl - time to live
2145 @param authoritative - authoritative
2150 @param key - secret key
2153 define lisp_eid_table_details
2156 u32 locator_set_index;
2172 /** \brief Request for eid table summary status
2173 @param client_index - opaque cookie to identify the sender
2174 @param context - sender context, to match reply w/ request
2175 @param eid_set - if non-zero request info about specific mapping
2176 @param vni - virtual network instance; valid only if eid_set != 0
2177 @param prefix_length - prefix length if EID is IP address;
2178 valid only if eid_set != 0
2179 @param eid_type - EID type; valid only if eid_set != 0
2183 2: EID is ethernet address
2184 @param eid - endpoint identifier
2185 @param filter - filter type;
2191 define lisp_eid_table_dump
2203 /** \brief LISP adjacency
2208 @param reid - remote EID
2209 @param leid - local EID
2210 @param reid_prefix_len - remote EID IP prefix length
2211 @param leid_prefix_len - local EID IP prefix length
2213 typeonly manual_print manual_endian define lisp_adjacency
2222 /** \brief LISP adjacency reply
2223 @param count - number of adjacencies
2224 @param adjacencies - array of adjacencies
2226 manual_endian manual_print define lisp_adjacencies_get_reply
2231 vl_api_lisp_adjacency_t adjacencies[count];
2234 /** \brief Request for LISP adjacencies
2235 @param client_index - opaque cookie to identify the sender
2236 @param context - sender context, to match reply w/ request
2237 @param vni - filter adjacencies by VNI
2239 define lisp_adjacencies_get
2246 /** \brief Shows relationship between vni and vrf/bd
2247 @param dp_table - VRF index or bridge domain index
2248 @param vni - vitual network instance
2250 define lisp_eid_table_map_details
2257 /** \brief Request for lisp_eid_table_map_details
2258 @param client_index - opaque cookie to identify the sender
2259 @param context - sender context, to match reply w/ request
2260 @param is_l2 - if set dump vni/bd mappings else vni/vrf
2262 define lisp_eid_table_map_dump
2269 /** \brief Dumps all VNIs used in mappings
2270 @param client_index - opaque cookie to identify the sender
2271 @param context - sender context, to match reply w/ request
2273 define lisp_eid_table_vni_dump
2279 /** \brief reply to lisp_eid_table_vni_dump
2280 @param client_index - opaque cookie to identify the sender
2281 @param context - sender context, to match reply w/ request
2282 @param vni - virtual network instance
2284 define lisp_eid_table_vni_details
2291 define lisp_gpe_tunnel_details
2297 u8 destination_ip[16];
2309 /** \brief Request for gpe tunnel summary status
2310 @param client_index - opaque cookie to identify the sender
2311 @param context - sender context, to match reply w/ request
2313 define lisp_gpe_tunnel_dump
2319 /** \brief LISP map resolver status
2320 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2321 @param ip_address - array of address bytes
2323 define lisp_map_resolver_details
2330 /** \brief Request for map resolver summary status
2331 @param client_index - opaque cookie to identify the sender
2332 @param context - sender context, to match reply w/ request
2334 define lisp_map_resolver_dump
2340 /** \brief LISP map server details
2341 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2342 @param ip_address - array of address bytes
2344 define lisp_map_server_details
2351 /** \brief Request for map server summary status
2352 @param client_index - opaque cookie to identify the sender
2353 @param context - sender context, to match reply w/ request
2355 define lisp_map_server_dump
2361 /** \brief Request for lisp-gpe protocol status
2362 @param client_index - opaque cookie to identify the sender
2363 @param context - sender context, to match reply w/ request
2365 define show_lisp_status
2371 /** \brief Status of lisp, enable or disable
2372 @param context - sender context, to match reply w/ request
2373 @param feature_status - lisp enable if non-zero, else disable
2374 @param gpe_status - lisp enable if non-zero, else disable
2376 define show_lisp_status_reply
2384 /** \brief Get LISP map request itr rlocs status
2385 @param context - sender context, to match reply w/ request
2386 @param locator_set_name - name of the locator_set
2388 define lisp_get_map_request_itr_rlocs
2394 /** \brief Request for map request itr rlocs summary status
2396 define lisp_get_map_request_itr_rlocs_reply
2400 u8 locator_set_name[64];
2403 /** \brief Request for lisp pitr status
2404 @param client_index - opaque cookie to identify the sender
2405 @param context - sender context, to match reply w/ request
2407 define show_lisp_pitr
2413 /** \brief Status of lisp pitr, enable or disable
2414 @param context - sender context, to match reply w/ request
2415 @param status - lisp pitr enable if non-zero, else disable
2416 @param locator_set_name - name of the locator_set
2418 define show_lisp_pitr_reply
2423 u8 locator_set_name[64];
2426 /* Gross kludge, DGMS */
2427 define interface_name_renumber
2432 u32 new_show_dev_instance;
2435 define interface_name_renumber_reply
2441 /** \brief Register for ip4 arp resolution events
2442 @param client_index - opaque cookie to identify the sender
2443 @param context - sender context, to match reply w/ request
2444 @param enable_disable - 1 => register for events, 0 => cancel registration
2445 @param pid - sender's pid
2446 @param address - the exact ip4 address of interest
2448 define want_ip4_arp_events
2457 /** \brief Reply for interface events registration
2458 @param context - returned sender context, to match reply w/ request
2459 @param retval - return code
2461 define want_ip4_arp_events_reply
2467 /** \brief Tell client about an ip4 arp resolution event
2468 @param client_index - opaque cookie to identify the sender
2469 @param context - sender context, to match reply w/ request
2470 @param address - the exact ip4 address of interest
2471 @param pid - client pid registered to receive notification
2472 @param sw_if_index - interface which received ARP packet
2473 @param new_mac - the new mac address
2474 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
2476 define ip4_arp_event
2487 /** \brief Register for ip6 nd resolution events
2488 @param client_index - opaque cookie to identify the sender
2489 @param context - sender context, to match reply w/ request
2490 @param enable_disable - 1 => register for events, 0 => cancel registration
2491 @param pid - sender's pid
2492 @param address - the exact ip6 address of interest
2494 define want_ip6_nd_events
2503 /** \brief Reply for ip6 nd resolution events registration
2504 @param context - returned sender context, to match reply w/ request
2505 @param retval - return code
2507 define want_ip6_nd_events_reply
2513 /** \brief Tell client about an ip6 nd resolution or mac/ip event
2514 @param client_index - opaque cookie to identify the sender
2515 @param context - sender context, to match reply w/ request
2516 @param pid - client pid registered to receive notification
2517 @param sw_if_index - interface which received ARP packet
2518 @param address - the exact ip6 address of interest
2519 @param new_mac - the new mac address
2520 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
2533 /** \brief L2 bridge domain add or delete request
2534 @param client_index - opaque cookie to identify the sender
2535 @param context - sender context, to match reply w/ request
2536 @param bd_id - the bridge domain to create
2537 @param flood - enable/disable bcast/mcast flooding in the bd
2538 @param uu_flood - enable/disable uknown unicast flood in the bd
2539 @param forward - enable/disable forwarding on all interfaces in the bd
2540 @param learn - enable/disable learning on all interfaces in the bd
2541 @param arp_term - enable/disable arp termination in the bd
2542 @param mac_age - mac aging time in min, 0 for disabled
2543 @param is_add - add or delete flag
2545 define bridge_domain_add_del
2559 /** \brief L2 bridge domain add or delete response
2560 @param context - sender context, to match reply w/ request
2561 @param retval - return code for the set bridge flags request
2563 define bridge_domain_add_del_reply
2569 /** \brief L2 bridge domain request operational state details
2570 @param client_index - opaque cookie to identify the sender
2571 @param context - sender context, to match reply w/ request
2572 @param bd_id - the bridge domain id desired or ~0 to request all bds
2574 define bridge_domain_dump
2581 /** \brief L2 bridge domain operational state response
2582 @param bd_id - the bridge domain id
2583 @param flood - bcast/mcast flooding state on all interfaces in the bd
2584 @param uu_flood - uknown unicast flooding state on all interfaces in the bd
2585 @param forward - forwarding state on all interfaces in the bd
2586 @param learn - learning state on all interfaces in the bd
2587 @param arp_term - arp termination state on all interfaces in the bd
2588 @param mac_age - mac aging time in min, 0 for disabled
2589 @param n_sw_ifs - number of sw_if_index's in the domain
2591 define bridge_domain_details
2601 u32 bvi_sw_if_index;
2605 /** \brief L2 bridge domain sw interface operational state response
2606 @param bd_id - the bridge domain id
2607 @param sw_if_index - sw_if_index in the domain
2608 @param shg - split horizon group for the interface
2610 define bridge_domain_sw_if_details
2618 /** \brief DHCP Client config add / del request
2619 @param client_index - opaque cookie to identify the sender
2620 @param context - sender context, to match reply w/ request
2621 @param sw_if_index - index of the interface for DHCP client
2622 @param hostname - hostname
2623 @param is_add - add the config if non-zero, else delete
2624 @param want_dhcp_event - DHCP event sent to the sender
2625 via dhcp_compl_event API message if non-zero
2626 @param pid - sender's pid
2628 define dhcp_client_config
2639 /** \brief DHCP Client config response
2640 @param context - sender context, to match reply w/ request
2641 @param retval - return code for the request
2643 define dhcp_client_config_reply
2649 /** \brief Set/unset input ACL interface
2650 @param client_index - opaque cookie to identify the sender
2651 @param context - sender context, to match reply w/ request
2652 @param sw_if_index - interface to set/unset input ACL
2653 @param ip4_table_index - ip4 classify table index (~0 for skip)
2654 @param ip6_table_index - ip6 classify table index (~0 for skip)
2655 @param l2_table_index - l2 classify table index (~0 for skip)
2656 @param is_add - Set input ACL if non-zero, else unset
2657 Note: User is recommeneded to use just one valid table_index per call.
2658 (ip4_table_index, ip6_table_index, or l2_table_index)
2660 define input_acl_set_interface
2665 u32 ip4_table_index;
2666 u32 ip6_table_index;
2671 /** \brief Set/unset input ACL interface response
2672 @param context - sender context, to match reply w/ request
2673 @param retval - return code for the request
2675 define input_acl_set_interface_reply
2681 /** \brief IPsec: Add/delete Security Policy Database
2682 @param client_index - opaque cookie to identify the sender
2683 @param context - sender context, to match reply w/ request
2684 @param is_add - add SPD if non-zero, else delete
2685 @param spd_id - SPD instance id (control plane allocated)
2688 define ipsec_spd_add_del
2696 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
2697 @param context - returned sender context, to match reply w/ request
2698 @param retval - return code
2701 define ipsec_spd_add_del_reply
2707 /** \brief IPsec: Add/delete SPD from interface
2709 @param client_index - opaque cookie to identify the sender
2710 @param context - sender context, to match reply w/ request
2711 @param is_add - add security mode if non-zero, else delete
2712 @param sw_if_index - index of the interface
2713 @param spd_id - SPD instance id to use for lookups
2717 define ipsec_interface_add_del_spd
2727 /** \brief Reply for IPsec: Add/delete SPD from interface
2728 @param context - returned sender context, to match reply w/ request
2729 @param retval - return code
2732 define ipsec_interface_add_del_spd_reply
2738 /** \brief IPsec: Add/delete Security Policy Database entry
2740 See RFC 4301, 4.4.1.1 on how to match packet to selectors
2742 @param client_index - opaque cookie to identify the sender
2743 @param context - sender context, to match reply w/ request
2744 @param is_add - add SPD if non-zero, else delete
2745 @param spd_id - SPD instance id (control plane allocated)
2746 @param priority - priority of SPD entry (non-unique value). Used to order SPD matching - higher priorities match before lower
2747 @param is_outbound - entry applies to outbound traffic if non-zero, otherwise applies to inbound traffic
2748 @param is_ipv6 - remote/local address are IPv6 if non-zero, else IPv4
2749 @param remote_address_start - start of remote address range to match
2750 @param remote_address_stop - end of remote address range to match
2751 @param local_address_start - start of local address range to match
2752 @param local_address_stop - end of local address range to match
2753 @param protocol - protocol type to match [0 means any]
2754 @param remote_port_start - start of remote port range to match ...
2755 @param remote_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
2756 @param local_port_start - start of local port range to match ...
2757 @param local_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
2758 @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)
2759 @param sa_id - SAD instance id (control plane allocated)
2763 define ipsec_spd_add_del_entry
2776 u8 remote_address_start[16];
2777 u8 remote_address_stop[16];
2778 u8 local_address_start[16];
2779 u8 local_address_stop[16];
2783 u16 remote_port_start;
2784 u16 remote_port_stop;
2785 u16 local_port_start;
2786 u16 local_port_stop;
2793 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
2794 @param context - returned sender context, to match reply w/ request
2795 @param retval - return code
2798 define ipsec_spd_add_del_entry_reply
2804 /** \brief IPsec: Add/delete Security Association Database entry
2805 @param client_index - opaque cookie to identify the sender
2806 @param context - sender context, to match reply w/ request
2807 @param is_add - add SAD entry if non-zero, else delete
2809 @param sad_id - sad id
2811 @param spi - security parameter index
2813 @param protocol - 0 = AH, 1 = ESP
2815 @param crypto_algorithm - 0 = Null, 1 = AES-CBC-128, 2 = AES-CBC-192, 3 = AES-CBC-256, 4 = 3DES-CBC
2816 @param crypto_key_length - length of crypto_key in bytes
2817 @param crypto_key - crypto keying material
2819 @param integrity_algorithm - 0 = None, 1 = MD5-96, 2 = SHA1-96, 3 = SHA-256, 4 = SHA-384, 5=SHA-512
2820 @param integrity_key_length - length of integrity_key in bytes
2821 @param integrity_key - integrity keying material
2823 @param use_extended_sequence_number - use ESN when non-zero
2825 @param is_tunnel - IPsec tunnel mode if non-zero, else transport mode
2826 @param is_tunnel_ipv6 - IPsec tunnel mode is IPv6 if non-zero, else IPv4 tunnel only valid if is_tunnel is non-zero
2827 @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
2828 @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
2832 IPsec tunnel address copy mode (to support GDOI)
2835 define ipsec_sad_add_del_entry
2847 u8 crypto_algorithm;
2848 u8 crypto_key_length;
2851 u8 integrity_algorithm;
2852 u8 integrity_key_length;
2853 u8 integrity_key[128];
2855 u8 use_extended_sequence_number;
2859 u8 tunnel_src_address[16];
2860 u8 tunnel_dst_address[16];
2863 /** \brief Reply for IPsec: Add/delete Security Association Database entry
2864 @param context - returned sender context, to match reply w/ request
2865 @param retval - return code
2868 define ipsec_sad_add_del_entry_reply
2874 /** \brief IPsec: Update Security Association keys
2875 @param client_index - opaque cookie to identify the sender
2876 @param context - sender context, to match reply w/ request
2878 @param sa_id - sa id
2880 @param crypto_key_length - length of crypto_key in bytes
2881 @param crypto_key - crypto keying material
2883 @param integrity_key_length - length of integrity_key in bytes
2884 @param integrity_key - integrity keying material
2887 define ipsec_sa_set_key
2894 u8 crypto_key_length;
2897 u8 integrity_key_length;
2898 u8 integrity_key[128];
2901 /** \brief Reply for IPsec: Update Security Association keys
2902 @param context - returned sender context, to match reply w/ request
2903 @param retval - return code
2906 define ipsec_sa_set_key_reply
2912 /** \brief IKEv2: Add/delete profile
2913 @param client_index - opaque cookie to identify the sender
2914 @param context - sender context, to match reply w/ request
2916 @param name - IKEv2 profile name
2917 @param is_add - Add IKEv2 profile if non-zero, else delete
2919 define ikev2_profile_add_del
2928 /** \brief Reply for IKEv2: Add/delete profile
2929 @param context - returned sender context, to match reply w/ request
2930 @param retval - return code
2932 define ikev2_profile_add_del_reply
2938 /** \brief IKEv2: Set IKEv2 profile authentication method
2939 @param client_index - opaque cookie to identify the sender
2940 @param context - sender context, to match reply w/ request
2942 @param name - IKEv2 profile name
2943 @param auth_method - IKEv2 authentication method (shared-key-mic/rsa-sig)
2944 @param is_hex - Authentication data in hex format if non-zero, else string
2945 @param data_len - Authentication data length
2946 @param data - Authentication data (for rsa-sig cert file path)
2948 define ikev2_profile_set_auth
2960 /** \brief Reply for IKEv2: Set IKEv2 profile authentication method
2961 @param context - returned sender context, to match reply w/ request
2962 @param retval - return code
2964 define ikev2_profile_set_auth_reply
2970 /** \brief IKEv2: Set IKEv2 profile local/remote identification
2971 @param client_index - opaque cookie to identify the sender
2972 @param context - sender context, to match reply w/ request
2974 @param name - IKEv2 profile name
2975 @param is_local - Identification is local if non-zero, else remote
2976 @param id_type - Identification type
2977 @param data_len - Identification data length
2978 @param data - Identification data
2980 define ikev2_profile_set_id
2992 /** \brief Reply for IKEv2:
2993 @param context - returned sender context, to match reply w/ request
2994 @param retval - return code
2996 define ikev2_profile_set_id_reply
3002 /** \brief IKEv2: Set IKEv2 profile traffic selector parameters
3003 @param client_index - opaque cookie to identify the sender
3004 @param context - sender context, to match reply w/ request
3006 @param name - IKEv2 profile name
3007 @param is_local - Traffic selector is local if non-zero, else remote
3008 @param proto - Traffic selector IP protocol (if zero not relevant)
3009 @param start_port - The smallest port number allowed by traffic selector
3010 @param end_port - The largest port number allowed by traffic selector
3011 @param start_addr - The smallest address included in traffic selector
3012 @param end_addr - The largest address included in traffic selector
3014 define ikev2_profile_set_ts
3028 /** \brief Reply for IKEv2: Set IKEv2 profile traffic selector parameters
3029 @param context - returned sender context, to match reply w/ request
3030 @param retval - return code
3032 define ikev2_profile_set_ts_reply
3038 /** \brief IKEv2: Set IKEv2 local RSA private key
3039 @param client_index - opaque cookie to identify the sender
3040 @param context - sender context, to match reply w/ request
3042 @param key_file - Key file absolute path
3044 define ikev2_set_local_key
3052 /** \brief Reply for IKEv2: Set IKEv2 local key
3053 @param context - returned sender context, to match reply w/ request
3054 @param retval - return code
3056 define ikev2_set_local_key_reply
3062 /** \brief Tell client about a DHCP completion event
3063 @param client_index - opaque cookie to identify the sender
3064 @param pid - client pid registered to receive notification
3065 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
3066 @param host_address - Host IP address
3067 @param router_address - Router IP address
3068 @param host_mac - Host MAC address
3070 define dhcp_compl_event
3076 u8 host_address[16];
3077 u8 router_address[16];
3081 /** \brief cop: enable/disable junk filtration features on an interface
3082 @param client_index - opaque cookie to identify the sender
3083 @param context - sender context, to match reply w/ request
3084 @param sw_if_inded - desired interface
3085 @param enable_disable - 1 => enable, 0 => disable
3088 define cop_interface_enable_disable
3096 /** \brief cop: interface enable/disable junk filtration reply
3097 @param context - returned sender context, to match reply w/ request
3098 @param retval - return code
3101 define cop_interface_enable_disable_reply
3107 /** \brief cop: enable/disable whitelist filtration features on an interface
3108 Note: the supplied fib_id must match in order to remove the feature!
3110 @param client_index - opaque cookie to identify the sender
3111 @param context - sender context, to match reply w/ request
3112 @param sw_if_index - interface handle, physical interfaces only
3113 @param fib_id - fib identifier for the whitelist / blacklist fib
3114 @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration
3115 @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration
3116 @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it
3119 define cop_whitelist_enable_disable
3130 /** \brief cop: interface enable/disable junk filtration reply
3131 @param context - returned sender context, to match reply w/ request
3132 @param retval - return code
3135 define cop_whitelist_enable_disable_reply
3141 /** \brief get_node_graph - get a copy of the vpp node graph
3142 including the current set of graph arcs.
3144 @param client_index - opaque cookie to identify the sender
3145 @param context - sender context, to match reply w/ request
3148 define get_node_graph
3154 /** \brief get_node_graph_reply
3155 @param context - returned sender context, to match reply w/ request
3156 @param retval - return code
3157 @param reply_in_shmem - result from vlib_node_serialize, in shared
3158 memory. Process with vlib_node_unserialize, remember to switch
3159 heaps and free the result.
3162 define get_node_graph_reply
3169 /** \brief IOAM enable : Enable in-band OAM
3170 @param id - profile id
3171 @param seqno - To enable Seqno Processing
3172 @param analyse - Enabling analysis of iOAM at decap node
3173 @param pow_enable - Proof of Work enabled or not flag
3174 @param trace_enable - iOAM Trace enabled or not flag
3188 /** \brief iOAM Trace profile add / del response
3189 @param context - sender context, to match reply w/ request
3190 @param retval - return value for request
3192 define ioam_enable_reply
3198 /** \brief iOAM disable
3199 @param client_index - opaque cookie to identify the sender
3200 @param context - sender context, to match reply w/ request
3201 @param index - MAP Domain index
3210 /** \brief iOAM disable response
3211 @param context - sender context, to match reply w/ request
3212 @param retval - return value for request
3214 define ioam_disable_reply
3220 /** \brief Add/del policer
3221 @param client_index - opaque cookie to identify the sender
3222 @param context - sender context, to match reply w/ request
3223 @param is_add - add policer if non-zero, else delete
3224 @param name - policer name
3227 @param cb - Committed Burst
3228 @param eb - Excess or Peak Burst
3229 @param rate_type - rate type
3230 @param round_type - rounding type
3231 @param type - policer algorithm
3232 @param color_aware - 0=color-blind, 1=color-aware
3233 @param conform_action_type - conform action type
3234 @param conform_dscp - DSCP for conform mar-and-transmit action
3235 @param exceed_action_type - exceed action type
3236 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3237 @param violate_action_type - violate action type
3238 @param violate_dscp - DSCP for violate mar-and-transmit action
3240 define policer_add_del
3255 u8 conform_action_type;
3257 u8 exceed_action_type;
3259 u8 violate_action_type;
3263 /** \brief Add/del policer response
3264 @param context - sender context, to match reply w/ request
3265 @param retval - return value for request
3266 @param policer_index - for add, returned index of the new policer
3268 define policer_add_del_reply
3275 /** \brief Get list of policers
3276 @param client_index - opaque cookie to identify the sender
3277 @param context - sender context, to match reply w/ request
3278 @param match_name_valid - if 0 request all policers otherwise use match_name
3279 @param match_name - policer name
3286 u8 match_name_valid;
3290 /** \brief Policer operational state response.
3291 @param context - sender context, to match reply w/ request
3292 @param name - policer name
3295 @param cb - Committed Burst
3296 @param eb - Excess or Peak Burst
3297 @param rate_type - rate type
3298 @param round_type - rounding type
3299 @param type - policer algorithm
3300 @param conform_action_type - conform action type
3301 @param conform_dscp - DSCP for conform mar-and-transmit action
3302 @param exceed_action_type - exceed action type
3303 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3304 @param violate_action_type - violate action type
3305 @param violate_dscp - DSCP for violate mar-and-transmit action
3306 @param single_rate - 1 = single rate policer, 0 = two rate policer
3307 @param color_aware - for hierarchical policing
3308 @param scale - power-of-2 shift amount for lower rates
3309 @param cir_tokens_per_period - number of tokens for each period
3310 @param pir_tokens_per_period - number of tokens for each period for 2-rate policer
3311 @param current_limit - current limit
3312 @param current_bucket - current bucket
3313 @param extended_limit - extended limit
3314 @param extended_bucket - extended bucket
3315 @param last_update_time - last update time
3317 define policer_details
3329 u8 conform_action_type;
3331 u8 exceed_action_type;
3333 u8 violate_action_type;
3338 u32 cir_tokens_per_period;
3339 u32 pir_tokens_per_period;
3343 u32 extended_bucket;
3344 u64 last_update_time;
3347 /** \brief Set/unset policer classify interface
3348 @param client_index - opaque cookie to identify the sender
3349 @param context - sender context, to match reply w/ request
3350 @param sw_if_index - interface to set/unset policer classify
3351 @param ip4_table_index - ip4 classify table index (~0 for skip)
3352 @param ip6_table_index - ip6 classify table index (~0 for skip)
3353 @param l2_table_index - l2 classify table index (~0 for skip)
3354 @param is_add - Set if non-zero, else unset
3355 Note: User is recommeneded to use just one valid table_index per call.
3356 (ip4_table_index, ip6_table_index, or l2_table_index)
3358 define policer_classify_set_interface
3363 u32 ip4_table_index;
3364 u32 ip6_table_index;
3369 /** \brief Set/unset policer classify interface response
3370 @param context - sender context, to match reply w/ request
3371 @param retval - return value for request
3373 define policer_classify_set_interface_reply
3379 /** \brief Get list of policer classify interfaces and tables
3380 @param client_index - opaque cookie to identify the sender
3381 @param context - sender context, to match reply w/ request
3382 @param type - classify table type
3384 define policer_classify_dump
3391 /** \brief Policer iclassify operational state response.
3392 @param context - sender context, to match reply w/ request
3393 @param sw_if_index - software interface index
3394 @param table_index - classify table index
3396 define policer_classify_details
3403 /** \brief Classify get table IDs request
3404 @param client_index - opaque cookie to identify the sender
3405 @param context - sender context, to match reply w/ request
3407 define classify_table_ids
3413 /** \brief Reply for classify get table IDs request
3414 @param context - sender context which was passed in the request
3415 @param count - number of ids returned in response
3416 @param ids - array of classify table ids
3418 define classify_table_ids_reply
3426 /** \brief Classify table ids by interface index request
3427 @param client_index - opaque cookie to identify the sender
3428 @param context - sender context, to match reply w/ request
3429 @param sw_if_index - index of the interface
3431 define classify_table_by_interface
3438 /** \brief Reply for classify table id by interface index request
3439 @param context - sender context which was passed in the request
3440 @param count - number of ids returned in response
3441 @param sw_if_index - index of the interface
3442 @param l2_table_id - l2 classify table index
3443 @param ip4_table_id - ip4 classify table index
3444 @param ip6_table_id - ip6 classify table index
3446 define classify_table_by_interface_reply
3456 /** \brief Classify table info
3457 @param client_index - opaque cookie to identify the sender
3458 @param context - sender context, to match reply w/ request
3459 @param table_id - classify table index
3461 define classify_table_info
3468 /** \brief Reply for classify table info request
3469 @param context - sender context which was passed in the request
3470 @param count - number of ids returned in response
3471 @param table_id - classify table index
3472 @param nbuckets - number of buckets when adding a table
3473 @param match_n_vectors - number of match vectors
3474 @param skip_n_vectors - number of skip_n_vectors
3475 @param active_sessions - number of sessions (active entries)
3476 @param next_table_index - index of next table
3477 @param miss_next_index - index of miss table
3478 @param mask[] - match mask
3480 define classify_table_info_reply
3486 u32 match_n_vectors;
3488 u32 active_sessions;
3489 u32 next_table_index;
3490 u32 miss_next_index;
3492 u8 mask[mask_length];
3495 /** \brief Classify sessions dump request
3496 @param client_index - opaque cookie to identify the sender
3497 @param context - sender context, to match reply w/ request
3498 @param table_id - classify table index
3500 define classify_session_dump
3507 /** \brief Reply for classify table session dump request
3508 @param context - sender context which was passed in the request
3509 @param count - number of ids returned in response
3510 @param table_id - classify table index
3511 @param hit_next_index - hit_next_index of session
3512 @param opaque_index - for add, opaque_index of session
3513 @param advance - advance value of session
3514 @param match[] - match value for session
3516 define classify_session_details
3525 u8 match[match_length];
3528 /** \brief Configure IPFIX exporter process request
3529 @param client_index - opaque cookie to identify the sender
3530 @param context - sender context, to match reply w/ request
3531 @param collector_address - address of IPFIX collector
3532 @param collector_port - port of IPFIX collector
3533 @param src_address - address of IPFIX exporter
3534 @param vrf_id - VRF / fib table ID
3535 @param path_mtu - Path MTU between exporter and collector
3536 @param template_interval - number of seconds after which to resend template
3537 @param udp_checksum - UDP checksum calculation enable flag
3539 define set_ipfix_exporter
3543 u8 collector_address[16];
3548 u32 template_interval;
3552 /** \brief Reply to IPFIX exporter configure request
3553 @param context - sender context which was passed in the request
3555 define set_ipfix_exporter_reply
3561 /** \brief IPFIX exporter dump request
3562 @param client_index - opaque cookie to identify the sender
3563 @param context - sender context, to match reply w/ request
3565 define ipfix_exporter_dump
3571 /** \brief Reply to IPFIX exporter dump request
3572 @param context - sender context which was passed in the request
3573 @param collector_address - address of IPFIX collector
3574 @param collector_port - port of IPFIX collector
3575 @param src_address - address of IPFIX exporter
3576 @param fib_index - fib table index
3577 @param path_mtu - Path MTU between exporter and collector
3578 @param template_interval - number of seconds after which to resend template
3579 @param udp_checksum - UDP checksum calculation enable flag
3581 define ipfix_exporter_details
3584 u8 collector_address[16];
3589 u32 template_interval;
3593 /** \brief IPFIX classify stream configure request
3594 @param client_index - opaque cookie to identify the sender
3595 @param context - sender context, to match reply w/ request
3596 @param domain_id - domain ID reported in IPFIX messages for classify stream
3597 @param src_port - source port of UDP session for classify stream
3599 define set_ipfix_classify_stream {
3606 /** \brief IPFIX classify stream configure response
3607 @param context - sender context, to match reply w/ request
3608 @param retval - return value for request
3610 define set_ipfix_classify_stream_reply {
3615 /** \brief IPFIX classify stream dump request
3616 @param client_index - opaque cookie to identify the sender
3617 @param context - sender context, to match reply w/ request
3619 define ipfix_classify_stream_dump {
3624 /** \brief Reply to IPFIX classify stream dump request
3625 @param context - sender context, to match reply w/ request
3626 @param domain_id - domain ID reported in IPFIX messages for classify stream
3627 @param src_port - source port of UDP session for classify stream
3629 define ipfix_classify_stream_details {
3635 /** \brief IPFIX add or delete classifier table request
3636 @param client_index - opaque cookie to identify the sender
3637 @param context - sender context, to match reply w/ request
3638 @param table_id - classifier table ID
3639 @param ip_version - version of IP used in the classifier table
3640 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
3642 define ipfix_classify_table_add_del {
3647 u8 transport_protocol;
3651 /** \brief IPFIX add classifier table response
3652 @param context - sender context which was passed in the request
3654 define ipfix_classify_table_add_del_reply {
3659 /** \brief IPFIX classify tables dump request
3660 @param client_index - opaque cookie to identify the sender
3661 @param context - sender context, to match reply w/ request
3663 define ipfix_classify_table_dump {
3668 /** \brief Reply to IPFIX classify tables dump request
3669 @param context - sender context, to match reply w/ request
3670 @param table_id - classifier table ID
3671 @param ip_version - version of IP used in the classifier table
3672 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
3674 define ipfix_classify_table_details {
3678 u8 transport_protocol;
3681 /** \brief Set/unset flow classify interface
3682 @param client_index - opaque cookie to identify the sender
3683 @param context - sender context, to match reply w/ request
3684 @param sw_if_index - interface to set/unset flow classify
3685 @param ip4_table_index - ip4 classify table index (~0 for skip)
3686 @param ip6_table_index - ip6 classify table index (~0 for skip)
3687 @param l2_table_index - l2 classify table index (~0 for skip)
3688 @param is_add - Set if non-zero, else unset
3689 Note: User is recommeneded to use just one valid table_index per call.
3690 (ip4_table_index, ip6_table_index, or l2_table_index)
3692 define flow_classify_set_interface {
3696 u32 ip4_table_index;
3697 u32 ip6_table_index;
3701 /** \brief Set/unset flow classify interface response
3702 @param context - sender context, to match reply w/ request
3703 @param retval - return value for request
3705 define flow_classify_set_interface_reply {
3710 /** \brief Get list of flow classify interfaces and tables
3711 @param client_index - opaque cookie to identify the sender
3712 @param context - sender context, to match reply w/ request
3713 @param type - classify table type
3715 define flow_classify_dump {
3721 /** \brief Flow classify operational state response.
3722 @param context - sender context, to match reply w/ request
3723 @param sw_if_index - software interface index
3724 @param table_index - classify table index
3726 define flow_classify_details {
3732 /** \brief Query relative index via node names
3733 @param client_index - opaque cookie to identify the sender
3734 @param context - sender context, to match reply w/ request
3735 @param node_name - name of node to find relative index from
3736 @param next_name - next node from node_name to find relative index of
3738 define get_next_index
3746 /** \brief Reply for get next node index
3747 @param context - sender context which was passed in the request
3748 @param retval - return value
3749 @param next_index - index of the next_node
3751 define get_next_index_reply
3758 /** \brief PacketGenerator create interface request
3759 @param client_index - opaque cookie to identify the sender
3760 @param context - sender context, to match reply w/ request
3761 @param interface_id - interface index
3763 define pg_create_interface
3770 /** \brief PacketGenerator create interface response
3771 @param context - sender context, to match reply w/ request
3772 @param retval - return value for request
3774 define pg_create_interface_reply
3781 /** \brief PacketGenerator capture packets on given interface request
3782 @param client_index - opaque cookie to identify the sender
3783 @param context - sender context, to match reply w/ request
3784 @param interface_id - pg interface index
3785 @param is_enabled - 1 if enabling streams, 0 if disabling
3786 @param count - number of packets to be captured
3787 @param pcap_file - pacp file name to store captured packets
3796 u32 pcap_name_length;
3797 u8 pcap_file_name[pcap_name_length];
3800 /** \brief PacketGenerator capture packets response
3801 @param context - sender context, to match reply w/ request
3802 @param retval - return value for request
3804 define pg_capture_reply
3810 /** \brief Enable / disable packet generator request
3811 @param client_index - opaque cookie to identify the sender
3812 @param context - sender context, to match reply w/ request
3813 @param is_enabled - 1 if enabling streams, 0 if disabling
3814 @param stream - stream name to be enable/disabled, if not specified handle all streams
3816 define pg_enable_disable
3821 u32 stream_name_length;
3822 u8 stream_name[stream_name_length];
3825 /** \brief Reply for enable / disable packet generator
3826 @param context - returned sender context, to match reply w/ request
3827 @param retval - return code
3829 define pg_enable_disable_reply
3835 /** \brief Configure IP source and L4 port-range check
3836 @param client_index - opaque cookie to identify the sender
3837 @param context - sender context, to match reply w/ request
3838 @param is_ip6 - 1 if source address type is IPv6
3839 @param is_add - 1 if add, 0 if delete
3840 @param mask_length - mask length for address entry
3841 @param address - array of address bytes
3842 @param number_of_ranges - length of low_port and high_port arrays (must match)
3843 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
3844 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
3845 @param vrf_id - fib table/vrf id to associate the source and port-range check with
3846 @note To specify a single port set low_port and high_port entry the same
3848 define ip_source_and_port_range_check_add_del
3856 u8 number_of_ranges;
3862 /** \brief Configure IP source and L4 port-range check reply
3863 @param context - returned sender context, to match reply w/ request
3864 @param retval - return code
3866 define ip_source_and_port_range_check_add_del_reply
3872 /** \brief Set interface source and L4 port-range request
3873 @param client_index - opaque cookie to identify the sender
3874 @param context - sender context, to match reply w/ request
3875 @param interface_id - interface index
3876 @param tcp_vrf_id - VRF associated with source and TCP port-range check
3877 @param udp_vrf_id - VRF associated with source and TCP port-range check
3879 define ip_source_and_port_range_check_interface_add_del
3891 /** \brief Set interface source and L4 port-range response
3892 @param context - sender context, to match reply w/ request
3893 @param retval - return value for request
3895 define ip_source_and_port_range_check_interface_add_del_reply
3901 /** \brief Add / del ipsec gre tunnel request
3902 @param client_index - opaque cookie to identify the sender
3903 @param context - sender context, to match reply w/ request
3904 @param local_sa_id - local SA id
3905 @param remote_sa_id - remote SA id
3906 @param is_add - 1 if adding the tunnel, 0 if deleting
3907 @param src_address - tunnel source address
3908 @param dst_address - tunnel destination address
3910 define ipsec_gre_add_del_tunnel {
3920 /** \brief Reply for add / del ipsec gre tunnel request
3921 @param context - returned sender context, to match reply w/ request
3922 @param retval - return code
3923 @param sw_if_index - software index of the new ipsec gre tunnel
3925 define ipsec_gre_add_del_tunnel_reply {
3931 /** \brief Dump ipsec gre tunnel table
3932 @param client_index - opaque cookie to identify the sender
3933 @param context - sender context, to match reply w/ request
3934 @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
3936 define ipsec_gre_tunnel_dump {
3942 /** \brief mpls gre tunnel operational state response
3943 @param context - returned sender context, to match reply w/ request
3944 @param sw_if_index - software index of the ipsec gre tunnel
3945 @param local_sa_id - local SA id
3946 @param remote_sa_id - remote SA id
3947 @param src_address - tunnel source address
3948 @param dst_address - tunnel destination address
3950 define ipsec_gre_tunnel_details {
3959 /** \brief Delete sub interface request
3960 @param client_index - opaque cookie to identify the sender
3961 @param context - sender context, to match reply w/ request
3962 @param sw_if_index - sw index of the interface that was created by create_subif
3964 define delete_subif {
3970 /** \brief Delete sub interface response
3971 @param context - sender context, to match reply w/ request
3972 @param retval - return code for the request
3974 define delete_subif_reply {
3979 /** \brief DPDK interface HQoS pipe profile set request
3980 @param client_index - opaque cookie to identify the sender
3981 @param context - sender context, to match reply w/ request
3982 @param sw_if_index - the interface
3983 @param subport - subport ID
3984 @param pipe - pipe ID within its subport
3985 @param profile - pipe profile ID
3987 define sw_interface_set_dpdk_hqos_pipe {
3996 /** \brief DPDK interface HQoS pipe profile set reply
3997 @param context - sender context, to match reply w/ request
3998 @param retval - request return code
4000 define sw_interface_set_dpdk_hqos_pipe_reply {
4005 /** \brief DPDK interface HQoS subport parameters set request
4006 @param client_index - opaque cookie to identify the sender
4007 @param context - sender context, to match reply w/ request
4008 @param sw_if_index - the interface
4009 @param subport - subport ID
4010 @param tb_rate - subport token bucket rate (measured in bytes/second)
4011 @param tb_size - subport token bucket size (measured in credits)
4012 @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second)
4013 @param tc_period - enforcement period for rates (measured in milliseconds)
4015 define sw_interface_set_dpdk_hqos_subport {
4026 /** \brief DPDK interface HQoS subport parameters set reply
4027 @param context - sender context, to match reply w/ request
4028 @param retval - request return code
4030 define sw_interface_set_dpdk_hqos_subport_reply {
4035 /** \brief DPDK interface HQoS tctbl entry set request
4036 @param client_index - opaque cookie to identify the sender
4037 @param context - sender context, to match reply w/ request
4038 @param sw_if_index - the interface
4039 @param entry - entry index ID
4040 @param tc - traffic class (0 .. 3)
4041 @param queue - traffic class queue (0 .. 3)
4043 define sw_interface_set_dpdk_hqos_tctbl {
4052 /** \brief DPDK interface HQoS tctbl entry set reply
4053 @param context - sender context, to match reply w/ request
4054 @param retval - request return code
4056 define sw_interface_set_dpdk_hqos_tctbl_reply {
4061 /** \brief L2 interface pbb tag rewrite configure request
4062 @param client_index - opaque cookie to identify the sender
4063 @param context - sender context, to match reply w/ request
4064 @param sw_if_index - interface the operation is applied to
4065 @param vtr_op - Choose from l2_vtr_op_t enum values
4066 @param inner_tag - needed for translate_qinq vtr op only
4067 @param outer_tag - needed for translate_qinq vtr op only
4068 @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op
4069 @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op
4070 @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op
4071 @param i_sid - I-tag service id, needed for any push or translate qinq vtr op
4073 define l2_interface_pbb_tag_rewrite
4086 /** \brief L2 interface pbb tag rewrite response
4087 @param context - sender context, to match reply w/ request
4088 @param retval - return code for the request
4090 define l2_interface_pbb_tag_rewrite_reply
4096 /** \brief Punt traffic to the host
4097 @param client_index - opaque cookie to identify the sender
4098 @param context - sender context, to match reply w/ request
4099 @param is_add - add punt if non-zero, else delete
4100 @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All
4101 @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported
4102 @param l4_port - TCP/UDP port to be punted
4113 /** \brief Reply to the punt request
4114 @param context - sender context which was passed in the request
4115 @param retval - return code of punt request
4123 /** \brief Dump ipsec policy database data
4124 @param client_index - opaque cookie to identify the sender
4125 @param context - sender context, to match reply w/ request
4126 @param spd_id - SPD instance id
4127 @param sa_id - SA id, optional, set to ~0 to see all policies in SPD
4129 define ipsec_spd_dump {
4136 /** \brief IPsec policy database response
4137 @param context - sender context which was passed in the request
4138 @param spd_id - SPD instance id
4139 @param priority - numeric value to control policy evaluation order
4140 @param is_outbound - [1|0] to indicate if direction is [out|in]bound
4141 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
4142 @param local_start_addr - first address in local traffic selector range
4143 @param local_stop_addr - last address in local traffic selector range
4144 @param local_start_port - first port in local traffic selector range
4145 @param local_stop_port - last port in local traffic selector range
4146 @param remote_start_addr - first address in remote traffic selector range
4147 @param remote_stop_addr - last address in remote traffic selector range
4148 @param remote_start_port - first port in remote traffic selector range
4149 @param remote_stop_port - last port in remote traffic selector range
4150 @param protocol - traffic selector protocol
4151 @param policy - policy action
4152 @param sa_id - SA id
4153 @param bytes - byte count of packets matching this policy
4154 @param packets - count of packets matching this policy
4157 define ipsec_spd_details {
4163 u8 local_start_addr[16];
4164 u8 local_stop_addr[16];
4165 u16 local_start_port;
4166 u16 local_stop_port;
4167 u8 remote_start_addr[16];
4168 u8 remote_stop_addr[16];
4169 u16 remote_start_port;
4170 u16 remote_stop_port;
4178 /** \brief Feature path enable/disable request
4179 @param client_index - opaque cookie to identify the sender
4180 @param context - sender context, to match reply w/ request
4181 @param sw_if_index - the interface
4182 @param enable - 1 = on, 0 = off
4184 define feature_enable_disable {
4190 u8 feature_name[64];
4193 /** \brief Reply to the eature path enable/disable request
4194 @param context - sender context which was passed in the request
4195 @param retval - return code for the request
4197 define feature_enable_disable_reply
4203 /** \brief Configure BFD feature
4204 @param client_index - opaque cookie to identify the sender
4205 @param context - sender context, to match reply w/ request
4206 @param slow_timer - slow timer (seconds)
4207 @param min_tx - desired min tx interval
4208 @param min_rx - desired min rx interval
4209 @param detect_mult - desired detection multiplier
4211 define bfd_set_config {
4220 /** \brief Configure BFD feature response
4221 @param context - sender context, to match reply w/ request
4222 @param retval - return code for the request
4224 define bfd_set_config_reply {
4229 /** \brief Get BFD configuration
4231 define bfd_get_config {
4236 /** \brief Get BFD configuration response
4237 @param context - sender context, to match reply w/ request
4238 @param retval - return code for the request
4239 @param slow_timer - slow timer (seconds)
4240 @param min_tx - desired min tx interval
4241 @param min_rx - desired min rx interval
4242 @param detect_mult - desired detection multiplier
4244 define bfd_get_config_reply {
4253 /** \brief Add UDP BFD session on interface
4254 @param client_index - opaque cookie to identify the sender
4255 @param context - sender context, to match reply w/ request
4256 @param sw_if_index - sw index of the interface
4257 @param desired_min_tx - desired min transmit interval (microseconds)
4258 @param required_min_rx - required min receive interval (microseconds)
4259 @param detect_mult - detect multiplier (# of packets missed between connection goes down)
4260 @param local_addr - local address
4261 @param peer_addr - peer address
4262 @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
4264 define bfd_udp_add {
4269 u32 required_min_rx;
4276 /** \brief Add UDP BFD session response
4277 @param context - sender context, to match reply w/ request
4278 @param retval - return code for the request
4279 @param bs_index - index of the session created
4281 define bfd_udp_add_reply {
4287 /** \brief Delete UDP BFD session on interface
4288 @param client_index - opaque cookie to identify the sender
4289 @param context - sender context, to match reply w/ request
4290 @param sw_if_index - sw index of the interface
4291 @param local_addr - local address
4292 @param peer_addr - peer address
4293 @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
4295 define bfd_udp_del {
4304 /** \brief Delete UDP BFD session response
4305 @param context - sender context, to match reply w/ request
4306 @param retval - return code for the request
4308 define bfd_udp_del_reply {
4313 /** \brief Get all BFD sessions
4314 @param client_index - opaque cookie to identify the sender
4315 @param context - sender context, to match reply w/ request
4317 define bfd_udp_session_dump {
4322 /** \brief BFD session details structure
4323 @param context - sender context, to match reply w/ request
4324 @param bs_index - index of the session
4325 @param sw_if_index - sw index of the interface
4326 @param local_addr - local address
4327 @param peer_addr - peer address
4328 @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4
4329 @param state - session state
4331 define bfd_udp_session_details {
4341 /** \brief Set flags of BFD session
4342 @param client_index - opaque cookie to identify the sender
4343 @param context - sender context, to match reply w/ request
4344 @param bs_index - index of the bfd session to set flags on
4345 @param admin_up_down - set the admin state, 1 = up, 0 = down
4347 define bfd_session_set_flags {
4354 /** \brief Reply to bfd_session_set_flags
4355 @param context - sender context which was passed in the request
4356 @param retval - return code of the set flags request
4358 define bfd_session_set_flags_reply
4364 /** \brief Register for BFD events
4365 @param client_index - opaque cookie to identify the sender
4366 @param context - sender context, to match reply w/ request
4367 @param enable_disable - 1 => register for events, 0 => cancel registration
4368 @param pid - sender's pid
4370 define want_bfd_events
4378 /** \brief Reply for BFD events registration
4379 @param context - returned sender context, to match reply w/ request
4380 @param retval - return code
4382 define want_bfd_events_reply
4390 * eval: (c-set-style "gnu")