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}
30 /** \brief Create a new subinterface with the given vlan id
31 @param client_index - opaque cookie to identify the sender
32 @param context - sender context, to match reply w/ request
33 @param sw_if_index - software index of the new vlan's parent interface
34 @param vlan_id - vlan tag of the new interface
36 define create_vlan_subif
44 /** \brief Reply for the vlan subinterface create request
45 @param context - returned sender context, to match reply w/ request
46 @param retval - return code
47 @param sw_if_index - software index allocated for the new subinterface
49 define create_vlan_subif_reply
56 /** \brief Enable or Disable MPLS on and interface
57 @param client_index - opaque cookie to identify the sender
58 @param context - sender context, to match reply w/ request
59 @param sw_if_index - index of the interface
60 @param enable - if non-zero enable, else disable
62 define sw_interface_set_mpls_enable
70 /** \brief Reply for MPLS state on an interface
71 @param context - returned sender context, to match reply w/ request
72 @param retval - return code
74 define sw_interface_set_mpls_enable_reply
80 /** \brief MPLS Route Add / del route
81 @param client_index - opaque cookie to identify the sender
82 @param context - sender context, to match reply w/ request
83 @param mr_label - The MPLS label value
84 @param mr_eos - The End of stack bit
85 @param mr_table_id - The MPLS table-id the route is added in
86 @param mr_classify_table_index - If this is a classify route,
87 this is the classify table index
88 @param mr_create_table_if_needed - If the MPLS or IP tables do not exist,
90 @param mr_is_add - Is this a route add or delete
91 @param mr_is_classify - Is this route result a classify
92 @param mr_is_multipath - Is this route update a multipath - i.e. is this
93 a path addition to an existing route
94 @param mr_is_resolve_host - Recurse resolution constraint via a host prefix
95 @param mr_is_resolve_attached - Recurse resolution constraint via attached prefix
96 @param mr_next_hop_proto_is_ip4 - The next-hop is IPV4
97 @param mr_next_hop_weight - The weight, for UCMP
98 @param mr_next_hop[16] - the nextop address
99 @param mr_next_hop_sw_if_index - the next-hop SW interface
100 @param mr_next_hop_table_id - the next-hop table-id (if appropriate)
101 @param mr_next_hop_n_out_labels - the number of labels in the label stack
102 @param mr_next_hop_out_label_stack - the next-hop output label stack, outer most first
103 @param next_hop_via_label - The next-hop is a resolved via a local label
105 define mpls_route_add_del
112 u32 mr_classify_table_index;
113 u8 mr_create_table_if_needed;
117 u8 mr_is_resolve_host;
118 u8 mr_is_resolve_attached;
119 u8 mr_next_hop_proto_is_ip4;
120 u8 mr_next_hop_weight;
122 u8 mr_next_hop_n_out_labels;
123 u32 mr_next_hop_sw_if_index;
124 u32 mr_next_hop_table_id;
125 u32 mr_next_hop_via_label;
126 u32 mr_next_hop_out_label_stack[mr_next_hop_n_out_labels];
129 /** \brief Reply for MPLS route add / del request
130 @param context - returned sender context, to match reply w/ request
131 @param retval - return code
133 define mpls_route_add_del_reply
139 /** \brief Dump MPLS fib table
140 @param client_index - opaque cookie to identify the sender
149 @param sw_if_index - index of the interface
150 @param weight - The weight, for UCMP
151 @param is_local - local if non-zero, else remote
152 @param is_drop - Drop the packet
153 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
154 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
155 @param afi - the afi of the next hop, IP46_TYPE_IP4=1, IP46_TYPE_IP6=2
156 @param next_hop[16] - the next hop address
158 WARNING: this type is replicated, pending cleanup completion
161 typeonly manual_print manual_endian define fib_path2
173 /** \brief mpls FIB table response
174 @param table_id - MPLS fib table id
175 @param s_bit - End-of-stack bit
176 @param label - MPLS label value
177 @param count - the number of fib_path in path
178 @param path - array of of fib_path structures
180 manual_endian manual_print define mpls_fib_details
187 vl_api_fib_path2_t path[count];
190 /** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create
191 a per-prefix label entry.
192 @param client_index - opaque cookie to identify the sender
193 @param context - sender context, to match reply w/ request
194 @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in
195 @param mb_label - The MPLS label value to bind
196 @param mb_ip_table_id - The IP table-id of the IP prefix to bind to.
197 @param mb_create_table_if_needed - Create either/both tables if required.
198 @param mb_is_bind - Bind or unbind
199 @param mb_is_ip4 - The prefix to bind to is IPv4
200 @param mb_address_length - Length of IP prefix
201 @param mb_address[16] - IP prefix/
203 define mpls_ip_bind_unbind
207 u32 mb_mpls_table_id;
210 u8 mb_create_table_if_needed;
213 u8 mb_address_length;
217 /** \brief Reply for MPLS IP bind/unbind request
218 @param context - returned sender context, to match reply w/ request
219 @param retval - return code
221 define mpls_ip_bind_unbind_reply
227 /** \brief MPLS tunnel Add / del route
228 @param client_index - opaque cookie to identify the sender
229 @param context - sender context, to match reply w/ request
230 @param mt_is_add - Is this a route add or delete
231 @param mt_sw_if_index - The SW interface index of the tunnel to delete
232 @param mt_next_hop_proto_is_ip4 - The next-hop is IPV4
233 @param mt_next_hop_weight - The weight, for UCMP
234 @param mt_next_hop[16] - the nextop address
235 @param mt_next_hop_sw_if_index - the next-hop SW interface
236 @param mt_next_hop_table_id - the next-hop table-id (if appropriate)
237 @param mt_next_hop_n_out_labels - the number of next-hop output labels
238 @param mt_next_hop_out_label_stack - the next-hop output label stack, outer most first
240 define mpls_tunnel_add_del
247 u8 mt_next_hop_proto_is_ip4;
248 u8 mt_next_hop_weight;
250 u8 mt_next_hop_n_out_labels;
251 u32 mt_next_hop_sw_if_index;
252 u32 mt_next_hop_table_id;
253 u32 mt_next_hop_out_label_stack[mt_next_hop_n_out_labels];
256 /** \brief Reply for MPLS tunnel add / del request
257 @param context - returned sender context, to match reply w/ request
258 @param retval - return code
259 @param sw_if_index - SW interface index of the tunnel created
261 define mpls_tunnel_add_del_reply
268 /** \brief Dump mpls eth tunnel table
269 @param client_index - opaque cookie to identify the sender
270 @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels
272 define mpls_tunnel_dump
279 /** \brief mpls eth tunnel operational state response
280 @param tunnel_index - eth tunnel identifier
281 @param intfc_address - interface ipv4 addr
282 @param mask_width - interface ipv4 addr mask
283 @param hw_if_index - interface id
285 @param tunnel_dst_mac -
286 @param tx_sw_if_index -
287 @param encap_index - reference to mpls label table
288 @param nlabels - number of resolved labels
289 @param labels - resolved labels
291 define mpls_tunnel_details
297 u8 mt_next_hop_proto_is_ip4;
299 u32 mt_next_hop_sw_if_index;
300 u32 mt_next_hop_table_id;
301 u32 mt_next_hop_n_labels;
302 u32 mt_next_hop_out_labels[mt_next_hop_n_labels];
305 /** \brief Proxy ARP add / del request
306 @param client_index - opaque cookie to identify the sender
307 @param context - sender context, to match reply w/ request
308 @param vrf_id - VRF / Fib table ID
309 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
310 @param low_address[4] - Low address of the Proxy ARP range
311 @param hi_address[4] - High address of the Proxy ARP range
313 define proxy_arp_add_del
323 /** \brief Reply for proxy arp add / del request
324 @param context - returned sender context, to match reply w/ request
325 @param retval - return code
327 define proxy_arp_add_del_reply
333 /** \brief Proxy ARP add / del request
334 @param client_index - opaque cookie to identify the sender
335 @param context - sender context, to match reply w/ request
336 @param sw_if_index - Which interface to enable / disable Proxy Arp on
337 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
339 define proxy_arp_intfc_enable_disable
344 /* 1 = on, 0 = off */
348 /** \brief Reply for Proxy ARP interface enable / disable request
349 @param context - returned sender context, to match reply w/ request
350 @param retval - return code
352 define proxy_arp_intfc_enable_disable_reply
358 /** \brief Reset VRF (remove all routes etc) request
359 @param client_index - opaque cookie to identify the sender
360 @param context - sender context, to match reply w/ request
361 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
362 @param vrf_id - ID of th FIB table / VRF to reset
372 /** \brief Reply for Reset VRF request
373 @param context - returned sender context, to match reply w/ request
374 @param retval - return code
376 define reset_vrf_reply
382 /** \brief Is Address Reachable request - DISABLED
383 @param client_index - opaque cookie to identify the sender
384 @param context - sender context, to match reply w/ request
385 @param next_hop_sw_if_index - index of interface used to get to next hop
386 @param is_ipv6 - 1 for IPv6, 0 for IPv4
387 @param is_error - address not found or does not match intf
388 @param address[] - Address in question
390 define is_address_reachable
392 u32 client_index; /* (api_main_t *) am->my_client_index */
394 u32 next_hop_sw_if_index;
395 u8 is_known; /* on reply, this is the answer */
397 u8 is_error; /* address not found or does not match intf */
401 /** \brief Want Stats, register for stats updates
402 @param client_index - opaque cookie to identify the sender
403 @param context - sender context, to match reply w/ request
404 @param enable_disable - 1 = enable stats, 0 = disable
405 @param pid - pid of process requesting stats updates
415 /** \brief Reply for Want Stats request
416 @param context - returned sender context, to match reply w/ request
417 @param retval - return code
419 define want_stats_reply
425 typeonly manual_print manual_endian define ip4_fib_counter
433 manual_print manual_endian define vnet_ip4_fib_counters
437 vl_api_ip4_fib_counter_t c[count];
440 typeonly manual_print manual_endian define ip6_fib_counter
448 manual_print manual_endian define vnet_ip6_fib_counters
452 vl_api_ip6_fib_counter_t c[count];
455 /** \brief Request for a single block of summary stats
456 @param client_index - opaque cookie to identify the sender
457 @param context - sender context, to match reply w/ request
459 define vnet_get_summary_stats
465 /** \brief Reply for vnet_get_summary_stats request
466 @param context - sender context, to match reply w/ request
467 @param retval - return code for request
472 define vnet_summary_stats_reply
481 /** \brief OAM event structure
482 @param dst_address[] -
491 /** \brief Want OAM events request
492 @param client_index - opaque cookie to identify the sender
493 @param context - sender context, to match reply w/ request
494 @param enable_disable- enable if non-zero, else disable
495 @param pid - pid of the requesting process
497 define want_oam_events
505 /** \brief Want OAM events response
506 @param context - sender context, to match reply w/ request
507 @param retval - return code for the want oam stats request
509 define want_oam_events_reply
515 /** \brief OAM add / del target request
516 @param client_index - opaque cookie to identify the sender
517 @param context - sender context, to match reply w/ request
518 @param vrf_id - vrf_id of the target
519 @param src_address[] - source address to use for the updates
520 @param dst_address[] - destination address of the target
521 @param is_add - add target if non-zero, else delete
533 /** \brief OAM add / del target response
534 @param context - sender context, to match reply w/ request
535 @param retval - return code of the request
537 define oam_add_del_reply
543 /** \brief Reset fib table request
544 @param client_index - opaque cookie to identify the sender
545 @param context - sender context, to match reply w/ request
546 @param vrf_id - vrf/table id of the fib table to reset
547 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
557 /** \brief Reset fib response
558 @param context - sender context, to match reply w/ request
559 @param retval - return code for the reset bfib request
561 define reset_fib_reply
567 /** \brief DHCP Proxy config add / del request
568 @param client_index - opaque cookie to identify the sender
569 @param context - sender context, to match reply w/ request
570 @param vrf_id - vrf id
571 @param if_ipv6 - ipv6 if non-zero, else ipv4
572 @param is_add - add the config if non-zero, else delete
573 @param insert_circuit_id - option82 suboption 1 fib number
574 @param dhcp_server[] - server address
575 @param dhcp_src_address[] - <fix this, need details>
577 define dhcp_proxy_config
584 u8 insert_circuit_id;
586 u8 dhcp_src_address[16];
589 /** \brief DHCP Proxy config response
590 @param context - sender context, to match reply w/ request
591 @param retval - return code for the request
593 define dhcp_proxy_config_reply
599 /** \brief DHCP Proxy set / unset vss request
600 @param client_index - opaque cookie to identify the sender
601 @param context - sender context, to match reply w/ request
602 @param tbl_id - table id
603 @param oui - first part of vpn id
604 @param fib_id - second part of vpn id
605 @param is_ipv6 - ip6 if non-zero, else ip4
606 @param is_add - set vss if non-zero, else delete
608 define dhcp_proxy_set_vss
619 /** \brief DHCP proxy set / unset vss response
620 @param context - sender context, to match reply w/ request
621 @param retval - return code for the request
623 define dhcp_proxy_set_vss_reply
629 /** \brief Create loopback interface request
630 @param client_index - opaque cookie to identify the sender
631 @param context - sender context, to match reply w/ request
632 @param mac_address - mac addr to assign to the interface if none-zero
634 define create_loopback
641 /** \brief Create loopback interface response
642 @param context - sender context, to match reply w/ request
643 @param sw_if_index - sw index of the interface that was created
644 @param retval - return code for the request
646 define create_loopback_reply
653 /** \brief Delete loopback interface request
654 @param client_index - opaque cookie to identify the sender
655 @param context - sender context, to match reply w/ request
656 @param sw_if_index - sw index of the interface that was created
658 define delete_loopback
665 /** \brief Delete loopback interface response
666 @param context - sender context, to match reply w/ request
667 @param retval - return code for the request
669 define delete_loopback_reply
675 /** \brief Control ping from client to api server request
676 @param client_index - opaque cookie to identify the sender
677 @param context - sender context, to match reply w/ request
685 /** \brief Control ping from the client to the server response
686 @param client_index - opaque cookie to identify the sender
687 @param context - sender context, to match reply w/ request
688 @param retval - return code for the request
689 @param vpe_pid - the pid of the vpe, returned by the server
691 define control_ping_reply
699 /** \brief Process a vpe parser cli string request
700 @param client_index - opaque cookie to identify the sender
701 @param context - sender context, to match reply w/ request
702 @param cmd_in_shmem - pointer to cli command string
718 /** \brief vpe parser cli string response
719 @param context - sender context, to match reply w/ request
720 @param retval - return code for request
721 @param reply_in_shmem - Reply string from cli processing if any
729 define cli_inband_reply
737 /** \brief Set max allowed ARP or ip6 neighbor entries request
738 @param client_index - opaque cookie to identify the sender
739 @param context - sender context, to match reply w/ request
740 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
741 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
743 define set_arp_neighbor_limit
748 u32 arp_neighbor_limit;
751 /** \brief Set max allowed ARP or ip6 neighbor entries response
752 @param context - sender context, to match reply w/ request
753 @param retval - return code for request
755 define set_arp_neighbor_limit_reply
761 /** \brief L2 interface patch add / del request
762 @param client_index - opaque cookie to identify the sender
763 @param context - sender context, to match reply w/ request
764 @param rx_sw_if_index - receive side interface
765 @param tx_sw_if_index - transmit side interface
766 @param is_add - if non-zero set up the interface patch, else remove it
768 define l2_patch_add_del
777 /** \brief L2 interface patch add / del response
778 @param context - sender context, to match reply w/ request
779 @param retval - return code for the request
781 define l2_patch_add_del_reply
787 /** \brief IPv6 segment routing tunnel add / del request
788 @param client_index - opaque cookie to identify the sender
789 @param context - sender context, to match reply w/ request
790 @param is_add - add the tunnel if non-zero, else delete it
791 @param name[] - tunnel name (len. 64)
792 @param src_address[] -
793 @param dst_address[] -
794 @param dst_mask_width -
795 @param inner_vrf_id -
796 @param outer_vrf_id -
797 @param flags_net_byte_order -
800 @param segs_and_tags[] -
801 @param policy_name[] - name of policy to associate this tunnel to (len. 64)
803 define sr_tunnel_add_del
814 u16 flags_net_byte_order;
821 /** \brief IPv6 segment routing tunnel add / del response
822 @param context - sender context, to match reply w/ request
823 @param retval - return value for request
825 define sr_tunnel_add_del_reply
831 /** \brief IPv6 segment routing policy add / del request
832 @param client_index - opaque cookie to identify the sender
833 @param context - sender context, to match reply w/ request
834 @param is_add - add the tunnel if non-zero, else delete it
835 @param name[] - policy name (len. 64)
836 @param tunnel_names[] -
838 define sr_policy_add_del
847 /** \brief IPv6 segment routing policy add / del response
848 @param context - sender context, to match reply w/ request
849 @param retval - return value for request
851 define sr_policy_add_del_reply
857 /** \brief IPv6 segment routing multicast map to policy add / del request
858 @param client_index - opaque cookie to identify the sender
859 @param context - sender context, to match reply w/ request
860 @param is_add - add the tunnel if non-zero, else delete it
861 @param multicast_address[] - IP6 multicast address
862 @param policy_name[] = policy name (len.64)
864 define sr_multicast_map_add_del
869 u8 multicast_address[16];
873 /** \brief IPv6 segment routing multicast map to policy add / del response
874 @param context - sender context, to match reply w/ request
875 @param retval - return value for request
877 define sr_multicast_map_add_del_reply
883 /** \brief Interface set vpath request
884 @param client_index - opaque cookie to identify the sender
885 @param context - sender context, to match reply w/ request
886 @param sw_if_index - interface used to reach neighbor
887 @param enable - if non-zero enable, else disable
889 define sw_interface_set_vpath
897 /** \brief Interface set vpath response
898 @param context - sender context, to match reply w/ request
899 @param retval - return code for the request
901 define sw_interface_set_vpath_reply
907 /** \brief Interface set vxlan-bypass request
908 @param client_index - opaque cookie to identify the sender
909 @param context - sender context, to match reply w/ request
910 @param sw_if_index - interface used to reach neighbor
911 @param is_ipv6 - if non-zero, enable ipv6-vxlan-bypass, else ipv4-vxlan-bypass
912 @param enable - if non-zero enable, else disable
914 define sw_interface_set_vxlan_bypass
923 /** \brief Interface set vxlan-bypass response
924 @param context - sender context, to match reply w/ request
925 @param retval - return code for the request
927 define sw_interface_set_vxlan_bypass_reply
933 /** \brief Set L2 XConnect between two interfaces request
934 @param client_index - opaque cookie to identify the sender
935 @param context - sender context, to match reply w/ request
936 @param rx_sw_if_index - Receive interface index
937 @param tx_sw_if_index - Transmit interface index
938 @param enable - enable xconnect if not 0, else set to L3 mode
940 define sw_interface_set_l2_xconnect
949 /** \brief Set L2 XConnect response
950 @param context - sender context, to match reply w/ request
951 @param retval - L2 XConnect request return code
953 define sw_interface_set_l2_xconnect_reply
959 /** \brief Interface bridge mode request
960 @param client_index - opaque cookie to identify the sender
961 @param context - sender context, to match reply w/ request
962 @param rx_sw_if_index - the interface
963 @param bd_id - bridge domain id
964 @param bvi - Setup interface as a bvi, bridge mode only
965 @param shg - Shared horizon group, for bridge mode only
966 @param enable - Enable beige mode if not 0, else set to L3 mode
968 define sw_interface_set_l2_bridge
979 /** \brief Interface bridge mode response
980 @param context - sender context, to match reply w/ request
981 @param retval - Bridge mode request return code
983 define sw_interface_set_l2_bridge_reply
989 /** \brief L2 FIB add entry request
990 @param client_index - opaque cookie to identify the sender
991 @param context - sender context, to match reply w/ request
992 @param mac - the entry's mac address
993 @param bd_id - the entry's bridge domain id
994 @param sw_if_index - the interface
995 @param is_add - If non zero add the entry, else delete it
1012 /** \brief L2 FIB add entry response
1013 @param context - sender context, to match reply w/ request
1014 @param retval - return code for the add l2fib entry request
1016 define l2fib_add_del_reply
1022 /** \brief Set L2 flags request !!! TODO - need more info, feature bits in l2_input.h
1023 @param client_index - opaque cookie to identify the sender
1024 @param context - sender context, to match reply w/ request
1025 @param sw_if_index - interface
1026 @param is_set - if non-zero, set the bits, else clear them
1027 @param feature_bitmap - non-zero bits to set or clear
1038 /** \brief Set L2 bits response
1039 @param context - sender context, to match reply w/ request
1040 @param retval - return code for the set l2 bits request
1042 define l2_flags_reply
1046 u32 resulting_feature_bitmap;
1049 /** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD,
1050 L2_UU_FLOOD, or L2_ARP_TERM) request
1051 @param client_index - opaque cookie to identify the sender
1052 @param context - sender context, to match reply w/ request
1053 @param bd_id - the bridge domain to set the flags for
1054 @param is_set - if non-zero, set the flags, else clear them
1055 @param feature_bitmap - bits that are non-zero to set or clear
1066 /** \brief Set bridge flags response
1067 @param context - sender context, to match reply w/ request
1068 @param retval - return code for the set bridge flags request
1069 @param resulting_feature_bitmap - the feature bitmap value after the request is implemented
1071 define bridge_flags_reply
1075 u32 resulting_feature_bitmap;
1078 /** \brief Set bridge domain ip to mac entry request
1079 @param client_index - opaque cookie to identify the sender
1080 @param context - sender context, to match reply w/ request
1081 @param bd_id - the bridge domain to set the flags for
1082 @param is_add - if non-zero, add the entry, else clear it
1083 @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
1084 @param mac_address - MAC address
1087 define bd_ip_mac_add_del
1098 /** \brief Set bridge domain ip to mac entry response
1099 @param context - sender context, to match reply w/ request
1100 @param retval - return code for the set bridge flags request
1102 define bd_ip_mac_add_del_reply
1108 /** \brief Add/Delete classification table request
1109 @param client_index - opaque cookie to identify the sender
1110 @param context - sender context, to match reply w/ request
1111 @param is_add- if non-zero add the table, else delete it
1112 @param del_chain - if non-zero delete the whole chain of tables
1113 @param table_index - if add, reuturns index of the created table, else specifies the table to delete
1114 @param nbuckets - number of buckets when adding a table
1115 @param memory_size - memory size when adding a table
1116 @param match_n_vectors - number of match vectors
1117 @param next_table_index - index of next table
1118 @param miss_next_index - index of miss table
1119 @param current_data_flag - option to use current node's packet payload
1120 as the starting point from where packets are classified,
1121 This option is only valid for L2/L3 input ACL for now.
1122 0: by default, classify data from the buffer's start location
1123 1: classify packets from VPP node’s current data pointer
1124 @param current_data_offset - a signed value to shift the start location of
1125 the packet to be classified
1126 For example, if input IP ACL node is used, L2 header’s first byte
1127 can be accessible by configuring current_data_offset to -14
1128 if there is no vlan tag.
1129 This is valid only if current_data_flag is set to 1.
1130 @param mask[] - match mask
1132 define classify_add_del_table
1142 u32 match_n_vectors;
1143 u32 next_table_index;
1144 u32 miss_next_index;
1145 u32 current_data_flag;
1146 i32 current_data_offset;
1150 /** \brief Add/Delete classification table response
1151 @param context - sender context, to match reply w/ request
1152 @param retval - return code for the table add/del requst
1153 @param new_table_index - for add, returned index of the new table
1154 @param skip_n_vectors - for add, returned value of skip_n_vectors in table
1155 @param match_n_vectors -for add, returned value of match_n_vectors in table
1157 define classify_add_del_table_reply
1161 u32 new_table_index;
1163 u32 match_n_vectors;
1166 /** \brief Classify add / del session request
1167 @param client_index - opaque cookie to identify the sender
1168 @param context - sender context, to match reply w/ request
1169 @param is_add - add session if non-zero, else delete
1170 @param table_index - index of the table to add/del the session, required
1171 @param hit_next_index - for add, hit_next_index of new session, required
1172 @param opaque_index - for add, opaque_index of new session
1173 @param advance -for add, advance value for session
1175 0: no action (by default)
1176 metadata is not used.
1177 1: Classified IP packets will be looked up from the
1178 specified ipv4 fib table (configured by metadata as VRF id).
1179 Only valid for L3 input ACL node
1180 2: Classified IP packets will be looked up from the
1181 specified ipv6 fib table (configured by metadata as VRF id).
1182 Only valid for L3 input ACL node
1183 @param metadata - valid only if action != 0
1184 VRF id if action is 1 or 2.
1185 @param match[] - for add, match value for session, required
1187 define classify_add_del_session
1201 /** \brief Classify add / del session response
1202 @param context - sender context, to match reply w/ request
1203 @param retval - return code for the add/del session request
1205 define classify_add_del_session_reply
1211 /** \brief Set/unset the classification table for an interface request
1212 @param client_index - opaque cookie to identify the sender
1213 @param context - sender context, to match reply w/ request
1214 @param is_ipv6 - ipv6 if non-zero, else ipv4
1215 @param sw_if_index - interface to associate with the table
1216 @param table_index - index of the table, if ~0 unset the table
1218 define classify_set_interface_ip_table
1224 u32 table_index; /* ~0 => off */
1227 /** \brief Set/unset interface classification table response
1228 @param context - sender context, to match reply w/ request
1229 @param retval - return code
1231 define classify_set_interface_ip_table_reply
1237 /** \brief Set/unset l2 classification tables for an interface request
1238 @param client_index - opaque cookie to identify the sender
1239 @param context - sender context, to match reply w/ request
1240 @param sw_if_index - interface to set/unset tables for
1241 @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
1242 @param ip6_table_index - ip6 index
1243 @param other_table_index - other index
1245 define classify_set_interface_l2_tables
1251 u32 ip4_table_index;
1252 u32 ip6_table_index;
1253 u32 other_table_index;
1257 /** \brief Set/unset l2 classification tables for an interface response
1258 @param context - sender context, to match reply w/ request
1259 @param retval - return code for the request
1261 define classify_set_interface_l2_tables_reply
1267 /** \brief Get node index using name request
1268 @param client_index - opaque cookie to identify the sender
1269 @param context - sender context, to match reply w/ request
1270 @param node_name[] - name of the node
1272 define get_node_index
1279 /** \brief Get node index using name request
1280 @param context - sender context, to match reply w/ request
1281 @param retval - return code for the request
1282 @param node_index - index of the desired node if found, else ~0
1284 define get_node_index_reply
1291 /** \brief Set the next node for a given node request
1292 @param client_index - opaque cookie to identify the sender
1293 @param context - sender context, to match reply w/ request
1294 @param node_name[] - node to add the next node to
1295 @param next_name[] - node to add as the next node
1297 define add_node_next
1305 /** \brief IP Set the next node for a given node response
1306 @param context - sender context, to match reply w/ request
1307 @param retval - return code for the add next node request
1308 @param next_index - the index of the next node if success, else ~0
1310 define add_node_next_reply
1317 /** \brief DHCP Proxy config 2 add / del request
1318 @param client_index - opaque cookie to identify the sender
1319 @param context - sender context, to match reply w/ request
1320 @param rx_vrf_id - receive vrf id
1321 @param server_vrf_id - server vrf id
1322 @param if_ipv6 - ipv6 if non-zero, else ipv4
1323 @param is_add - add the config if non-zero, else delete
1324 @param insert_circuit_id - option82 suboption 1 fib number
1325 @param dhcp_server[] - server address
1326 @param dhcp_src_address[] - <fix this, need details>
1328 define dhcp_proxy_config_2
1336 u8 insert_circuit_id;
1338 u8 dhcp_src_address[16];
1341 /** \brief DHCP Proxy config 2 add / del response
1342 @param context - sender context, to match reply w/ request
1343 @param retval - return code for request
1345 define dhcp_proxy_config_2_reply
1351 /** \brief l2tpv3 tunnel interface create request
1352 @param client_index - opaque cookie to identify the sender
1353 @param context - sender context, to match reply w/ request
1354 @param client_address - remote client tunnel ip address
1355 @param client_address - local tunnel ip address
1356 @param is_ipv6 - ipv6 if non-zero, else ipv4
1357 @param local_session_id - local tunnel session id
1358 @param remote_session_id - remote tunnel session id
1359 @param local_cookie - local tunnel cookie
1360 @param l2_sublayer_present - l2 sublayer is present in packets if non-zero
1361 @param encap_vrf_id - fib identifier used for outgoing encapsulated packets
1363 define l2tpv3_create_tunnel
1367 u8 client_address[16];
1370 u32 local_session_id;
1371 u32 remote_session_id;
1374 u8 l2_sublayer_present;
1378 /** \brief l2tpv3 tunnel interface create response
1379 @param context - sender context, to match reply w/ request
1380 @param retval - return code for the request
1381 @param sw_if_index - index of the new tunnel interface
1383 define l2tpv3_create_tunnel_reply
1390 define l2tpv3_set_tunnel_cookies
1395 u64 new_local_cookie;
1396 u64 new_remote_cookie;
1399 /** \brief L2TP tunnel set cookies response
1400 @param context - sender context, to match reply w/ request
1401 @param retval - return code for the request
1403 define l2tpv3_set_tunnel_cookies_reply
1409 define sw_if_l2tpv3_tunnel_details
1413 u8 interface_name[64];
1414 u8 client_address[16];
1416 u32 local_session_id;
1417 u32 remote_session_id;
1418 u64 local_cookie[2];
1420 u8 l2_sublayer_present;
1423 define sw_if_l2tpv3_tunnel_dump
1429 /** \brief L2 fib clear table request, clear all mac entries in the l2 fib
1430 @param client_index - opaque cookie to identify the sender
1431 @param context - sender context, to match reply w/ request
1433 define l2_fib_clear_table
1439 /** \brief L2 fib clear table response
1440 @param context - sender context, to match reply w/ request
1441 @param retval - return code for the request
1443 define l2_fib_clear_table_reply
1449 /** \brief L2 interface ethernet flow point filtering enable/disable request
1450 @param client_index - opaque cookie to identify the sender
1451 @param context - sender context, to match reply w/ request
1452 @param sw_if_index - interface to enable/disable filtering on
1453 @param enable_disable - if non-zero enable filtering, else disable
1455 define l2_interface_efp_filter
1463 /** \brief L2 interface ethernet flow point filtering response
1464 @param context - sender context, to match reply w/ request
1465 @param retval - return code for the request
1467 define l2_interface_efp_filter_reply
1473 define l2tpv3_interface_enable_disable
1481 define l2tpv3_interface_enable_disable_reply
1487 define l2tpv3_set_lookup_key
1491 /* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */
1495 define l2tpv3_set_lookup_key_reply
1501 define vxlan_add_del_tunnel
1509 u32 mcast_sw_if_index;
1511 u32 decap_next_index;
1515 define vxlan_add_del_tunnel_reply
1522 define vxlan_tunnel_dump
1529 define vxlan_tunnel_details
1535 u32 mcast_sw_if_index;
1537 u32 decap_next_index;
1542 define gre_add_del_tunnel
1554 define gre_add_del_tunnel_reply
1561 define gre_tunnel_dump
1568 define gre_tunnel_details
1579 /** \brief L2 interface vlan tag rewrite configure request
1580 @param client_index - opaque cookie to identify the sender
1581 @param context - sender context, to match reply w/ request
1582 @param sw_if_index - interface the operation is applied to
1583 @param vtr_op - Choose from l2_vtr_op_t enum values
1584 @param push_dot1q - first pushed flag dot1q id set, else dot1ad
1585 @param tag1 - Needed for any push or translate vtr op
1586 @param tag2 - Needed for any push 2 or translate x-2 vtr ops
1588 define l2_interface_vlan_tag_rewrite
1594 u32 push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
1595 u32 tag1; // first pushed tag
1596 u32 tag2; // second pushed tag
1599 /** \brief L2 interface vlan tag rewrite response
1600 @param context - sender context, to match reply w/ request
1601 @param retval - return code for the request
1603 define l2_interface_vlan_tag_rewrite_reply
1609 /** \brief vhost-user interface create request
1610 @param client_index - opaque cookie to identify the sender
1611 @param is_server - our side is socket server
1612 @param sock_filename - unix socket filename, used to speak with frontend
1613 @param use_custom_mac - enable or disable the use of the provided hardware address
1614 @param mac_address - hardware address to use if 'use_custom_mac' is set
1616 define create_vhost_user_if
1621 u8 sock_filename[256];
1623 u32 custom_dev_instance;
1629 /** \brief vhost-user interface create response
1630 @param context - sender context, to match reply w/ request
1631 @param retval - return code for the request
1632 @param sw_if_index - interface the operation is applied to
1634 define create_vhost_user_if_reply
1641 /** \brief vhost-user interface modify request
1642 @param client_index - opaque cookie to identify the sender
1643 @param is_server - our side is socket server
1644 @param sock_filename - unix socket filename, used to speak with frontend
1646 define modify_vhost_user_if
1652 u8 sock_filename[256];
1654 u32 custom_dev_instance;
1657 /** \brief vhost-user interface modify response
1658 @param context - sender context, to match reply w/ request
1659 @param retval - return code for the request
1661 define modify_vhost_user_if_reply
1667 /** \brief vhost-user interface delete request
1668 @param client_index - opaque cookie to identify the sender
1670 define delete_vhost_user_if
1677 /** \brief vhost-user interface delete response
1678 @param context - sender context, to match reply w/ request
1679 @param retval - return code for the request
1681 define delete_vhost_user_if_reply
1694 /* These fields map directly onto the subif template */
1698 u8 dot1ad; // 0 = dot1q, 1=dot1ad
1701 u8 outer_vlan_id_any;
1702 u8 inner_vlan_id_any;
1707 define create_subif_reply
1714 /** \brief show version
1715 @param client_index - opaque cookie to identify the sender
1716 @param context - sender context, to match reply w/ request
1724 /** \brief show version response
1725 @param context - sender context, to match reply w/ request
1726 @param retval - return code for the request
1727 @param program - name of the program (vpe)
1728 @param version - version of the program
1729 @param build_directory - root of the workspace where the program was built
1731 define show_version_reply
1738 u8 build_directory[256];
1741 /** \brief Vhost-user interface details structure (fix this)
1742 @param sw_if_index - index of the interface
1743 @param interface_name - name of interface
1744 @param virtio_net_hdr_sz - net header size
1745 @param features - interface features
1746 @param is_server - vhost-user server socket
1747 @param sock_filename - socket filename
1748 @param num_regions - number of used memory regions
1750 define sw_interface_vhost_user_details
1754 u8 interface_name[64];
1755 u32 virtio_net_hdr_sz;
1758 u8 sock_filename[256];
1764 define sw_interface_vhost_user_dump
1770 /** \brief l2 fib table entry structure
1771 @param bd_id - the l2 fib / bridge domain table id
1772 @param mac - the entry's mac address
1773 @param sw_if_index - index of the interface
1774 @param static_mac - the entry is statically configured.
1775 @param filter_mac - the entry is a mac filter entry.
1776 @param bvi_mac - the mac address is a bridge virtual interface
1778 define l2_fib_table_entry
1789 /** \brief Dump l2 fib (aka bridge domain) table
1790 @param client_index - opaque cookie to identify the sender
1791 @param bd_id - the l2 fib / bridge domain table identifier
1793 define l2_fib_table_dump
1800 define vxlan_gpe_add_del_tunnel
1814 define vxlan_gpe_add_del_tunnel_reply
1821 define vxlan_gpe_tunnel_dump
1828 define vxlan_gpe_tunnel_details
1841 /** \brief add or delete locator_set
1842 @param client_index - opaque cookie to identify the sender
1843 @param context - sender context, to match reply w/ request
1844 @param is_add - add address if non-zero, else delete
1845 @param locator_set_name - locator name
1846 @param locator_num - number of locators
1847 @param locators - LISP locator records
1848 Structure of one locator record is as follows:
1856 define lisp_add_del_locator_set
1861 u8 locator_set_name[64];
1866 /** \brief Reply for locator_set add/del
1867 @param context - returned sender context, to match reply w/ request
1868 @param retval - return code
1869 @param ls_index - locator set index
1871 define lisp_add_del_locator_set_reply
1878 /** \brief add or delete locator for locator_set
1879 @param client_index - opaque cookie to identify the sender
1880 @param context - sender context, to match reply w/ request
1881 @param is_add - add address if non-zero, else delete
1882 @param locator_set_name - name of locator_set to add/del locator
1883 @param sw_if_index - index of the interface
1884 @param priority - priority of the lisp locator
1885 @param weight - weight of the lisp locator
1887 define lisp_add_del_locator
1892 u8 locator_set_name[64];
1898 /** \brief Reply for locator add/del
1899 @param context - returned sender context, to match reply w/ request
1900 @param retval - return code
1902 define lisp_add_del_locator_reply
1908 /** \brief add or delete lisp eid-table
1909 @param client_index - opaque cookie to identify the sender
1910 @param context - sender context, to match reply w/ request
1911 @param is_add - add address if non-zero, else delete
1916 @param eid - EID can be ip4, ip6 or mac
1917 @param prefix_len - prefix len
1918 @param locator_set_name - name of locator_set to add/del eid-table
1919 @param vni - virtual network instance
1924 @param key - secret key
1926 define lisp_add_del_local_eid
1934 u8 locator_set_name[64];
1940 /** \brief Reply for local_eid add/del
1941 @param context - returned sender context, to match reply w/ request
1942 @param retval - return code
1944 define lisp_add_del_local_eid_reply
1950 /** \brief add or delete lisp gpe tunnel
1951 @param client_index - opaque cookie to identify the sender
1952 @param context - sender context, to match reply w/ request
1953 @param is_add - add address if non-zero, else delete
1958 @param rmt_eid - remote eid
1959 @param lcl_eid - local eid
1960 @param rmt_len - remote prefix len
1961 @param lcl_len - local prefix len
1962 @param vni - virtual network identifier
1963 @param dp_table - vrf/bridge domain id
1964 @param loc_num - number of locators
1965 @param lcl_locs - array of local locators
1966 @param rmt_locs - array of remote locators
1967 @param action - negative action when 0 locators configured
1969 define lisp_gpe_add_del_fwd_entry
1982 u8 lcl_locs[loc_num];
1983 u8 rmt_locs[loc_num];
1987 /** \brief Reply for gpe_fwd_entry add/del
1988 @param context - returned sender context, to match reply w/ request
1989 @param retval - return code
1991 define lisp_gpe_add_del_fwd_entry_reply
1997 /** \brief Add/delete map server
1998 @param client_index - opaque cookie to identify the sender
1999 @param context - sender context, to match reply w/ request
2000 @param is_add - add address if non-zero; delete otherwise
2001 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2002 @param ip_address - map server IP address
2004 define lisp_add_del_map_server
2013 /** \brief Reply for lisp_add_del_map_server
2014 @param context - returned sender context, to match reply w/ request
2015 @param retval - return code
2017 define lisp_add_del_map_server_reply
2023 /** \brief add or delete map-resolver
2024 @param client_index - opaque cookie to identify the sender
2025 @param context - sender context, to match reply w/ request
2026 @param is_add - add address if non-zero, else delete
2027 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2028 @param ip_address - array of address bytes
2030 define lisp_add_del_map_resolver
2039 /** \brief Reply for map_resolver add/del
2040 @param context - returned sender context, to match reply w/ request
2041 @param retval - return code
2043 define lisp_add_del_map_resolver_reply
2049 /** \brief enable or disable lisp-gpe protocol
2050 @param client_index - opaque cookie to identify the sender
2051 @param context - sender context, to match reply w/ request
2052 @param is_en - enable protocol if non-zero, else disable
2054 define lisp_gpe_enable_disable
2061 /** \brief Reply for gpe enable/disable
2062 @param context - returned sender context, to match reply w/ request
2063 @param retval - return code
2065 define lisp_gpe_enable_disable_reply
2071 /** \brief enable or disable LISP feature
2072 @param client_index - opaque cookie to identify the sender
2073 @param context - sender context, to match reply w/ request
2074 @param is_en - enable protocol if non-zero, else disable
2076 define lisp_enable_disable
2083 /** \brief Reply for gpe enable/disable
2084 @param context - returned sender context, to match reply w/ request
2085 @param retval - return code
2087 define lisp_enable_disable_reply
2093 /** \brief add or delete gpe_iface
2094 @param client_index - opaque cookie to identify the sender
2095 @param context - sender context, to match reply w/ request
2096 @param is_add - add address if non-zero, else delete
2098 define lisp_gpe_add_del_iface
2108 /** \brief Reply for gpe_iface add/del
2109 @param context - returned sender context, to match reply w/ request
2110 @param retval - return code
2112 define lisp_gpe_add_del_iface_reply
2118 /** \brief configure or disable LISP PITR node
2119 @param client_index - opaque cookie to identify the sender
2120 @param context - sender context, to match reply w/ request
2121 @param ls_name - locator set name
2122 @param is_add - add locator set if non-zero, else disable pitr
2124 define lisp_pitr_set_locator_set
2132 /** \brief Reply for lisp_pitr_set_locator_set
2133 @param context - returned sender context, to match reply w/ request
2134 @param retval - return code
2136 define lisp_pitr_set_locator_set_reply
2142 /** \brief Get state of LISP RLOC probing
2143 @param client_index - opaque cookie to identify the sender
2144 @param context - sender context, to match reply w/ request
2146 define show_lisp_rloc_probe_state
2152 /** \brief Reply for show_lisp_rloc_probe_state
2153 @param context - returned sender context, to match reply w/ request
2154 @param retval - return code
2155 @param is_enabled - state of RLOC probing
2157 define show_lisp_rloc_probe_state_reply
2164 /** \brief enable/disable LISP RLOC probing
2165 @param client_index - opaque cookie to identify the sender
2166 @param context - sender context, to match reply w/ request
2167 @param is_enable - enable if non-zero; disable otherwise
2169 define lisp_rloc_probe_enable_disable
2176 /** \brief Reply for lisp_rloc_probe_enable_disable
2177 @param context - returned sender context, to match reply w/ request
2178 @param retval - return code
2180 define lisp_rloc_probe_enable_disable_reply
2186 /** \brief enable/disable LISP map-register
2187 @param client_index - opaque cookie to identify the sender
2188 @param context - sender context, to match reply w/ request
2189 @param is_enable - enable if non-zero; disable otherwise
2191 define lisp_map_register_enable_disable
2198 /** \brief Reply for lisp_map_register_enable_disable
2199 @param context - returned sender context, to match reply w/ request
2200 @param retval - return code
2202 define lisp_map_register_enable_disable_reply
2208 /** \brief Get state of LISP map-register
2209 @param client_index - opaque cookie to identify the sender
2210 @param context - sender context, to match reply w/ request
2212 define show_lisp_map_register_state
2218 /** \brief Reply for show_lisp_map_register_state
2219 @param context - returned sender context, to match reply w/ request
2220 @param retval - return code
2222 define show_lisp_map_register_state_reply
2229 /** \brief set LISP map-request mode. Based on configuration VPP will send
2230 src/dest or just normal destination map requests.
2231 @param client_index - opaque cookie to identify the sender
2232 @param context - sender context, to match reply w/ request
2233 @param mode - new map-request mode. Supported values are:
2234 0 - destination only
2235 1 - source/destaination
2237 define lisp_map_request_mode
2244 /** \brief Reply for lisp_map_request_mode
2245 @param context - returned sender context, to match reply w/ request
2246 @param retval - return code
2248 define lisp_map_request_mode_reply
2254 /** \brief Request for LISP map-request mode
2255 @param client_index - opaque cookie to identify the sender
2256 @param context - sender context, to match reply w/ request
2258 define show_lisp_map_request_mode
2264 /** \brief Reply for show_lisp_map_request_mode
2265 @param context - returned sender context, to match reply w/ request
2266 @param retval - return code
2267 @param mode - map-request mode
2269 define show_lisp_map_request_mode_reply
2276 /** \brief add or delete remote static mapping
2277 @param client_index - opaque cookie to identify the sender
2278 @param context - sender context, to match reply w/ request
2279 @param is_add - add address if non-zero, else delete
2280 @param is_src_dst - flag indicating src/dst based routing policy
2281 @param del_all - if set, delete all remote mappings
2282 @param vni - virtual network instance
2283 @param action - negative map-reply action
2288 @param deid - dst EID
2289 @param seid - src EID, valid only if is_src_dst is enabled
2290 @param rloc_num - number of remote locators
2291 @param rlocs - remote locator records
2292 Structure of remote locator:
2301 define lisp_add_del_remote_mapping
2319 /** \brief Reply for lisp_add_del_remote_mapping
2320 @param context - returned sender context, to match reply w/ request
2321 @param retval - return code
2323 define lisp_add_del_remote_mapping_reply
2329 /** \brief add or delete LISP adjacency adjacency
2330 @param client_index - opaque cookie to identify the sender
2331 @param context - sender context, to match reply w/ request
2332 @param is_add - add address if non-zero, else delete
2333 @param vni - virtual network instance
2338 @param reid - remote EID
2339 @param leid - local EID
2341 define lisp_add_del_adjacency
2354 /** \brief Reply for lisp_add_del_adjacency
2355 @param context - returned sender context, to match reply w/ request
2356 @param retval - return code
2358 define lisp_add_del_adjacency_reply
2364 /** \brief add or delete map request itr rlocs
2365 @param client_index - opaque cookie to identify the sender
2366 @param context - sender context, to match reply w/ request
2367 @param is_add - add address if non-zero, else delete
2368 @param locator_set_name - locator set name
2370 define lisp_add_del_map_request_itr_rlocs
2375 u8 locator_set_name[64];
2378 /** \brief Reply for lisp_add_del_map_request_itr_rlocs
2379 @param context - returned sender context, to match reply w/ request
2380 @param retval - return code
2383 define lisp_add_del_map_request_itr_rlocs_reply
2389 /** \brief map/unmap vni/bd_index to vrf
2390 @param client_index - opaque cookie to identify the sender
2391 @param context - sender context, to match reply w/ request
2392 @param is_add - add or delete mapping
2393 @param dp_table - virtual network id/bridge domain index
2396 define lisp_eid_table_add_del_map
2406 /** \brief Reply for lisp_eid_table_add_del_map
2407 @param context - returned sender context, to match reply w/ request
2408 @param retval - return code
2410 define lisp_eid_table_add_del_map_reply
2416 /** \brief Request for map lisp locator status
2417 @param client_index - opaque cookie to identify the sender
2418 @param context - sender context, to match reply w/ request
2419 @param locator_set_index - index of locator_set
2420 @param ls_name - locator set name
2421 @param is_index_set - flag indicating whether ls_name or ls_index is set
2423 define lisp_locator_dump
2432 /** \brief LISP locator_set status
2433 @param local - if is set, then locator is local
2434 @param locator_set_name - name of the locator_set
2435 @param sw_if_index - sw_if_index of the locator
2436 @param priority - locator priority
2437 @param weight - locator weight
2439 define lisp_locator_details
2450 /** \brief LISP locator_set status
2451 @param context - sender context, to match reply w/ request
2452 @param ls_index - locator set index
2453 @param ls_name - name of the locator set
2455 define lisp_locator_set_details
2462 /** \brief Request for locator_set summary status
2463 @param client_index - opaque cookie to identify the sender
2464 @param context - sender context, to match reply w/ request
2465 @param filter - filter type
2468 1: local locator sets
2469 2: remote locator sets
2471 define lisp_locator_set_dump
2478 /** \brief Dump lisp eid-table
2479 @param client_index - opaque cookie to identify the sender
2480 @param context - sender context, to match reply w/ request
2481 @param locator_set_index - index of locator_set, if ~0 then the mapping
2483 @param action - negative map request action
2484 @param is_local - local if non-zero, else remote
2489 @param is_src_dst - EID is type of source/destination
2490 @param eid - EID can be ip4, ip6 or mac
2491 @param eid_prefix_len - prefix length
2492 @param seid - source EID can be ip4, ip6 or mac
2493 @param seid_prefix_len - source prefix length
2494 @param vni - virtual network instance
2495 @param ttl - time to live
2496 @param authoritative - authoritative
2501 @param key - secret key
2504 define lisp_eid_table_details
2507 u32 locator_set_index;
2523 /** \brief Request for eid table summary status
2524 @param client_index - opaque cookie to identify the sender
2525 @param context - sender context, to match reply w/ request
2526 @param eid_set - if non-zero request info about specific mapping
2527 @param vni - virtual network instance; valid only if eid_set != 0
2528 @param prefix_length - prefix length if EID is IP address;
2529 valid only if eid_set != 0
2530 @param eid_type - EID type; valid only if eid_set != 0
2534 2: EID is ethernet address
2535 @param eid - endpoint identifier
2536 @param filter - filter type;
2542 define lisp_eid_table_dump
2554 /** \brief LISP adjacency
2559 @param reid - remote EID
2560 @param leid - local EID
2561 @param reid_prefix_len - remote EID IP prefix length
2562 @param leid_prefix_len - local EID IP prefix length
2564 typeonly manual_print manual_endian define lisp_adjacency
2573 /** \brief LISP adjacency reply
2574 @param count - number of adjacencies
2575 @param adjacencies - array of adjacencies
2577 manual_endian manual_print define lisp_adjacencies_get_reply
2582 vl_api_lisp_adjacency_t adjacencies[count];
2585 /** \brief Request for LISP adjacencies
2586 @param client_index - opaque cookie to identify the sender
2587 @param context - sender context, to match reply w/ request
2588 @param vni - filter adjacencies by VNI
2590 define lisp_adjacencies_get
2597 /** \brief Shows relationship between vni and vrf/bd
2598 @param dp_table - VRF index or bridge domain index
2599 @param vni - vitual network instance
2601 define lisp_eid_table_map_details
2608 /** \brief Request for lisp_eid_table_map_details
2609 @param client_index - opaque cookie to identify the sender
2610 @param context - sender context, to match reply w/ request
2611 @param is_l2 - if set dump vni/bd mappings else vni/vrf
2613 define lisp_eid_table_map_dump
2620 /** \brief Dumps all VNIs used in mappings
2621 @param client_index - opaque cookie to identify the sender
2622 @param context - sender context, to match reply w/ request
2624 define lisp_eid_table_vni_dump
2630 /** \brief reply to lisp_eid_table_vni_dump
2631 @param client_index - opaque cookie to identify the sender
2632 @param context - sender context, to match reply w/ request
2633 @param vni - virtual network instance
2635 define lisp_eid_table_vni_details
2642 define lisp_gpe_tunnel_details
2648 u8 destination_ip[16];
2660 /** \brief Request for gpe tunnel summary status
2661 @param client_index - opaque cookie to identify the sender
2662 @param context - sender context, to match reply w/ request
2664 define lisp_gpe_tunnel_dump
2670 /** \brief LISP map resolver status
2671 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2672 @param ip_address - array of address bytes
2674 define lisp_map_resolver_details
2681 /** \brief Request for map resolver summary status
2682 @param client_index - opaque cookie to identify the sender
2683 @param context - sender context, to match reply w/ request
2685 define lisp_map_resolver_dump
2691 /** \brief LISP map server details
2692 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2693 @param ip_address - array of address bytes
2695 define lisp_map_server_details
2702 /** \brief Request for map server summary status
2703 @param client_index - opaque cookie to identify the sender
2704 @param context - sender context, to match reply w/ request
2706 define lisp_map_server_dump
2712 /** \brief Request for lisp-gpe protocol status
2713 @param client_index - opaque cookie to identify the sender
2714 @param context - sender context, to match reply w/ request
2716 define show_lisp_status
2722 /** \brief Status of lisp, enable or disable
2723 @param context - sender context, to match reply w/ request
2724 @param feature_status - lisp enable if non-zero, else disable
2725 @param gpe_status - lisp enable if non-zero, else disable
2727 define show_lisp_status_reply
2735 /** \brief Get LISP map request itr rlocs status
2736 @param context - sender context, to match reply w/ request
2737 @param locator_set_name - name of the locator_set
2739 define lisp_get_map_request_itr_rlocs
2745 /** \brief Request for map request itr rlocs summary status
2747 define lisp_get_map_request_itr_rlocs_reply
2751 u8 locator_set_name[64];
2754 /** \brief Request for lisp pitr status
2755 @param client_index - opaque cookie to identify the sender
2756 @param context - sender context, to match reply w/ request
2758 define show_lisp_pitr
2764 /** \brief Status of lisp pitr, enable or disable
2765 @param context - sender context, to match reply w/ request
2766 @param status - lisp pitr enable if non-zero, else disable
2767 @param locator_set_name - name of the locator_set
2769 define show_lisp_pitr_reply
2774 u8 locator_set_name[64];
2777 /* Gross kludge, DGMS */
2778 define interface_name_renumber
2783 u32 new_show_dev_instance;
2786 define interface_name_renumber_reply
2792 /** \brief Register for ip4 arp resolution events
2793 @param client_index - opaque cookie to identify the sender
2794 @param context - sender context, to match reply w/ request
2795 @param enable_disable - 1 => register for events, 0 => cancel registration
2796 @param pid - sender's pid
2797 @param address - the exact ip4 address of interest
2799 define want_ip4_arp_events
2808 /** \brief Reply for interface events registration
2809 @param context - returned sender context, to match reply w/ request
2810 @param retval - return code
2812 define want_ip4_arp_events_reply
2818 /** \brief Tell client about an ip4 arp resolution event
2819 @param client_index - opaque cookie to identify the sender
2820 @param context - sender context, to match reply w/ request
2821 @param address - the exact ip4 address of interest
2822 @param pid - client pid registered to receive notification
2823 @param sw_if_index - interface which received ARP packet
2824 @param new_mac - the new mac address
2825 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
2827 define ip4_arp_event
2838 /** \brief Register for ip6 nd resolution events
2839 @param client_index - opaque cookie to identify the sender
2840 @param context - sender context, to match reply w/ request
2841 @param enable_disable - 1 => register for events, 0 => cancel registration
2842 @param pid - sender's pid
2843 @param address - the exact ip6 address of interest
2845 define want_ip6_nd_events
2854 /** \brief Reply for ip6 nd resolution events registration
2855 @param context - returned sender context, to match reply w/ request
2856 @param retval - return code
2858 define want_ip6_nd_events_reply
2864 /** \brief Tell client about an ip6 nd resolution or mac/ip event
2865 @param client_index - opaque cookie to identify the sender
2866 @param context - sender context, to match reply w/ request
2867 @param pid - client pid registered to receive notification
2868 @param sw_if_index - interface which received ARP packet
2869 @param address - the exact ip6 address of interest
2870 @param new_mac - the new mac address
2871 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
2884 /** \brief L2 bridge domain add or delete request
2885 @param client_index - opaque cookie to identify the sender
2886 @param context - sender context, to match reply w/ request
2887 @param bd_id - the bridge domain to create
2888 @param flood - enable/disable bcast/mcast flooding in the bd
2889 @param uu_flood - enable/disable uknown unicast flood in the bd
2890 @param forward - enable/disable forwarding on all interfaces in the bd
2891 @param learn - enable/disable learning on all interfaces in the bd
2892 @param arp_term - enable/disable arp termination in the bd
2893 @param mac_age - mac aging time in min, 0 for disabled
2894 @param is_add - add or delete flag
2896 define bridge_domain_add_del
2910 /** \brief L2 bridge domain add or delete response
2911 @param context - sender context, to match reply w/ request
2912 @param retval - return code for the set bridge flags request
2914 define bridge_domain_add_del_reply
2920 /** \brief L2 bridge domain request operational state details
2921 @param client_index - opaque cookie to identify the sender
2922 @param context - sender context, to match reply w/ request
2923 @param bd_id - the bridge domain id desired or ~0 to request all bds
2925 define bridge_domain_dump
2932 /** \brief L2 bridge domain operational state response
2933 @param bd_id - the bridge domain id
2934 @param flood - bcast/mcast flooding state on all interfaces in the bd
2935 @param uu_flood - uknown unicast flooding state on all interfaces in the bd
2936 @param forward - forwarding state on all interfaces in the bd
2937 @param learn - learning state on all interfaces in the bd
2938 @param arp_term - arp termination state on all interfaces in the bd
2939 @param mac_age - mac aging time in min, 0 for disabled
2940 @param n_sw_ifs - number of sw_if_index's in the domain
2942 define bridge_domain_details
2952 u32 bvi_sw_if_index;
2956 /** \brief L2 bridge domain sw interface operational state response
2957 @param bd_id - the bridge domain id
2958 @param sw_if_index - sw_if_index in the domain
2959 @param shg - split horizon group for the interface
2961 define bridge_domain_sw_if_details
2969 /** \brief DHCP Client config add / del request
2970 @param client_index - opaque cookie to identify the sender
2971 @param context - sender context, to match reply w/ request
2972 @param sw_if_index - index of the interface for DHCP client
2973 @param hostname - hostname
2974 @param is_add - add the config if non-zero, else delete
2975 @param want_dhcp_event - DHCP event sent to the sender
2976 via dhcp_compl_event API message if non-zero
2977 @param pid - sender's pid
2979 define dhcp_client_config
2990 /** \brief DHCP Client config response
2991 @param context - sender context, to match reply w/ request
2992 @param retval - return code for the request
2994 define dhcp_client_config_reply
3000 /** \brief Set/unset input ACL interface
3001 @param client_index - opaque cookie to identify the sender
3002 @param context - sender context, to match reply w/ request
3003 @param sw_if_index - interface to set/unset input ACL
3004 @param ip4_table_index - ip4 classify table index (~0 for skip)
3005 @param ip6_table_index - ip6 classify table index (~0 for skip)
3006 @param l2_table_index - l2 classify table index (~0 for skip)
3007 @param is_add - Set input ACL if non-zero, else unset
3008 Note: User is recommeneded to use just one valid table_index per call.
3009 (ip4_table_index, ip6_table_index, or l2_table_index)
3011 define input_acl_set_interface
3016 u32 ip4_table_index;
3017 u32 ip6_table_index;
3022 /** \brief Set/unset input ACL interface response
3023 @param context - sender context, to match reply w/ request
3024 @param retval - return code for the request
3026 define input_acl_set_interface_reply
3032 /** \brief IPsec: Add/delete Security Policy Database
3033 @param client_index - opaque cookie to identify the sender
3034 @param context - sender context, to match reply w/ request
3035 @param is_add - add SPD if non-zero, else delete
3036 @param spd_id - SPD instance id (control plane allocated)
3039 define ipsec_spd_add_del
3047 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
3048 @param context - returned sender context, to match reply w/ request
3049 @param retval - return code
3052 define ipsec_spd_add_del_reply
3058 /** \brief IPsec: Add/delete SPD from interface
3060 @param client_index - opaque cookie to identify the sender
3061 @param context - sender context, to match reply w/ request
3062 @param is_add - add security mode if non-zero, else delete
3063 @param sw_if_index - index of the interface
3064 @param spd_id - SPD instance id to use for lookups
3068 define ipsec_interface_add_del_spd
3078 /** \brief Reply for IPsec: Add/delete SPD from interface
3079 @param context - returned sender context, to match reply w/ request
3080 @param retval - return code
3083 define ipsec_interface_add_del_spd_reply
3089 /** \brief IPsec: Add/delete Security Policy Database entry
3091 See RFC 4301, 4.4.1.1 on how to match packet to selectors
3093 @param client_index - opaque cookie to identify the sender
3094 @param context - sender context, to match reply w/ request
3095 @param is_add - add SPD if non-zero, else delete
3096 @param spd_id - SPD instance id (control plane allocated)
3097 @param priority - priority of SPD entry (non-unique value). Used to order SPD matching - higher priorities match before lower
3098 @param is_outbound - entry applies to outbound traffic if non-zero, otherwise applies to inbound traffic
3099 @param is_ipv6 - remote/local address are IPv6 if non-zero, else IPv4
3100 @param remote_address_start - start of remote address range to match
3101 @param remote_address_stop - end of remote address range to match
3102 @param local_address_start - start of local address range to match
3103 @param local_address_stop - end of local address range to match
3104 @param protocol - protocol type to match [0 means any]
3105 @param remote_port_start - start of remote port range to match ...
3106 @param remote_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3107 @param local_port_start - start of local port range to match ...
3108 @param local_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3109 @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)
3110 @param sa_id - SAD instance id (control plane allocated)
3114 define ipsec_spd_add_del_entry
3127 u8 remote_address_start[16];
3128 u8 remote_address_stop[16];
3129 u8 local_address_start[16];
3130 u8 local_address_stop[16];
3134 u16 remote_port_start;
3135 u16 remote_port_stop;
3136 u16 local_port_start;
3137 u16 local_port_stop;
3144 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
3145 @param context - returned sender context, to match reply w/ request
3146 @param retval - return code
3149 define ipsec_spd_add_del_entry_reply
3155 /** \brief IPsec: Add/delete Security Association Database entry
3156 @param client_index - opaque cookie to identify the sender
3157 @param context - sender context, to match reply w/ request
3158 @param is_add - add SAD entry if non-zero, else delete
3160 @param sad_id - sad id
3162 @param spi - security parameter index
3164 @param protocol - 0 = AH, 1 = ESP
3166 @param crypto_algorithm - 0 = Null, 1 = AES-CBC-128, 2 = AES-CBC-192, 3 = AES-CBC-256, 4 = 3DES-CBC
3167 @param crypto_key_length - length of crypto_key in bytes
3168 @param crypto_key - crypto keying material
3170 @param integrity_algorithm - 0 = None, 1 = MD5-96, 2 = SHA1-96, 3 = SHA-256, 4 = SHA-384, 5=SHA-512
3171 @param integrity_key_length - length of integrity_key in bytes
3172 @param integrity_key - integrity keying material
3174 @param use_extended_sequence_number - use ESN when non-zero
3176 @param is_tunnel - IPsec tunnel mode if non-zero, else transport mode
3177 @param is_tunnel_ipv6 - IPsec tunnel mode is IPv6 if non-zero, else IPv4 tunnel only valid if is_tunnel is non-zero
3178 @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
3179 @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
3183 IPsec tunnel address copy mode (to support GDOI)
3186 define ipsec_sad_add_del_entry
3198 u8 crypto_algorithm;
3199 u8 crypto_key_length;
3202 u8 integrity_algorithm;
3203 u8 integrity_key_length;
3204 u8 integrity_key[128];
3206 u8 use_extended_sequence_number;
3210 u8 tunnel_src_address[16];
3211 u8 tunnel_dst_address[16];
3214 /** \brief Reply for IPsec: Add/delete Security Association Database entry
3215 @param context - returned sender context, to match reply w/ request
3216 @param retval - return code
3219 define ipsec_sad_add_del_entry_reply
3225 /** \brief IPsec: Update Security Association keys
3226 @param client_index - opaque cookie to identify the sender
3227 @param context - sender context, to match reply w/ request
3229 @param sa_id - sa id
3231 @param crypto_key_length - length of crypto_key in bytes
3232 @param crypto_key - crypto keying material
3234 @param integrity_key_length - length of integrity_key in bytes
3235 @param integrity_key - integrity keying material
3238 define ipsec_sa_set_key
3245 u8 crypto_key_length;
3248 u8 integrity_key_length;
3249 u8 integrity_key[128];
3252 /** \brief Reply for IPsec: Update Security Association keys
3253 @param context - returned sender context, to match reply w/ request
3254 @param retval - return code
3257 define ipsec_sa_set_key_reply
3263 /** \brief IKEv2: Add/delete profile
3264 @param client_index - opaque cookie to identify the sender
3265 @param context - sender context, to match reply w/ request
3267 @param name - IKEv2 profile name
3268 @param is_add - Add IKEv2 profile if non-zero, else delete
3270 define ikev2_profile_add_del
3279 /** \brief Reply for IKEv2: Add/delete profile
3280 @param context - returned sender context, to match reply w/ request
3281 @param retval - return code
3283 define ikev2_profile_add_del_reply
3289 /** \brief IKEv2: Set IKEv2 profile authentication method
3290 @param client_index - opaque cookie to identify the sender
3291 @param context - sender context, to match reply w/ request
3293 @param name - IKEv2 profile name
3294 @param auth_method - IKEv2 authentication method (shared-key-mic/rsa-sig)
3295 @param is_hex - Authentication data in hex format if non-zero, else string
3296 @param data_len - Authentication data length
3297 @param data - Authentication data (for rsa-sig cert file path)
3299 define ikev2_profile_set_auth
3311 /** \brief Reply for IKEv2: Set IKEv2 profile authentication method
3312 @param context - returned sender context, to match reply w/ request
3313 @param retval - return code
3315 define ikev2_profile_set_auth_reply
3321 /** \brief IKEv2: Set IKEv2 profile local/remote identification
3322 @param client_index - opaque cookie to identify the sender
3323 @param context - sender context, to match reply w/ request
3325 @param name - IKEv2 profile name
3326 @param is_local - Identification is local if non-zero, else remote
3327 @param id_type - Identification type
3328 @param data_len - Identification data length
3329 @param data - Identification data
3331 define ikev2_profile_set_id
3343 /** \brief Reply for IKEv2:
3344 @param context - returned sender context, to match reply w/ request
3345 @param retval - return code
3347 define ikev2_profile_set_id_reply
3353 /** \brief IKEv2: Set IKEv2 profile traffic selector parameters
3354 @param client_index - opaque cookie to identify the sender
3355 @param context - sender context, to match reply w/ request
3357 @param name - IKEv2 profile name
3358 @param is_local - Traffic selector is local if non-zero, else remote
3359 @param proto - Traffic selector IP protocol (if zero not relevant)
3360 @param start_port - The smallest port number allowed by traffic selector
3361 @param end_port - The largest port number allowed by traffic selector
3362 @param start_addr - The smallest address included in traffic selector
3363 @param end_addr - The largest address included in traffic selector
3365 define ikev2_profile_set_ts
3379 /** \brief Reply for IKEv2: Set IKEv2 profile traffic selector parameters
3380 @param context - returned sender context, to match reply w/ request
3381 @param retval - return code
3383 define ikev2_profile_set_ts_reply
3389 /** \brief IKEv2: Set IKEv2 local RSA private key
3390 @param client_index - opaque cookie to identify the sender
3391 @param context - sender context, to match reply w/ request
3393 @param key_file - Key file absolute path
3395 define ikev2_set_local_key
3403 /** \brief Reply for IKEv2: Set IKEv2 local key
3404 @param context - returned sender context, to match reply w/ request
3405 @param retval - return code
3407 define ikev2_set_local_key_reply
3413 /** \brief Tell client about a DHCP completion event
3414 @param client_index - opaque cookie to identify the sender
3415 @param pid - client pid registered to receive notification
3416 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
3417 @param host_address - Host IP address
3418 @param router_address - Router IP address
3419 @param host_mac - Host MAC address
3421 define dhcp_compl_event
3427 u8 host_address[16];
3428 u8 router_address[16];
3432 /** \brief cop: enable/disable junk filtration features on an interface
3433 @param client_index - opaque cookie to identify the sender
3434 @param context - sender context, to match reply w/ request
3435 @param sw_if_inded - desired interface
3436 @param enable_disable - 1 => enable, 0 => disable
3439 define cop_interface_enable_disable
3447 /** \brief cop: interface enable/disable junk filtration reply
3448 @param context - returned sender context, to match reply w/ request
3449 @param retval - return code
3452 define cop_interface_enable_disable_reply
3458 /** \brief cop: enable/disable whitelist filtration features on an interface
3459 Note: the supplied fib_id must match in order to remove the feature!
3461 @param client_index - opaque cookie to identify the sender
3462 @param context - sender context, to match reply w/ request
3463 @param sw_if_index - interface handle, physical interfaces only
3464 @param fib_id - fib identifier for the whitelist / blacklist fib
3465 @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration
3466 @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration
3467 @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it
3470 define cop_whitelist_enable_disable
3481 /** \brief cop: interface enable/disable junk filtration reply
3482 @param context - returned sender context, to match reply w/ request
3483 @param retval - return code
3486 define cop_whitelist_enable_disable_reply
3492 /** \brief get_node_graph - get a copy of the vpp node graph
3493 including the current set of graph arcs.
3495 @param client_index - opaque cookie to identify the sender
3496 @param context - sender context, to match reply w/ request
3499 define get_node_graph
3505 /** \brief get_node_graph_reply
3506 @param context - returned sender context, to match reply w/ request
3507 @param retval - return code
3508 @param reply_in_shmem - result from vlib_node_serialize, in shared
3509 memory. Process with vlib_node_unserialize, remember to switch
3510 heaps and free the result.
3513 define get_node_graph_reply
3520 /** \brief IOAM enable : Enable in-band OAM
3521 @param id - profile id
3522 @param seqno - To enable Seqno Processing
3523 @param analyse - Enabling analysis of iOAM at decap node
3524 @param pow_enable - Proof of Work enabled or not flag
3525 @param trace_enable - iOAM Trace enabled or not flag
3539 /** \brief iOAM Trace profile add / del response
3540 @param context - sender context, to match reply w/ request
3541 @param retval - return value for request
3543 define ioam_enable_reply
3549 /** \brief iOAM disable
3550 @param client_index - opaque cookie to identify the sender
3551 @param context - sender context, to match reply w/ request
3552 @param index - MAP Domain index
3561 /** \brief iOAM disable response
3562 @param context - sender context, to match reply w/ request
3563 @param retval - return value for request
3565 define ioam_disable_reply
3571 /** \brief Create host-interface
3572 @param client_index - opaque cookie to identify the sender
3573 @param context - sender context, to match reply w/ request
3574 @param host_if_name - interface name
3575 @param hw_addr - interface MAC
3576 @param use_random_hw_addr - use random generated MAC
3578 define af_packet_create
3583 u8 host_if_name[64];
3585 u8 use_random_hw_addr;
3588 /** \brief Create host-interface response
3589 @param context - sender context, to match reply w/ request
3590 @param retval - return value for request
3592 define af_packet_create_reply
3599 /** \brief Delete host-interface
3600 @param client_index - opaque cookie to identify the sender
3601 @param context - sender context, to match reply w/ request
3602 @param host_if_name - interface name
3604 define af_packet_delete
3609 u8 host_if_name[64];
3612 /** \brief Delete host-interface response
3613 @param context - sender context, to match reply w/ request
3614 @param retval - return value for request
3616 define af_packet_delete_reply
3622 /** \brief Add/del policer
3623 @param client_index - opaque cookie to identify the sender
3624 @param context - sender context, to match reply w/ request
3625 @param is_add - add policer if non-zero, else delete
3626 @param name - policer name
3629 @param cb - Committed Burst
3630 @param eb - Excess or Peak Burst
3631 @param rate_type - rate type
3632 @param round_type - rounding type
3633 @param type - policer algorithm
3634 @param color_aware - 0=color-blind, 1=color-aware
3635 @param conform_action_type - conform action type
3636 @param conform_dscp - DSCP for conform mar-and-transmit action
3637 @param exceed_action_type - exceed action type
3638 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3639 @param violate_action_type - violate action type
3640 @param violate_dscp - DSCP for violate mar-and-transmit action
3642 define policer_add_del
3657 u8 conform_action_type;
3659 u8 exceed_action_type;
3661 u8 violate_action_type;
3665 /** \brief Add/del policer response
3666 @param context - sender context, to match reply w/ request
3667 @param retval - return value for request
3668 @param policer_index - for add, returned index of the new policer
3670 define policer_add_del_reply
3677 /** \brief Get list of policers
3678 @param client_index - opaque cookie to identify the sender
3679 @param context - sender context, to match reply w/ request
3680 @param match_name_valid - if 0 request all policers otherwise use match_name
3681 @param match_name - policer name
3688 u8 match_name_valid;
3692 /** \brief Policer operational state response.
3693 @param context - sender context, to match reply w/ request
3694 @param name - policer name
3697 @param cb - Committed Burst
3698 @param eb - Excess or Peak Burst
3699 @param rate_type - rate type
3700 @param round_type - rounding type
3701 @param type - policer algorithm
3702 @param conform_action_type - conform action type
3703 @param conform_dscp - DSCP for conform mar-and-transmit action
3704 @param exceed_action_type - exceed action type
3705 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3706 @param violate_action_type - violate action type
3707 @param violate_dscp - DSCP for violate mar-and-transmit action
3708 @param single_rate - 1 = single rate policer, 0 = two rate policer
3709 @param color_aware - for hierarchical policing
3710 @param scale - power-of-2 shift amount for lower rates
3711 @param cir_tokens_per_period - number of tokens for each period
3712 @param pir_tokens_per_period - number of tokens for each period for 2-rate policer
3713 @param current_limit - current limit
3714 @param current_bucket - current bucket
3715 @param extended_limit - extended limit
3716 @param extended_bucket - extended bucket
3717 @param last_update_time - last update time
3719 define policer_details
3731 u8 conform_action_type;
3733 u8 exceed_action_type;
3735 u8 violate_action_type;
3740 u32 cir_tokens_per_period;
3741 u32 pir_tokens_per_period;
3745 u32 extended_bucket;
3746 u64 last_update_time;
3749 /** \brief Set/unset policer classify interface
3750 @param client_index - opaque cookie to identify the sender
3751 @param context - sender context, to match reply w/ request
3752 @param sw_if_index - interface to set/unset policer classify
3753 @param ip4_table_index - ip4 classify table index (~0 for skip)
3754 @param ip6_table_index - ip6 classify table index (~0 for skip)
3755 @param l2_table_index - l2 classify table index (~0 for skip)
3756 @param is_add - Set if non-zero, else unset
3757 Note: User is recommeneded to use just one valid table_index per call.
3758 (ip4_table_index, ip6_table_index, or l2_table_index)
3760 define policer_classify_set_interface
3765 u32 ip4_table_index;
3766 u32 ip6_table_index;
3771 /** \brief Set/unset policer classify interface response
3772 @param context - sender context, to match reply w/ request
3773 @param retval - return value for request
3775 define policer_classify_set_interface_reply
3781 /** \brief Get list of policer classify interfaces and tables
3782 @param client_index - opaque cookie to identify the sender
3783 @param context - sender context, to match reply w/ request
3784 @param type - classify table type
3786 define policer_classify_dump
3793 /** \brief Policer iclassify operational state response.
3794 @param context - sender context, to match reply w/ request
3795 @param sw_if_index - software interface index
3796 @param table_index - classify table index
3798 define policer_classify_details
3805 /** \brief Create netmap
3806 @param client_index - opaque cookie to identify the sender
3807 @param context - sender context, to match reply w/ request
3808 @param netmap_if_name - interface name
3809 @param hw_addr - interface MAC
3810 @param use_random_hw_addr - use random generated MAC
3811 @param is_pipe - is pipe
3812 @param is_master - 0=slave, 1=master
3814 define netmap_create
3819 u8 netmap_if_name[64];
3821 u8 use_random_hw_addr;
3826 /** \brief Create netmap response
3827 @param context - sender context, to match reply w/ request
3828 @param retval - return value for request
3830 define netmap_create_reply
3836 /** \brief Delete netmap
3837 @param client_index - opaque cookie to identify the sender
3838 @param context - sender context, to match reply w/ request
3839 @param netmap_if_name - interface name
3841 define netmap_delete
3846 u8 netmap_if_name[64];
3849 /** \brief Delete netmap response
3850 @param context - sender context, to match reply w/ request
3851 @param retval - return value for request
3853 define netmap_delete_reply
3859 /** \brief Classify get table IDs request
3860 @param client_index - opaque cookie to identify the sender
3861 @param context - sender context, to match reply w/ request
3863 define classify_table_ids
3869 /** \brief Reply for classify get table IDs request
3870 @param context - sender context which was passed in the request
3871 @param count - number of ids returned in response
3872 @param ids - array of classify table ids
3874 define classify_table_ids_reply
3882 /** \brief Classify table ids by interface index request
3883 @param client_index - opaque cookie to identify the sender
3884 @param context - sender context, to match reply w/ request
3885 @param sw_if_index - index of the interface
3887 define classify_table_by_interface
3894 /** \brief Reply for classify table id by interface index request
3895 @param context - sender context which was passed in the request
3896 @param count - number of ids returned in response
3897 @param sw_if_index - index of the interface
3898 @param l2_table_id - l2 classify table index
3899 @param ip4_table_id - ip4 classify table index
3900 @param ip6_table_id - ip6 classify table index
3902 define classify_table_by_interface_reply
3912 /** \brief Classify table info
3913 @param client_index - opaque cookie to identify the sender
3914 @param context - sender context, to match reply w/ request
3915 @param table_id - classify table index
3917 define classify_table_info
3924 /** \brief Reply for classify table info request
3925 @param context - sender context which was passed in the request
3926 @param count - number of ids returned in response
3927 @param table_id - classify table index
3928 @param nbuckets - number of buckets when adding a table
3929 @param match_n_vectors - number of match vectors
3930 @param skip_n_vectors - number of skip_n_vectors
3931 @param active_sessions - number of sessions (active entries)
3932 @param next_table_index - index of next table
3933 @param miss_next_index - index of miss table
3934 @param mask[] - match mask
3936 define classify_table_info_reply
3942 u32 match_n_vectors;
3944 u32 active_sessions;
3945 u32 next_table_index;
3946 u32 miss_next_index;
3948 u8 mask[mask_length];
3951 /** \brief Classify sessions dump request
3952 @param client_index - opaque cookie to identify the sender
3953 @param context - sender context, to match reply w/ request
3954 @param table_id - classify table index
3956 define classify_session_dump
3963 /** \brief Reply for classify table session dump request
3964 @param context - sender context which was passed in the request
3965 @param count - number of ids returned in response
3966 @param table_id - classify table index
3967 @param hit_next_index - hit_next_index of session
3968 @param opaque_index - for add, opaque_index of session
3969 @param advance - advance value of session
3970 @param match[] - match value for session
3972 define classify_session_details
3981 u8 match[match_length];
3984 /** \brief Configure IPFIX exporter process request
3985 @param client_index - opaque cookie to identify the sender
3986 @param context - sender context, to match reply w/ request
3987 @param collector_address - address of IPFIX collector
3988 @param collector_port - port of IPFIX collector
3989 @param src_address - address of IPFIX exporter
3990 @param vrf_id - VRF / fib table ID
3991 @param path_mtu - Path MTU between exporter and collector
3992 @param template_interval - number of seconds after which to resend template
3993 @param udp_checksum - UDP checksum calculation enable flag
3995 define set_ipfix_exporter
3999 u8 collector_address[16];
4004 u32 template_interval;
4008 /** \brief Reply to IPFIX exporter configure request
4009 @param context - sender context which was passed in the request
4011 define set_ipfix_exporter_reply
4017 /** \brief IPFIX exporter dump request
4018 @param client_index - opaque cookie to identify the sender
4019 @param context - sender context, to match reply w/ request
4021 define ipfix_exporter_dump
4027 /** \brief Reply to IPFIX exporter dump request
4028 @param context - sender context which was passed in the request
4029 @param collector_address - address of IPFIX collector
4030 @param collector_port - port of IPFIX collector
4031 @param src_address - address of IPFIX exporter
4032 @param fib_index - fib table index
4033 @param path_mtu - Path MTU between exporter and collector
4034 @param template_interval - number of seconds after which to resend template
4035 @param udp_checksum - UDP checksum calculation enable flag
4037 define ipfix_exporter_details
4040 u8 collector_address[16];
4045 u32 template_interval;
4049 /** \brief IPFIX classify stream configure request
4050 @param client_index - opaque cookie to identify the sender
4051 @param context - sender context, to match reply w/ request
4052 @param domain_id - domain ID reported in IPFIX messages for classify stream
4053 @param src_port - source port of UDP session for classify stream
4055 define set_ipfix_classify_stream {
4062 /** \brief IPFIX classify stream configure response
4063 @param context - sender context, to match reply w/ request
4064 @param retval - return value for request
4066 define set_ipfix_classify_stream_reply {
4071 /** \brief IPFIX classify stream dump request
4072 @param client_index - opaque cookie to identify the sender
4073 @param context - sender context, to match reply w/ request
4075 define ipfix_classify_stream_dump {
4080 /** \brief Reply to IPFIX classify stream dump request
4081 @param context - sender context, to match reply w/ request
4082 @param domain_id - domain ID reported in IPFIX messages for classify stream
4083 @param src_port - source port of UDP session for classify stream
4085 define ipfix_classify_stream_details {
4091 /** \brief IPFIX add or delete classifier table request
4092 @param client_index - opaque cookie to identify the sender
4093 @param context - sender context, to match reply w/ request
4094 @param table_id - classifier table ID
4095 @param ip_version - version of IP used in the classifier table
4096 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
4098 define ipfix_classify_table_add_del {
4103 u8 transport_protocol;
4107 /** \brief IPFIX add classifier table response
4108 @param context - sender context which was passed in the request
4110 define ipfix_classify_table_add_del_reply {
4115 /** \brief IPFIX classify tables dump request
4116 @param client_index - opaque cookie to identify the sender
4117 @param context - sender context, to match reply w/ request
4119 define ipfix_classify_table_dump {
4124 /** \brief Reply to IPFIX classify tables dump request
4125 @param context - sender context, to match reply w/ request
4126 @param table_id - classifier table ID
4127 @param ip_version - version of IP used in the classifier table
4128 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
4130 define ipfix_classify_table_details {
4134 u8 transport_protocol;
4137 /** \brief Set/unset flow classify interface
4138 @param client_index - opaque cookie to identify the sender
4139 @param context - sender context, to match reply w/ request
4140 @param sw_if_index - interface to set/unset flow classify
4141 @param ip4_table_index - ip4 classify table index (~0 for skip)
4142 @param ip6_table_index - ip6 classify table index (~0 for skip)
4143 @param l2_table_index - l2 classify table index (~0 for skip)
4144 @param is_add - Set if non-zero, else unset
4145 Note: User is recommeneded to use just one valid table_index per call.
4146 (ip4_table_index, ip6_table_index, or l2_table_index)
4148 define flow_classify_set_interface {
4152 u32 ip4_table_index;
4153 u32 ip6_table_index;
4157 /** \brief Set/unset flow classify interface response
4158 @param context - sender context, to match reply w/ request
4159 @param retval - return value for request
4161 define flow_classify_set_interface_reply {
4166 /** \brief Get list of flow classify interfaces and tables
4167 @param client_index - opaque cookie to identify the sender
4168 @param context - sender context, to match reply w/ request
4169 @param type - classify table type
4171 define flow_classify_dump {
4177 /** \brief Flow classify operational state response.
4178 @param context - sender context, to match reply w/ request
4179 @param sw_if_index - software interface index
4180 @param table_index - classify table index
4182 define flow_classify_details {
4188 /** \brief Query relative index via node names
4189 @param client_index - opaque cookie to identify the sender
4190 @param context - sender context, to match reply w/ request
4191 @param node_name - name of node to find relative index from
4192 @param next_name - next node from node_name to find relative index of
4194 define get_next_index
4202 /** \brief Reply for get next node index
4203 @param context - sender context which was passed in the request
4204 @param retval - return value
4205 @param next_index - index of the next_node
4207 define get_next_index_reply
4214 /** \brief PacketGenerator create interface request
4215 @param client_index - opaque cookie to identify the sender
4216 @param context - sender context, to match reply w/ request
4217 @param interface_id - interface index
4219 define pg_create_interface
4226 /** \brief PacketGenerator create interface response
4227 @param context - sender context, to match reply w/ request
4228 @param retval - return value for request
4230 define pg_create_interface_reply
4237 /** \brief PacketGenerator capture packets on given interface request
4238 @param client_index - opaque cookie to identify the sender
4239 @param context - sender context, to match reply w/ request
4240 @param interface_id - pg interface index
4241 @param is_enabled - 1 if enabling streams, 0 if disabling
4242 @param count - number of packets to be captured
4243 @param pcap_file - pacp file name to store captured packets
4252 u32 pcap_name_length;
4253 u8 pcap_file_name[pcap_name_length];
4256 /** \brief PacketGenerator capture packets response
4257 @param context - sender context, to match reply w/ request
4258 @param retval - return value for request
4260 define pg_capture_reply
4266 /** \brief Enable / disable packet generator request
4267 @param client_index - opaque cookie to identify the sender
4268 @param context - sender context, to match reply w/ request
4269 @param is_enabled - 1 if enabling streams, 0 if disabling
4270 @param stream - stream name to be enable/disabled, if not specified handle all streams
4272 define pg_enable_disable
4277 u32 stream_name_length;
4278 u8 stream_name[stream_name_length];
4281 /** \brief Reply for enable / disable packet generator
4282 @param context - returned sender context, to match reply w/ request
4283 @param retval - return code
4285 define pg_enable_disable_reply
4291 /** \brief Configure IP source and L4 port-range check
4292 @param client_index - opaque cookie to identify the sender
4293 @param context - sender context, to match reply w/ request
4294 @param is_ip6 - 1 if source address type is IPv6
4295 @param is_add - 1 if add, 0 if delete
4296 @param mask_length - mask length for address entry
4297 @param address - array of address bytes
4298 @param number_of_ranges - length of low_port and high_port arrays (must match)
4299 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
4300 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
4301 @param vrf_id - fib table/vrf id to associate the source and port-range check with
4302 @note To specify a single port set low_port and high_port entry the same
4304 define ip_source_and_port_range_check_add_del
4312 u8 number_of_ranges;
4318 /** \brief Configure IP source and L4 port-range check reply
4319 @param context - returned sender context, to match reply w/ request
4320 @param retval - return code
4322 define ip_source_and_port_range_check_add_del_reply
4328 /** \brief Set interface source and L4 port-range request
4329 @param client_index - opaque cookie to identify the sender
4330 @param context - sender context, to match reply w/ request
4331 @param interface_id - interface index
4332 @param tcp_vrf_id - VRF associated with source and TCP port-range check
4333 @param udp_vrf_id - VRF associated with source and TCP port-range check
4335 define ip_source_and_port_range_check_interface_add_del
4347 /** \brief Set interface source and L4 port-range response
4348 @param context - sender context, to match reply w/ request
4349 @param retval - return value for request
4351 define ip_source_and_port_range_check_interface_add_del_reply
4357 /** \brief Add / del ipsec gre tunnel request
4358 @param client_index - opaque cookie to identify the sender
4359 @param context - sender context, to match reply w/ request
4360 @param local_sa_id - local SA id
4361 @param remote_sa_id - remote SA id
4362 @param is_add - 1 if adding the tunnel, 0 if deleting
4363 @param src_address - tunnel source address
4364 @param dst_address - tunnel destination address
4366 define ipsec_gre_add_del_tunnel {
4376 /** \brief Reply for add / del ipsec gre tunnel request
4377 @param context - returned sender context, to match reply w/ request
4378 @param retval - return code
4379 @param sw_if_index - software index of the new ipsec gre tunnel
4381 define ipsec_gre_add_del_tunnel_reply {
4387 /** \brief Dump ipsec gre tunnel table
4388 @param client_index - opaque cookie to identify the sender
4389 @param context - sender context, to match reply w/ request
4390 @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
4392 define ipsec_gre_tunnel_dump {
4398 /** \brief mpls gre tunnel operational state response
4399 @param context - returned sender context, to match reply w/ request
4400 @param sw_if_index - software index of the ipsec gre tunnel
4401 @param local_sa_id - local SA id
4402 @param remote_sa_id - remote SA id
4403 @param src_address - tunnel source address
4404 @param dst_address - tunnel destination address
4406 define ipsec_gre_tunnel_details {
4415 /** \brief Delete sub interface request
4416 @param client_index - opaque cookie to identify the sender
4417 @param context - sender context, to match reply w/ request
4418 @param sw_if_index - sw index of the interface that was created by create_subif
4420 define delete_subif {
4426 /** \brief Delete sub interface response
4427 @param context - sender context, to match reply w/ request
4428 @param retval - return code for the request
4430 define delete_subif_reply {
4435 /** \brief DPDK interface HQoS pipe profile set request
4436 @param client_index - opaque cookie to identify the sender
4437 @param context - sender context, to match reply w/ request
4438 @param sw_if_index - the interface
4439 @param subport - subport ID
4440 @param pipe - pipe ID within its subport
4441 @param profile - pipe profile ID
4443 define sw_interface_set_dpdk_hqos_pipe {
4452 /** \brief DPDK interface HQoS pipe profile set reply
4453 @param context - sender context, to match reply w/ request
4454 @param retval - request return code
4456 define sw_interface_set_dpdk_hqos_pipe_reply {
4461 /** \brief DPDK interface HQoS subport parameters set request
4462 @param client_index - opaque cookie to identify the sender
4463 @param context - sender context, to match reply w/ request
4464 @param sw_if_index - the interface
4465 @param subport - subport ID
4466 @param tb_rate - subport token bucket rate (measured in bytes/second)
4467 @param tb_size - subport token bucket size (measured in credits)
4468 @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second)
4469 @param tc_period - enforcement period for rates (measured in milliseconds)
4471 define sw_interface_set_dpdk_hqos_subport {
4482 /** \brief DPDK interface HQoS subport parameters set reply
4483 @param context - sender context, to match reply w/ request
4484 @param retval - request return code
4486 define sw_interface_set_dpdk_hqos_subport_reply {
4491 /** \brief DPDK interface HQoS tctbl entry set request
4492 @param client_index - opaque cookie to identify the sender
4493 @param context - sender context, to match reply w/ request
4494 @param sw_if_index - the interface
4495 @param entry - entry index ID
4496 @param tc - traffic class (0 .. 3)
4497 @param queue - traffic class queue (0 .. 3)
4499 define sw_interface_set_dpdk_hqos_tctbl {
4508 /** \brief DPDK interface HQoS tctbl entry set reply
4509 @param context - sender context, to match reply w/ request
4510 @param retval - request return code
4512 define sw_interface_set_dpdk_hqos_tctbl_reply {
4517 /** \brief L2 interface pbb tag rewrite configure request
4518 @param client_index - opaque cookie to identify the sender
4519 @param context - sender context, to match reply w/ request
4520 @param sw_if_index - interface the operation is applied to
4521 @param vtr_op - Choose from l2_vtr_op_t enum values
4522 @param inner_tag - needed for translate_qinq vtr op only
4523 @param outer_tag - needed for translate_qinq vtr op only
4524 @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op
4525 @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op
4526 @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op
4527 @param i_sid - I-tag service id, needed for any push or translate qinq vtr op
4529 define l2_interface_pbb_tag_rewrite
4542 /** \brief L2 interface pbb tag rewrite response
4543 @param context - sender context, to match reply w/ request
4544 @param retval - return code for the request
4546 define l2_interface_pbb_tag_rewrite_reply
4552 /** \brief Punt traffic to the host
4553 @param client_index - opaque cookie to identify the sender
4554 @param context - sender context, to match reply w/ request
4555 @param is_add - add punt if non-zero, else delete
4556 @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All
4557 @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported
4558 @param l4_port - TCP/UDP port to be punted
4569 /** \brief Reply to the punt request
4570 @param context - sender context which was passed in the request
4571 @param retval - return code of punt request
4579 /** \brief Dump ipsec policy database data
4580 @param client_index - opaque cookie to identify the sender
4581 @param context - sender context, to match reply w/ request
4582 @param spd_id - SPD instance id
4583 @param sa_id - SA id, optional, set to ~0 to see all policies in SPD
4585 define ipsec_spd_dump {
4592 /** \brief IPsec policy database response
4593 @param context - sender context which was passed in the request
4594 @param spd_id - SPD instance id
4595 @param priority - numeric value to control policy evaluation order
4596 @param is_outbound - [1|0] to indicate if direction is [out|in]bound
4597 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
4598 @param local_start_addr - first address in local traffic selector range
4599 @param local_stop_addr - last address in local traffic selector range
4600 @param local_start_port - first port in local traffic selector range
4601 @param local_stop_port - last port in local traffic selector range
4602 @param remote_start_addr - first address in remote traffic selector range
4603 @param remote_stop_addr - last address in remote traffic selector range
4604 @param remote_start_port - first port in remote traffic selector range
4605 @param remote_stop_port - last port in remote traffic selector range
4606 @param protocol - traffic selector protocol
4607 @param policy - policy action
4608 @param sa_id - SA id
4609 @param bytes - byte count of packets matching this policy
4610 @param packets - count of packets matching this policy
4613 define ipsec_spd_details {
4619 u8 local_start_addr[16];
4620 u8 local_stop_addr[16];
4621 u16 local_start_port;
4622 u16 local_stop_port;
4623 u8 remote_start_addr[16];
4624 u8 remote_stop_addr[16];
4625 u16 remote_start_port;
4626 u16 remote_stop_port;
4634 /** \brief Feature path enable/disable request
4635 @param client_index - opaque cookie to identify the sender
4636 @param context - sender context, to match reply w/ request
4637 @param sw_if_index - the interface
4638 @param enable - 1 = on, 0 = off
4640 define feature_enable_disable {
4646 u8 feature_name[64];
4649 /** \brief Reply to the eature path enable/disable request
4650 @param context - sender context which was passed in the request
4651 @param retval - return code for the request
4653 define feature_enable_disable_reply
4661 * eval: (c-set-style "gnu")