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 is_add - add or delete flag
2895 define bridge_domain_add_del
2908 /** \brief L2 bridge domain add or delete response
2909 @param context - sender context, to match reply w/ request
2910 @param retval - return code for the set bridge flags request
2912 define bridge_domain_add_del_reply
2918 /** \brief L2 bridge domain request operational state details
2919 @param client_index - opaque cookie to identify the sender
2920 @param context - sender context, to match reply w/ request
2921 @param bd_id - the bridge domain id desired or ~0 to request all bds
2923 define bridge_domain_dump
2930 /** \brief L2 bridge domain operational state response
2931 @param bd_id - the bridge domain id
2932 @param flood - bcast/mcast flooding state on all interfaces in the bd
2933 @param uu_flood - uknown unicast flooding state on all interfaces in the bd
2934 @param forward - forwarding state on all interfaces in the bd
2935 @param learn - learning state on all interfaces in the bd
2936 @param arp_term - arp termination state on all interfaces in the bd
2937 @param n_sw_ifs - number of sw_if_index's in the domain
2939 define bridge_domain_details
2948 u32 bvi_sw_if_index;
2952 /** \brief L2 bridge domain sw interface operational state response
2953 @param bd_id - the bridge domain id
2954 @param sw_if_index - sw_if_index in the domain
2955 @param shg - split horizon group for the interface
2957 define bridge_domain_sw_if_details
2965 /** \brief DHCP Client config add / del request
2966 @param client_index - opaque cookie to identify the sender
2967 @param context - sender context, to match reply w/ request
2968 @param sw_if_index - index of the interface for DHCP client
2969 @param hostname - hostname
2970 @param is_add - add the config if non-zero, else delete
2971 @param want_dhcp_event - DHCP event sent to the sender
2972 via dhcp_compl_event API message if non-zero
2973 @param pid - sender's pid
2975 define dhcp_client_config
2986 /** \brief DHCP Client config response
2987 @param context - sender context, to match reply w/ request
2988 @param retval - return code for the request
2990 define dhcp_client_config_reply
2996 /** \brief Set/unset input ACL interface
2997 @param client_index - opaque cookie to identify the sender
2998 @param context - sender context, to match reply w/ request
2999 @param sw_if_index - interface to set/unset input ACL
3000 @param ip4_table_index - ip4 classify table index (~0 for skip)
3001 @param ip6_table_index - ip6 classify table index (~0 for skip)
3002 @param l2_table_index - l2 classify table index (~0 for skip)
3003 @param is_add - Set input ACL if non-zero, else unset
3004 Note: User is recommeneded to use just one valid table_index per call.
3005 (ip4_table_index, ip6_table_index, or l2_table_index)
3007 define input_acl_set_interface
3012 u32 ip4_table_index;
3013 u32 ip6_table_index;
3018 /** \brief Set/unset input ACL interface response
3019 @param context - sender context, to match reply w/ request
3020 @param retval - return code for the request
3022 define input_acl_set_interface_reply
3028 /** \brief IPsec: Add/delete Security Policy Database
3029 @param client_index - opaque cookie to identify the sender
3030 @param context - sender context, to match reply w/ request
3031 @param is_add - add SPD if non-zero, else delete
3032 @param spd_id - SPD instance id (control plane allocated)
3035 define ipsec_spd_add_del
3043 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
3044 @param context - returned sender context, to match reply w/ request
3045 @param retval - return code
3048 define ipsec_spd_add_del_reply
3054 /** \brief IPsec: Add/delete SPD from interface
3056 @param client_index - opaque cookie to identify the sender
3057 @param context - sender context, to match reply w/ request
3058 @param is_add - add security mode if non-zero, else delete
3059 @param sw_if_index - index of the interface
3060 @param spd_id - SPD instance id to use for lookups
3064 define ipsec_interface_add_del_spd
3074 /** \brief Reply for IPsec: Add/delete SPD from interface
3075 @param context - returned sender context, to match reply w/ request
3076 @param retval - return code
3079 define ipsec_interface_add_del_spd_reply
3085 /** \brief IPsec: Add/delete Security Policy Database entry
3087 See RFC 4301, 4.4.1.1 on how to match packet to selectors
3089 @param client_index - opaque cookie to identify the sender
3090 @param context - sender context, to match reply w/ request
3091 @param is_add - add SPD if non-zero, else delete
3092 @param spd_id - SPD instance id (control plane allocated)
3093 @param priority - priority of SPD entry (non-unique value). Used to order SPD matching - higher priorities match before lower
3094 @param is_outbound - entry applies to outbound traffic if non-zero, otherwise applies to inbound traffic
3095 @param is_ipv6 - remote/local address are IPv6 if non-zero, else IPv4
3096 @param remote_address_start - start of remote address range to match
3097 @param remote_address_stop - end of remote address range to match
3098 @param local_address_start - start of local address range to match
3099 @param local_address_stop - end of local address range to match
3100 @param protocol - protocol type to match [0 means any]
3101 @param remote_port_start - start of remote port range to match ...
3102 @param remote_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3103 @param local_port_start - start of local port range to match ...
3104 @param local_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3105 @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)
3106 @param sa_id - SAD instance id (control plane allocated)
3110 define ipsec_spd_add_del_entry
3123 u8 remote_address_start[16];
3124 u8 remote_address_stop[16];
3125 u8 local_address_start[16];
3126 u8 local_address_stop[16];
3130 u16 remote_port_start;
3131 u16 remote_port_stop;
3132 u16 local_port_start;
3133 u16 local_port_stop;
3140 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
3141 @param context - returned sender context, to match reply w/ request
3142 @param retval - return code
3145 define ipsec_spd_add_del_entry_reply
3151 /** \brief IPsec: Add/delete Security Association Database entry
3152 @param client_index - opaque cookie to identify the sender
3153 @param context - sender context, to match reply w/ request
3154 @param is_add - add SAD entry if non-zero, else delete
3156 @param sad_id - sad id
3158 @param spi - security parameter index
3160 @param protocol - 0 = AH, 1 = ESP
3162 @param crypto_algorithm - 0 = Null, 1 = AES-CBC-128, 2 = AES-CBC-192, 3 = AES-CBC-256, 4 = 3DES-CBC
3163 @param crypto_key_length - length of crypto_key in bytes
3164 @param crypto_key - crypto keying material
3166 @param integrity_algorithm - 0 = None, 1 = MD5-96, 2 = SHA1-96, 3 = SHA-256, 4 = SHA-384, 5=SHA-512
3167 @param integrity_key_length - length of integrity_key in bytes
3168 @param integrity_key - integrity keying material
3170 @param use_extended_sequence_number - use ESN when non-zero
3172 @param is_tunnel - IPsec tunnel mode if non-zero, else transport mode
3173 @param is_tunnel_ipv6 - IPsec tunnel mode is IPv6 if non-zero, else IPv4 tunnel only valid if is_tunnel is non-zero
3174 @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
3175 @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
3179 IPsec tunnel address copy mode (to support GDOI)
3182 define ipsec_sad_add_del_entry
3194 u8 crypto_algorithm;
3195 u8 crypto_key_length;
3198 u8 integrity_algorithm;
3199 u8 integrity_key_length;
3200 u8 integrity_key[128];
3202 u8 use_extended_sequence_number;
3206 u8 tunnel_src_address[16];
3207 u8 tunnel_dst_address[16];
3210 /** \brief Reply for IPsec: Add/delete Security Association Database entry
3211 @param context - returned sender context, to match reply w/ request
3212 @param retval - return code
3215 define ipsec_sad_add_del_entry_reply
3221 /** \brief IPsec: Update Security Association keys
3222 @param client_index - opaque cookie to identify the sender
3223 @param context - sender context, to match reply w/ request
3225 @param sa_id - sa id
3227 @param crypto_key_length - length of crypto_key in bytes
3228 @param crypto_key - crypto keying material
3230 @param integrity_key_length - length of integrity_key in bytes
3231 @param integrity_key - integrity keying material
3234 define ipsec_sa_set_key
3241 u8 crypto_key_length;
3244 u8 integrity_key_length;
3245 u8 integrity_key[128];
3248 /** \brief Reply for IPsec: Update Security Association keys
3249 @param context - returned sender context, to match reply w/ request
3250 @param retval - return code
3253 define ipsec_sa_set_key_reply
3259 /** \brief IKEv2: Add/delete profile
3260 @param client_index - opaque cookie to identify the sender
3261 @param context - sender context, to match reply w/ request
3263 @param name - IKEv2 profile name
3264 @param is_add - Add IKEv2 profile if non-zero, else delete
3266 define ikev2_profile_add_del
3275 /** \brief Reply for IKEv2: Add/delete profile
3276 @param context - returned sender context, to match reply w/ request
3277 @param retval - return code
3279 define ikev2_profile_add_del_reply
3285 /** \brief IKEv2: Set IKEv2 profile authentication method
3286 @param client_index - opaque cookie to identify the sender
3287 @param context - sender context, to match reply w/ request
3289 @param name - IKEv2 profile name
3290 @param auth_method - IKEv2 authentication method (shared-key-mic/rsa-sig)
3291 @param is_hex - Authentication data in hex format if non-zero, else string
3292 @param data_len - Authentication data length
3293 @param data - Authentication data (for rsa-sig cert file path)
3295 define ikev2_profile_set_auth
3307 /** \brief Reply for IKEv2: Set IKEv2 profile authentication method
3308 @param context - returned sender context, to match reply w/ request
3309 @param retval - return code
3311 define ikev2_profile_set_auth_reply
3317 /** \brief IKEv2: Set IKEv2 profile local/remote identification
3318 @param client_index - opaque cookie to identify the sender
3319 @param context - sender context, to match reply w/ request
3321 @param name - IKEv2 profile name
3322 @param is_local - Identification is local if non-zero, else remote
3323 @param id_type - Identification type
3324 @param data_len - Identification data length
3325 @param data - Identification data
3327 define ikev2_profile_set_id
3339 /** \brief Reply for IKEv2:
3340 @param context - returned sender context, to match reply w/ request
3341 @param retval - return code
3343 define ikev2_profile_set_id_reply
3349 /** \brief IKEv2: Set IKEv2 profile traffic selector parameters
3350 @param client_index - opaque cookie to identify the sender
3351 @param context - sender context, to match reply w/ request
3353 @param name - IKEv2 profile name
3354 @param is_local - Traffic selector is local if non-zero, else remote
3355 @param proto - Traffic selector IP protocol (if zero not relevant)
3356 @param start_port - The smallest port number allowed by traffic selector
3357 @param end_port - The largest port number allowed by traffic selector
3358 @param start_addr - The smallest address included in traffic selector
3359 @param end_addr - The largest address included in traffic selector
3361 define ikev2_profile_set_ts
3375 /** \brief Reply for IKEv2: Set IKEv2 profile traffic selector parameters
3376 @param context - returned sender context, to match reply w/ request
3377 @param retval - return code
3379 define ikev2_profile_set_ts_reply
3385 /** \brief IKEv2: Set IKEv2 local RSA private key
3386 @param client_index - opaque cookie to identify the sender
3387 @param context - sender context, to match reply w/ request
3389 @param key_file - Key file absolute path
3391 define ikev2_set_local_key
3399 /** \brief Reply for IKEv2: Set IKEv2 local key
3400 @param context - returned sender context, to match reply w/ request
3401 @param retval - return code
3403 define ikev2_set_local_key_reply
3409 /** \brief Tell client about a DHCP completion event
3410 @param client_index - opaque cookie to identify the sender
3411 @param pid - client pid registered to receive notification
3412 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
3413 @param host_address - Host IP address
3414 @param router_address - Router IP address
3415 @param host_mac - Host MAC address
3417 define dhcp_compl_event
3423 u8 host_address[16];
3424 u8 router_address[16];
3428 /** \brief cop: enable/disable junk filtration features on an interface
3429 @param client_index - opaque cookie to identify the sender
3430 @param context - sender context, to match reply w/ request
3431 @param sw_if_inded - desired interface
3432 @param enable_disable - 1 => enable, 0 => disable
3435 define cop_interface_enable_disable
3443 /** \brief cop: interface enable/disable junk filtration reply
3444 @param context - returned sender context, to match reply w/ request
3445 @param retval - return code
3448 define cop_interface_enable_disable_reply
3454 /** \brief cop: enable/disable whitelist filtration features on an interface
3455 Note: the supplied fib_id must match in order to remove the feature!
3457 @param client_index - opaque cookie to identify the sender
3458 @param context - sender context, to match reply w/ request
3459 @param sw_if_index - interface handle, physical interfaces only
3460 @param fib_id - fib identifier for the whitelist / blacklist fib
3461 @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration
3462 @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration
3463 @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it
3466 define cop_whitelist_enable_disable
3477 /** \brief cop: interface enable/disable junk filtration reply
3478 @param context - returned sender context, to match reply w/ request
3479 @param retval - return code
3482 define cop_whitelist_enable_disable_reply
3488 /** \brief get_node_graph - get a copy of the vpp node graph
3489 including the current set of graph arcs.
3491 @param client_index - opaque cookie to identify the sender
3492 @param context - sender context, to match reply w/ request
3495 define get_node_graph
3501 /** \brief get_node_graph_reply
3502 @param context - returned sender context, to match reply w/ request
3503 @param retval - return code
3504 @param reply_in_shmem - result from vlib_node_serialize, in shared
3505 memory. Process with vlib_node_unserialize, remember to switch
3506 heaps and free the result.
3509 define get_node_graph_reply
3516 /** \brief IOAM enable : Enable in-band OAM
3517 @param id - profile id
3518 @param seqno - To enable Seqno Processing
3519 @param analyse - Enabling analysis of iOAM at decap node
3520 @param pow_enable - Proof of Work enabled or not flag
3521 @param trace_enable - iOAM Trace enabled or not flag
3535 /** \brief iOAM Trace profile add / del response
3536 @param context - sender context, to match reply w/ request
3537 @param retval - return value for request
3539 define ioam_enable_reply
3545 /** \brief iOAM disable
3546 @param client_index - opaque cookie to identify the sender
3547 @param context - sender context, to match reply w/ request
3548 @param index - MAP Domain index
3557 /** \brief iOAM disable response
3558 @param context - sender context, to match reply w/ request
3559 @param retval - return value for request
3561 define ioam_disable_reply
3567 /** \brief Create host-interface
3568 @param client_index - opaque cookie to identify the sender
3569 @param context - sender context, to match reply w/ request
3570 @param host_if_name - interface name
3571 @param hw_addr - interface MAC
3572 @param use_random_hw_addr - use random generated MAC
3574 define af_packet_create
3579 u8 host_if_name[64];
3581 u8 use_random_hw_addr;
3584 /** \brief Create host-interface response
3585 @param context - sender context, to match reply w/ request
3586 @param retval - return value for request
3588 define af_packet_create_reply
3595 /** \brief Delete host-interface
3596 @param client_index - opaque cookie to identify the sender
3597 @param context - sender context, to match reply w/ request
3598 @param host_if_name - interface name
3600 define af_packet_delete
3605 u8 host_if_name[64];
3608 /** \brief Delete host-interface response
3609 @param context - sender context, to match reply w/ request
3610 @param retval - return value for request
3612 define af_packet_delete_reply
3618 /** \brief Add/del policer
3619 @param client_index - opaque cookie to identify the sender
3620 @param context - sender context, to match reply w/ request
3621 @param is_add - add policer if non-zero, else delete
3622 @param name - policer name
3625 @param cb - Committed Burst
3626 @param eb - Excess or Peak Burst
3627 @param rate_type - rate type
3628 @param round_type - rounding type
3629 @param type - policer algorithm
3630 @param color_aware - 0=color-blind, 1=color-aware
3631 @param conform_action_type - conform action type
3632 @param conform_dscp - DSCP for conform mar-and-transmit action
3633 @param exceed_action_type - exceed action type
3634 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3635 @param violate_action_type - violate action type
3636 @param violate_dscp - DSCP for violate mar-and-transmit action
3638 define policer_add_del
3653 u8 conform_action_type;
3655 u8 exceed_action_type;
3657 u8 violate_action_type;
3661 /** \brief Add/del policer response
3662 @param context - sender context, to match reply w/ request
3663 @param retval - return value for request
3664 @param policer_index - for add, returned index of the new policer
3666 define policer_add_del_reply
3673 /** \brief Get list of policers
3674 @param client_index - opaque cookie to identify the sender
3675 @param context - sender context, to match reply w/ request
3676 @param match_name_valid - if 0 request all policers otherwise use match_name
3677 @param match_name - policer name
3684 u8 match_name_valid;
3688 /** \brief Policer operational state response.
3689 @param context - sender context, to match reply w/ request
3690 @param name - policer name
3693 @param cb - Committed Burst
3694 @param eb - Excess or Peak Burst
3695 @param rate_type - rate type
3696 @param round_type - rounding type
3697 @param type - policer algorithm
3698 @param conform_action_type - conform action type
3699 @param conform_dscp - DSCP for conform mar-and-transmit action
3700 @param exceed_action_type - exceed action type
3701 @param exceed_dscp - DSCP for exceed mar-and-transmit action
3702 @param violate_action_type - violate action type
3703 @param violate_dscp - DSCP for violate mar-and-transmit action
3704 @param single_rate - 1 = single rate policer, 0 = two rate policer
3705 @param color_aware - for hierarchical policing
3706 @param scale - power-of-2 shift amount for lower rates
3707 @param cir_tokens_per_period - number of tokens for each period
3708 @param pir_tokens_per_period - number of tokens for each period for 2-rate policer
3709 @param current_limit - current limit
3710 @param current_bucket - current bucket
3711 @param extended_limit - extended limit
3712 @param extended_bucket - extended bucket
3713 @param last_update_time - last update time
3715 define policer_details
3727 u8 conform_action_type;
3729 u8 exceed_action_type;
3731 u8 violate_action_type;
3736 u32 cir_tokens_per_period;
3737 u32 pir_tokens_per_period;
3741 u32 extended_bucket;
3742 u64 last_update_time;
3745 /** \brief Set/unset policer classify interface
3746 @param client_index - opaque cookie to identify the sender
3747 @param context - sender context, to match reply w/ request
3748 @param sw_if_index - interface to set/unset policer classify
3749 @param ip4_table_index - ip4 classify table index (~0 for skip)
3750 @param ip6_table_index - ip6 classify table index (~0 for skip)
3751 @param l2_table_index - l2 classify table index (~0 for skip)
3752 @param is_add - Set if non-zero, else unset
3753 Note: User is recommeneded to use just one valid table_index per call.
3754 (ip4_table_index, ip6_table_index, or l2_table_index)
3756 define policer_classify_set_interface
3761 u32 ip4_table_index;
3762 u32 ip6_table_index;
3767 /** \brief Set/unset policer classify interface response
3768 @param context - sender context, to match reply w/ request
3769 @param retval - return value for request
3771 define policer_classify_set_interface_reply
3777 /** \brief Get list of policer classify interfaces and tables
3778 @param client_index - opaque cookie to identify the sender
3779 @param context - sender context, to match reply w/ request
3780 @param type - classify table type
3782 define policer_classify_dump
3789 /** \brief Policer iclassify operational state response.
3790 @param context - sender context, to match reply w/ request
3791 @param sw_if_index - software interface index
3792 @param table_index - classify table index
3794 define policer_classify_details
3801 /** \brief Create netmap
3802 @param client_index - opaque cookie to identify the sender
3803 @param context - sender context, to match reply w/ request
3804 @param netmap_if_name - interface name
3805 @param hw_addr - interface MAC
3806 @param use_random_hw_addr - use random generated MAC
3807 @param is_pipe - is pipe
3808 @param is_master - 0=slave, 1=master
3810 define netmap_create
3815 u8 netmap_if_name[64];
3817 u8 use_random_hw_addr;
3822 /** \brief Create netmap response
3823 @param context - sender context, to match reply w/ request
3824 @param retval - return value for request
3826 define netmap_create_reply
3832 /** \brief Delete netmap
3833 @param client_index - opaque cookie to identify the sender
3834 @param context - sender context, to match reply w/ request
3835 @param netmap_if_name - interface name
3837 define netmap_delete
3842 u8 netmap_if_name[64];
3845 /** \brief Delete netmap response
3846 @param context - sender context, to match reply w/ request
3847 @param retval - return value for request
3849 define netmap_delete_reply
3855 /** \brief Classify get table IDs request
3856 @param client_index - opaque cookie to identify the sender
3857 @param context - sender context, to match reply w/ request
3859 define classify_table_ids
3865 /** \brief Reply for classify get table IDs request
3866 @param context - sender context which was passed in the request
3867 @param count - number of ids returned in response
3868 @param ids - array of classify table ids
3870 define classify_table_ids_reply
3878 /** \brief Classify table ids by interface index request
3879 @param client_index - opaque cookie to identify the sender
3880 @param context - sender context, to match reply w/ request
3881 @param sw_if_index - index of the interface
3883 define classify_table_by_interface
3890 /** \brief Reply for classify table id by interface index request
3891 @param context - sender context which was passed in the request
3892 @param count - number of ids returned in response
3893 @param sw_if_index - index of the interface
3894 @param l2_table_id - l2 classify table index
3895 @param ip4_table_id - ip4 classify table index
3896 @param ip6_table_id - ip6 classify table index
3898 define classify_table_by_interface_reply
3908 /** \brief Classify table info
3909 @param client_index - opaque cookie to identify the sender
3910 @param context - sender context, to match reply w/ request
3911 @param table_id - classify table index
3913 define classify_table_info
3920 /** \brief Reply for classify table info request
3921 @param context - sender context which was passed in the request
3922 @param count - number of ids returned in response
3923 @param table_id - classify table index
3924 @param nbuckets - number of buckets when adding a table
3925 @param match_n_vectors - number of match vectors
3926 @param skip_n_vectors - number of skip_n_vectors
3927 @param active_sessions - number of sessions (active entries)
3928 @param next_table_index - index of next table
3929 @param miss_next_index - index of miss table
3930 @param mask[] - match mask
3932 define classify_table_info_reply
3938 u32 match_n_vectors;
3940 u32 active_sessions;
3941 u32 next_table_index;
3942 u32 miss_next_index;
3944 u8 mask[mask_length];
3947 /** \brief Classify sessions dump request
3948 @param client_index - opaque cookie to identify the sender
3949 @param context - sender context, to match reply w/ request
3950 @param table_id - classify table index
3952 define classify_session_dump
3959 /** \brief Reply for classify table session dump request
3960 @param context - sender context which was passed in the request
3961 @param count - number of ids returned in response
3962 @param table_id - classify table index
3963 @param hit_next_index - hit_next_index of session
3964 @param opaque_index - for add, opaque_index of session
3965 @param advance - advance value of session
3966 @param match[] - match value for session
3968 define classify_session_details
3977 u8 match[match_length];
3980 /** \brief Configure IPFIX exporter process request
3981 @param client_index - opaque cookie to identify the sender
3982 @param context - sender context, to match reply w/ request
3983 @param collector_address - address of IPFIX collector
3984 @param collector_port - port of IPFIX collector
3985 @param src_address - address of IPFIX exporter
3986 @param vrf_id - VRF / fib table ID
3987 @param path_mtu - Path MTU between exporter and collector
3988 @param template_interval - number of seconds after which to resend template
3989 @param udp_checksum - UDP checksum calculation enable flag
3991 define set_ipfix_exporter
3995 u8 collector_address[16];
4000 u32 template_interval;
4004 /** \brief Reply to IPFIX exporter configure request
4005 @param context - sender context which was passed in the request
4007 define set_ipfix_exporter_reply
4013 /** \brief IPFIX exporter dump request
4014 @param client_index - opaque cookie to identify the sender
4015 @param context - sender context, to match reply w/ request
4017 define ipfix_exporter_dump
4023 /** \brief Reply to IPFIX exporter dump request
4024 @param context - sender context which was passed in the request
4025 @param collector_address - address of IPFIX collector
4026 @param collector_port - port of IPFIX collector
4027 @param src_address - address of IPFIX exporter
4028 @param fib_index - fib table index
4029 @param path_mtu - Path MTU between exporter and collector
4030 @param template_interval - number of seconds after which to resend template
4031 @param udp_checksum - UDP checksum calculation enable flag
4033 define ipfix_exporter_details
4036 u8 collector_address[16];
4041 u32 template_interval;
4045 /** \brief IPFIX classify stream configure request
4046 @param client_index - opaque cookie to identify the sender
4047 @param context - sender context, to match reply w/ request
4048 @param domain_id - domain ID reported in IPFIX messages for classify stream
4049 @param src_port - source port of UDP session for classify stream
4051 define set_ipfix_classify_stream {
4058 /** \brief IPFIX classify stream configure response
4059 @param context - sender context, to match reply w/ request
4060 @param retval - return value for request
4062 define set_ipfix_classify_stream_reply {
4067 /** \brief IPFIX classify stream dump request
4068 @param client_index - opaque cookie to identify the sender
4069 @param context - sender context, to match reply w/ request
4071 define ipfix_classify_stream_dump {
4076 /** \brief Reply to IPFIX classify stream dump request
4077 @param context - sender context, to match reply w/ request
4078 @param domain_id - domain ID reported in IPFIX messages for classify stream
4079 @param src_port - source port of UDP session for classify stream
4081 define ipfix_classify_stream_details {
4087 /** \brief IPFIX add or delete classifier table request
4088 @param client_index - opaque cookie to identify the sender
4089 @param context - sender context, to match reply w/ request
4090 @param table_id - classifier table ID
4091 @param ip_version - version of IP used in the classifier table
4092 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
4094 define ipfix_classify_table_add_del {
4099 u8 transport_protocol;
4103 /** \brief IPFIX add classifier table response
4104 @param context - sender context which was passed in the request
4106 define ipfix_classify_table_add_del_reply {
4111 /** \brief IPFIX classify tables dump request
4112 @param client_index - opaque cookie to identify the sender
4113 @param context - sender context, to match reply w/ request
4115 define ipfix_classify_table_dump {
4120 /** \brief Reply to IPFIX classify tables dump request
4121 @param context - sender context, to match reply w/ request
4122 @param table_id - classifier table ID
4123 @param ip_version - version of IP used in the classifier table
4124 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
4126 define ipfix_classify_table_details {
4130 u8 transport_protocol;
4133 /** \brief Set/unset flow classify interface
4134 @param client_index - opaque cookie to identify the sender
4135 @param context - sender context, to match reply w/ request
4136 @param sw_if_index - interface to set/unset flow classify
4137 @param ip4_table_index - ip4 classify table index (~0 for skip)
4138 @param ip6_table_index - ip6 classify table index (~0 for skip)
4139 @param l2_table_index - l2 classify table index (~0 for skip)
4140 @param is_add - Set if non-zero, else unset
4141 Note: User is recommeneded to use just one valid table_index per call.
4142 (ip4_table_index, ip6_table_index, or l2_table_index)
4144 define flow_classify_set_interface {
4148 u32 ip4_table_index;
4149 u32 ip6_table_index;
4153 /** \brief Set/unset flow classify interface response
4154 @param context - sender context, to match reply w/ request
4155 @param retval - return value for request
4157 define flow_classify_set_interface_reply {
4162 /** \brief Get list of flow classify interfaces and tables
4163 @param client_index - opaque cookie to identify the sender
4164 @param context - sender context, to match reply w/ request
4165 @param type - classify table type
4167 define flow_classify_dump {
4173 /** \brief Flow classify operational state response.
4174 @param context - sender context, to match reply w/ request
4175 @param sw_if_index - software interface index
4176 @param table_index - classify table index
4178 define flow_classify_details {
4184 /** \brief Query relative index via node names
4185 @param client_index - opaque cookie to identify the sender
4186 @param context - sender context, to match reply w/ request
4187 @param node_name - name of node to find relative index from
4188 @param next_name - next node from node_name to find relative index of
4190 define get_next_index
4198 /** \brief Reply for get next node index
4199 @param context - sender context which was passed in the request
4200 @param retval - return value
4201 @param next_index - index of the next_node
4203 define get_next_index_reply
4210 /** \brief PacketGenerator create interface request
4211 @param client_index - opaque cookie to identify the sender
4212 @param context - sender context, to match reply w/ request
4213 @param interface_id - interface index
4215 define pg_create_interface
4222 /** \brief PacketGenerator create interface response
4223 @param context - sender context, to match reply w/ request
4224 @param retval - return value for request
4226 define pg_create_interface_reply
4233 /** \brief PacketGenerator capture packets on given interface request
4234 @param client_index - opaque cookie to identify the sender
4235 @param context - sender context, to match reply w/ request
4236 @param interface_id - pg interface index
4237 @param is_enabled - 1 if enabling streams, 0 if disabling
4238 @param count - number of packets to be captured
4239 @param pcap_file - pacp file name to store captured packets
4248 u32 pcap_name_length;
4249 u8 pcap_file_name[pcap_name_length];
4252 /** \brief PacketGenerator capture packets response
4253 @param context - sender context, to match reply w/ request
4254 @param retval - return value for request
4256 define pg_capture_reply
4262 /** \brief Enable / disable packet generator request
4263 @param client_index - opaque cookie to identify the sender
4264 @param context - sender context, to match reply w/ request
4265 @param is_enabled - 1 if enabling streams, 0 if disabling
4266 @param stream - stream name to be enable/disabled, if not specified handle all streams
4268 define pg_enable_disable
4273 u32 stream_name_length;
4274 u8 stream_name[stream_name_length];
4277 /** \brief Reply for enable / disable packet generator
4278 @param context - returned sender context, to match reply w/ request
4279 @param retval - return code
4281 define pg_enable_disable_reply
4287 /** \brief Configure IP source and L4 port-range check
4288 @param client_index - opaque cookie to identify the sender
4289 @param context - sender context, to match reply w/ request
4290 @param is_ip6 - 1 if source address type is IPv6
4291 @param is_add - 1 if add, 0 if delete
4292 @param mask_length - mask length for address entry
4293 @param address - array of address bytes
4294 @param number_of_ranges - length of low_port and high_port arrays (must match)
4295 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
4296 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
4297 @param vrf_id - fib table/vrf id to associate the source and port-range check with
4298 @note To specify a single port set low_port and high_port entry the same
4300 define ip_source_and_port_range_check_add_del
4308 u8 number_of_ranges;
4314 /** \brief Configure IP source and L4 port-range check reply
4315 @param context - returned sender context, to match reply w/ request
4316 @param retval - return code
4318 define ip_source_and_port_range_check_add_del_reply
4324 /** \brief Set interface source and L4 port-range request
4325 @param client_index - opaque cookie to identify the sender
4326 @param context - sender context, to match reply w/ request
4327 @param interface_id - interface index
4328 @param tcp_vrf_id - VRF associated with source and TCP port-range check
4329 @param udp_vrf_id - VRF associated with source and TCP port-range check
4331 define ip_source_and_port_range_check_interface_add_del
4343 /** \brief Set interface source and L4 port-range response
4344 @param context - sender context, to match reply w/ request
4345 @param retval - return value for request
4347 define ip_source_and_port_range_check_interface_add_del_reply
4353 /** \brief Add / del ipsec gre tunnel request
4354 @param client_index - opaque cookie to identify the sender
4355 @param context - sender context, to match reply w/ request
4356 @param local_sa_id - local SA id
4357 @param remote_sa_id - remote SA id
4358 @param is_add - 1 if adding the tunnel, 0 if deleting
4359 @param src_address - tunnel source address
4360 @param dst_address - tunnel destination address
4362 define ipsec_gre_add_del_tunnel {
4372 /** \brief Reply for add / del ipsec gre tunnel request
4373 @param context - returned sender context, to match reply w/ request
4374 @param retval - return code
4375 @param sw_if_index - software index of the new ipsec gre tunnel
4377 define ipsec_gre_add_del_tunnel_reply {
4383 /** \brief Dump ipsec gre tunnel table
4384 @param client_index - opaque cookie to identify the sender
4385 @param context - sender context, to match reply w/ request
4386 @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
4388 define ipsec_gre_tunnel_dump {
4394 /** \brief mpls gre tunnel operational state response
4395 @param context - returned sender context, to match reply w/ request
4396 @param sw_if_index - software index of the ipsec gre tunnel
4397 @param local_sa_id - local SA id
4398 @param remote_sa_id - remote SA id
4399 @param src_address - tunnel source address
4400 @param dst_address - tunnel destination address
4402 define ipsec_gre_tunnel_details {
4411 /** \brief Delete sub interface request
4412 @param client_index - opaque cookie to identify the sender
4413 @param context - sender context, to match reply w/ request
4414 @param sw_if_index - sw index of the interface that was created by create_subif
4416 define delete_subif {
4422 /** \brief Delete sub interface response
4423 @param context - sender context, to match reply w/ request
4424 @param retval - return code for the request
4426 define delete_subif_reply {
4431 /** \brief DPDK interface HQoS pipe profile set request
4432 @param client_index - opaque cookie to identify the sender
4433 @param context - sender context, to match reply w/ request
4434 @param sw_if_index - the interface
4435 @param subport - subport ID
4436 @param pipe - pipe ID within its subport
4437 @param profile - pipe profile ID
4439 define sw_interface_set_dpdk_hqos_pipe {
4448 /** \brief DPDK interface HQoS pipe profile set reply
4449 @param context - sender context, to match reply w/ request
4450 @param retval - request return code
4452 define sw_interface_set_dpdk_hqos_pipe_reply {
4457 /** \brief DPDK interface HQoS subport parameters set request
4458 @param client_index - opaque cookie to identify the sender
4459 @param context - sender context, to match reply w/ request
4460 @param sw_if_index - the interface
4461 @param subport - subport ID
4462 @param tb_rate - subport token bucket rate (measured in bytes/second)
4463 @param tb_size - subport token bucket size (measured in credits)
4464 @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second)
4465 @param tc_period - enforcement period for rates (measured in milliseconds)
4467 define sw_interface_set_dpdk_hqos_subport {
4478 /** \brief DPDK interface HQoS subport parameters set reply
4479 @param context - sender context, to match reply w/ request
4480 @param retval - request return code
4482 define sw_interface_set_dpdk_hqos_subport_reply {
4487 /** \brief DPDK interface HQoS tctbl entry set request
4488 @param client_index - opaque cookie to identify the sender
4489 @param context - sender context, to match reply w/ request
4490 @param sw_if_index - the interface
4491 @param entry - entry index ID
4492 @param tc - traffic class (0 .. 3)
4493 @param queue - traffic class queue (0 .. 3)
4495 define sw_interface_set_dpdk_hqos_tctbl {
4504 /** \brief DPDK interface HQoS tctbl entry set reply
4505 @param context - sender context, to match reply w/ request
4506 @param retval - request return code
4508 define sw_interface_set_dpdk_hqos_tctbl_reply {
4513 /** \brief L2 interface pbb tag rewrite configure request
4514 @param client_index - opaque cookie to identify the sender
4515 @param context - sender context, to match reply w/ request
4516 @param sw_if_index - interface the operation is applied to
4517 @param vtr_op - Choose from l2_vtr_op_t enum values
4518 @param inner_tag - needed for translate_qinq vtr op only
4519 @param outer_tag - needed for translate_qinq vtr op only
4520 @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op
4521 @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op
4522 @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op
4523 @param i_sid - I-tag service id, needed for any push or translate qinq vtr op
4525 define l2_interface_pbb_tag_rewrite
4538 /** \brief L2 interface pbb tag rewrite response
4539 @param context - sender context, to match reply w/ request
4540 @param retval - return code for the request
4542 define l2_interface_pbb_tag_rewrite_reply
4548 /** \brief Punt traffic to the host
4549 @param client_index - opaque cookie to identify the sender
4550 @param context - sender context, to match reply w/ request
4551 @param is_add - add punt if non-zero, else delete
4552 @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All
4553 @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported
4554 @param l4_port - TCP/UDP port to be punted
4565 /** \brief Reply to the punt request
4566 @param context - sender context which was passed in the request
4567 @param retval - return code of punt request
4575 /** \brief Dump ipsec policy database data
4576 @param client_index - opaque cookie to identify the sender
4577 @param context - sender context, to match reply w/ request
4578 @param spd_id - SPD instance id
4579 @param sa_id - SA id, optional, set to ~0 to see all policies in SPD
4581 define ipsec_spd_dump {
4588 /** \brief IPsec policy database response
4589 @param context - sender context which was passed in the request
4590 @param spd_id - SPD instance id
4591 @param priority - numeric value to control policy evaluation order
4592 @param is_outbound - [1|0] to indicate if direction is [out|in]bound
4593 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
4594 @param local_start_addr - first address in local traffic selector range
4595 @param local_stop_addr - last address in local traffic selector range
4596 @param local_start_port - first port in local traffic selector range
4597 @param local_stop_port - last port in local traffic selector range
4598 @param remote_start_addr - first address in remote traffic selector range
4599 @param remote_stop_addr - last address in remote traffic selector range
4600 @param remote_start_port - first port in remote traffic selector range
4601 @param remote_stop_port - last port in remote traffic selector range
4602 @param protocol - traffic selector protocol
4603 @param policy - policy action
4604 @param sa_id - SA id
4605 @param bytes - byte count of packets matching this policy
4606 @param packets - count of packets matching this policy
4609 define ipsec_spd_details {
4615 u8 local_start_addr[16];
4616 u8 local_stop_addr[16];
4617 u16 local_start_port;
4618 u16 local_stop_port;
4619 u8 remote_start_addr[16];
4620 u8 remote_stop_addr[16];
4621 u16 remote_start_port;
4622 u16 remote_stop_port;
4630 /** \brief Feature path enable/disable request
4631 @param client_index - opaque cookie to identify the sender
4632 @param context - sender context, to match reply w/ request
4633 @param sw_if_index - the interface
4634 @param enable - 1 = on, 0 = off
4636 define feature_enable_disable {
4642 u8 feature_name[64];
4645 /** \brief Reply to the eature path enable/disable request
4646 @param context - sender context which was passed in the request
4647 @param retval - return code for the request
4649 define feature_enable_disable_reply
4657 * eval: (c-set-style "gnu")