1 /* Hey Emacs use -*- mode: C -*- */
3 * Copyright (c) 2015-2016 Cisco and/or its affiliates.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 This file defines vpe control-plane API messages which are generally
20 called through a shared memory interface.
24 /** \brief Register for interface events
25 @param client_index - opaque cookie to identify the sender
26 @param context - sender context, to match reply w/ request
27 @param enable_disable - 1 => register for events, 0 => cancel registration
28 @param pid - sender's pid
30 define want_interface_events
38 /** \brief Reply for interface events registration
39 @param context - returned sender context, to match reply w/ request
40 @param retval - return code
42 define want_interface_events_reply
48 /** \brief Interface details structure (fix this)
49 @param sw_if_index - index of the interface
50 @param sup_sw_if_index - index of parent interface if any, else same as sw_if_index
51 @param l2_address_length - length of the interface's l2 address
52 @param pid - the interface's l2 address
53 @param interface_name - name of the interface
54 @param link_duplex - 1 if half duplex, 2 if full duplex
55 @param link_speed - 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G
56 @param link_MTU - max. transmittion unit
57 @param sub_if_id - A number 0-N to uniquely identify this subif on super if
58 @param sub_dot1ad - 0 = dot1q, 1=dot1ad
59 @param sub_number_of_tags - Number of tags (0 - 2)
60 @param sub_outer_vlan_id
61 @param sub_inner_vlan_id
62 @param sub_exact_match
64 @param sub_outer_vlan_id_any
65 @param sub_inner_vlan_id_any
66 @param vtr_op - vlan tag rewrite operation
71 define sw_interface_details
76 /* index of sup interface (e.g. hw interface).
77 equal to sw_if_index for super hw interface. */
80 /* Layer 2 address, if applicable */
81 u32 l2_address_length;
85 u8 interface_name[64];
87 /* 1 = up, 0 = down */
91 /* 1 = half duplex, 2 = full duplex */
94 /* 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G */
100 /* Subinterface ID. A number 0-N to uniquely identify this subinterface under the super interface */
103 /* 0 = dot1q, 1=dot1ad */
106 /* Number of tags 0-2 */
107 u8 sub_number_of_tags;
108 u16 sub_outer_vlan_id;
109 u16 sub_inner_vlan_id;
112 u8 sub_outer_vlan_id_any;
113 u8 sub_inner_vlan_id_any;
115 /* vlan tag rewrite state */
117 u32 vtr_push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
118 u32 vtr_tag1; // first pushed tag
119 u32 vtr_tag2; // second pushed tag
124 define sw_interface_dump
128 u8 name_filter_valid;
132 /** \brief Set or delete one or all ip addresses on a specified interface
133 @param client_index - opaque cookie to identify the sender
134 @param context - sender context, to match reply w/ request
135 @param sw_if_index - index of the interface to add/del addresses
136 @param is_add - add address if non-zero, else delete
137 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
138 @param del_all - if non-zero delete all addresses on the interface
139 @param address_length - address length in bytes, 4 for ip4, 16 for ip6
140 @param address - array of address bytes
142 define sw_interface_add_del_address
154 /** \brief Reply for interface events registration
155 @param context - returned sender context, to match reply w/ request
156 @param retval - return code
158 define sw_interface_add_del_address_reply
164 /** \brief Associate the specified interface with a fib table
165 @param client_index - opaque cookie to identify the sender
166 @param context - sender context, to match reply w/ request
167 @param sw_if_index - index of the interface
168 @param is_ipv6 - if non-zero ipv6, else ipv4
169 @param vrf_id - fib table/vrd id to associate the interface with
171 define sw_interface_set_table
180 /** \brief Reply for interface events registration
181 @param context - returned sender context, to match reply w/ request
182 @param retval - return code
184 define sw_interface_set_table_reply
190 /** \brief Enable or Disable MPLS on and interface
191 @param client_index - opaque cookie to identify the sender
192 @param context - sender context, to match reply w/ request
193 @param sw_if_index - index of the interface
194 @param enable - if non-zero enable, else disable
196 define sw_interface_set_mpls_enable
204 /** \brief Reply for MPLS state on an interface
205 @param context - returned sender context, to match reply w/ request
206 @param retval - return code
208 define sw_interface_set_mpls_enable_reply
214 /** \brief Initialize a new tap interface with the given paramters
215 @param client_index - opaque cookie to identify the sender
216 @param context - sender context, to match reply w/ request
217 @param use_random_mac - let the system generate a unique mac address
218 @param tap_name - name to associate with the new interface
219 @param mac_address - mac addr to assign to the interface if use_radom not set
229 u32 custom_dev_instance;
233 /** \brief Reply for tap connect request
234 @param context - returned sender context, to match reply w/ request
235 @param retval - return code
236 @param sw_if_index - software index allocated for the new tap interface
238 define tap_connect_reply
245 /** \brief Modify a tap interface with the given paramters
246 @param client_index - opaque cookie to identify the sender
247 @param context - sender context, to match reply w/ request
248 @param sw_if_index - interface index of existing tap interface
249 @param use_random_mac - let the system generate a unique mac address
250 @param tap_name - name to associate with the new interface
251 @param mac_address - mac addr to assign to the interface if use_radom not set
262 u32 custom_dev_instance;
265 /** \brief Reply for tap modify request
266 @param context - returned sender context, to match reply w/ request
267 @param retval - return code
268 @param sw_if_index - software index if the modified tap interface
270 define tap_modify_reply
277 /** \brief Delete tap interface
278 @param client_index - opaque cookie to identify the sender
279 @param context - sender context, to match reply w/ request
280 @param sw_if_index - interface index of existing tap interface
289 /** \brief Reply for tap delete request
290 @param context - returned sender context, to match reply w/ request
291 @param retval - return code
293 define tap_delete_reply
299 /** \brief Dump tap interfaces request */
300 define sw_interface_tap_dump
306 /** \brief Reply for tap dump request
307 @param sw_if_index - software index of tap interface
308 @param dev_name - Linux tap device name
310 define sw_interface_tap_details
317 /** \brief Create a new subinterface with the given vlan id
318 @param client_index - opaque cookie to identify the sender
319 @param context - sender context, to match reply w/ request
320 @param sw_if_index - software index of the new vlan's parent interface
321 @param vlan_id - vlan tag of the new interface
323 define create_vlan_subif
331 /** \brief Reply for the vlan subinterface create request
332 @param context - returned sender context, to match reply w/ request
333 @param retval - return code
334 @param sw_if_index - software index allocated for the new subinterface
336 define create_vlan_subif_reply
343 /** \brief MPLS Route Add / del route
344 @param client_index - opaque cookie to identify the sender
345 @param context - sender context, to match reply w/ request
346 @param mr_label - The MPLS label value
347 @param mr_eos - The End of stack bit
348 @param mr_table_id - The MPLS table-id the route is added in
349 @param mr_classify_table_index - If this is a classify route,
350 this is the classify table index
351 @param mr_create_table_if_needed - If the MPLS or IP tables do not exist,
353 @param mr_is_add - Is this a route add or delete
354 @param mr_is_classify - Is this route result a classify
355 @param mr_is_multipath - Is this route update a multipath - i.e. is this
356 a path addition to an existing route
357 @param mr_is_resolve_host - Recurse resolution constraint via a host prefix
358 @param mr_is_resolve_attached - Recurse resolution constraint via attached prefix
359 @param mr_next_hop_proto_is_ip4 - The next-hop is IPV4
360 @param mr_next_hop_weight - The weight, for UCMP
361 @param mr_next_hop[16] - the nextop address
362 @param mr_next_hop_sw_if_index - the next-hop SW interface
363 @param mr_next_hop_table_id - the next-hop table-id (if appropriate)
364 @param mr_next_hop_out_label - the next-hop output label
366 define mpls_route_add_del
373 u32 mr_classify_table_index;
374 u8 mr_create_table_if_needed;
378 u8 mr_is_resolve_host;
379 u8 mr_is_resolve_attached;
380 u8 mr_next_hop_proto_is_ip4;
381 u8 mr_next_hop_weight;
383 u32 mr_next_hop_sw_if_index;
384 u32 mr_next_hop_table_id;
385 u32 mr_next_hop_out_label;
388 /** \brief Reply for MPLS route add / del request
389 @param context - returned sender context, to match reply w/ request
390 @param retval - return code
392 define mpls_route_add_del_reply
398 /** \brief Dump MPLS fib table
399 @param client_index - opaque cookie to identify the sender
408 @param sw_if_index - index of the interface
409 @param weight - The weight, for UCMP
410 @param is_local - local if non-zero, else remote
411 @param is_drop - Drop the packet
412 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
413 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
414 @param afi - the afi of the next hop, IP46_TYPE_IP4=1, IP46_TYPE_IP6=2
415 @param next_hop[16] - the next hop address
417 typeonly manual_print manual_endian define fib_path
429 /** \brief mpls FIB table response
430 @param table_id - MPLS fib table id
431 @param s_bit - End-of-stack bit
432 @param label - MPLS label value
433 @param count - the number of fib_path in path
434 @param path - array of of fib_path structures
436 manual_endian manual_print define mpls_fib_details
443 vl_api_fib_path_t path[count];
446 /** \brief Dump IP6 fib table
447 @param client_index - opaque cookie to identify the sender
455 /** \brief IP6 FIB table response
456 @param table_id - IP6 fib table id
457 @address_length - mask length
458 @address - ip6 prefix
459 @param count - the number of fib_path in path
460 @param path - array of of fib_path structures
462 manual_endian manual_print define ip6_fib_details
469 vl_api_fib_path_t path[count];
472 /** \brief Dump IP fib table
473 @param client_index - opaque cookie to identify the sender
481 /** \brief IP FIB table response
482 @param table_id - IP fib table id
483 @address_length - mask length
484 @address - ip4 prefix
485 @param count - the number of fib_path in path
486 @param path - array of of fib_path structures
488 manual_endian manual_print define ip_fib_details
495 vl_api_fib_path_t path[count];
498 /** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create
499 a per-prefix label entry.
500 @param client_index - opaque cookie to identify the sender
501 @param context - sender context, to match reply w/ request
502 @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in
503 @param mb_label - The MPLS label value to bind
504 @param mb_ip_table_id - The IP table-id of the IP prefix to bind to.
505 @param mb_create_table_if_needed - Create either/both tables if required.
506 @param mb_is_bind - Bind or unbind
507 @param mb_is_ip4 - The prefix to bind to is IPv4
508 @param mb_address_length - Length of IP prefix
509 @param mb_address[16] - IP prefix/
511 define mpls_ip_bind_unbind
515 u32 mb_mpls_table_id;
518 u8 mb_create_table_if_needed;
521 u8 mb_address_length;
525 /** \brief Reply for MPLS IP bind/unbind request
526 @param context - returned sender context, to match reply w/ request
527 @param retval - return code
529 define mpls_ip_bind_unbind_reply
535 /** \brief Add / del route request
536 @param client_index - opaque cookie to identify the sender
537 @param context - sender context, to match reply w/ request
538 @param sw_if_index - software index of the new vlan's parent interface
539 @param vrf_id - fib table /vrf associated with the route
540 @param lookup_in_vrf -
541 @param resolve_attempts -
542 @param classify_table_index -
543 @param create_vrf_if_needed -
544 @param resolve_if_needed -
545 @param is_add - 1 if adding the route, 0 if deleting
546 @param is_drop - Drop the packet
547 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
548 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
549 @param is_ipv6 - 0 if an ip4 route, else ip6
552 @param is_multipath - Set to 1 if this is a multipath route, else 0
553 @param not_last - Is last or not last msg in group of multiple add/del msgs
554 @param next_hop_weight -
555 @param dst_address_length -
556 @param dst_address[16] -
557 @param next_hop_address[16] -
559 define ip_add_del_route
563 u32 next_hop_sw_if_index;
565 u32 resolve_attempts;
566 u32 classify_table_index;
567 u32 next_hop_out_label;
568 u32 next_hop_table_id;
569 u8 create_vrf_if_needed;
570 u8 resolve_if_needed;
580 u8 is_resolve_attached;
581 /* Is last/not-last message in group of multiple add/del messages. */
584 u8 dst_address_length;
586 u8 next_hop_address[16];
589 /** \brief Reply for add / del route request
590 @param context - returned sender context, to match reply w/ request
591 @param retval - return code
593 define ip_add_del_route_reply
599 /** \brief Add / del MPLS encapsulation request
600 @param client_index - opaque cookie to identify the sender
601 @param context - sender context, to match reply w/ request
602 @param vrf_id - vrf id
603 @param dst_address[4] -
604 @param is_add - 1 if adding the encap, 0 if deleting
605 @param nlabels - number of labels
606 @param labels - array of labels
608 define mpls_add_del_encap
614 /* 1 = add, 0 = delete */
620 /** \brief Reply for add / del encapsulation request
621 @param context - returned sender context, to match reply w/ request
622 @param retval - return code
624 define mpls_add_del_encap_reply
630 /** \brief Proxy ARP add / del request
631 @param client_index - opaque cookie to identify the sender
632 @param context - sender context, to match reply w/ request
633 @param vrf_id - VRF / Fib table ID
634 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
635 @param low_address[4] - Low address of the Proxy ARP range
636 @param hi_address[4] - High address of the Proxy ARP range
638 define proxy_arp_add_del
648 /** \brief Reply for proxy arp add / del request
649 @param context - returned sender context, to match reply w/ request
650 @param retval - return code
652 define proxy_arp_add_del_reply
658 /** \brief Proxy ARP add / del request
659 @param client_index - opaque cookie to identify the sender
660 @param context - sender context, to match reply w/ request
661 @param sw_if_index - Which interface to enable / disable Proxy Arp on
662 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
664 define proxy_arp_intfc_enable_disable
669 /* 1 = on, 0 = off */
673 /** \brief Reply for Proxy ARP interface enable / disable request
674 @param context - returned sender context, to match reply w/ request
675 @param retval - return code
677 define proxy_arp_intfc_enable_disable_reply
683 /** \brief IP neighbor add / del request
684 @param client_index - opaque cookie to identify the sender
685 @param context - sender context, to match reply w/ request
686 @param vrf_id - vrf_id, only for IP4
687 @param sw_if_index - interface used to reach neighbor
688 @param is_add - 1 to add neighbor, 0 to delete
689 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
691 @param mac_address - l2 address of the neighbor
692 @param dst_address - ip4 or ip6 address of the neighbor
694 define ip_neighbor_add_del
698 u32 vrf_id; /* only makes sense for ip4 */
700 /* 1 = add, 0 = delete */
708 /** \brief Reply for IP Neighbor add / delete request
709 @param context - returned sender context, to match reply w/ request
710 @param retval - return code
712 define ip_neighbor_add_del_reply
718 /** \brief Reset VRF (remove all routes etc) request
719 @param client_index - opaque cookie to identify the sender
720 @param context - sender context, to match reply w/ request
721 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
722 @param vrf_id - ID of th FIB table / VRF to reset
732 /** \brief Reply for Reset VRF request
733 @param context - returned sender context, to match reply w/ request
734 @param retval - return code
736 define reset_vrf_reply
742 /** \brief Is Address Reachable request - DISABLED
743 @param client_index - opaque cookie to identify the sender
744 @param context - sender context, to match reply w/ request
745 @param next_hop_sw_if_index - index of interface used to get to next hop
746 @param is_ipv6 - 1 for IPv6, 0 for IPv4
747 @param is_error - address not found or does not match intf
748 @param address[] - Address in question
750 define is_address_reachable
752 u32 client_index; /* (api_main_t *) am->my_client_index */
754 u32 next_hop_sw_if_index;
755 u8 is_known; /* on reply, this is the answer */
757 u8 is_error; /* address not found or does not match intf */
761 /** \brief Want Stats, register for stats updates
762 @param client_index - opaque cookie to identify the sender
763 @param context - sender context, to match reply w/ request
764 @param enable_disable - 1 = enable stats, 0 = disable
765 @param pid - pid of process requesting stats updates
775 /** \brief Reply for Want Stats request
776 @param context - returned sender context, to match reply w/ request
777 @param retval - return code
779 define want_stats_reply
785 /** \brief Want stats counters structure
786 @param vnet_counter_type- such as ip4, ip6, punts, etc
787 @param is_combined - rx & tx total (all types) counts
788 @param first_sw_if_index - first sw index in block of index, counts
789 @param count - number of interfaces this stats block includes counters for
790 @param data - contiguous block of vlib_counter_t structures
792 define vnet_interface_counters
794 /* enums - plural - in vnet/interface.h */
795 u8 vnet_counter_type;
797 u32 first_sw_if_index;
802 typeonly manual_print manual_endian define ip4_fib_counter
810 manual_print manual_endian define vnet_ip4_fib_counters
814 vl_api_ip4_fib_counter_t c[count];
817 typeonly manual_print manual_endian define ip6_fib_counter
825 manual_print manual_endian define vnet_ip6_fib_counters
829 vl_api_ip6_fib_counter_t c[count];
832 /** \brief Request for a single block of summary stats
833 @param client_index - opaque cookie to identify the sender
834 @param context - sender context, to match reply w/ request
836 define vnet_get_summary_stats
842 /** \brief Reply for vnet_get_summary_stats request
843 @param context - sender context, to match reply w/ request
844 @param retval - return code for request
849 define vnet_summary_stats_reply
858 /** \brief OAM event structure
859 @param dst_address[] -
868 /** \brief Want OAM events request
869 @param client_index - opaque cookie to identify the sender
870 @param context - sender context, to match reply w/ request
871 @param enable_disable- enable if non-zero, else disable
872 @param pid - pid of the requesting process
874 define want_oam_events
882 /** \brief Want OAM events response
883 @param context - sender context, to match reply w/ request
884 @param retval - return code for the want oam stats request
886 define want_oam_events_reply
892 /** \brief OAM add / del target request
893 @param client_index - opaque cookie to identify the sender
894 @param context - sender context, to match reply w/ request
895 @param vrf_id - vrf_id of the target
896 @param src_address[] - source address to use for the updates
897 @param dst_address[] - destination address of the target
898 @param is_add - add target if non-zero, else delete
910 /** \brief OAM add / del target response
911 @param context - sender context, to match reply w/ request
912 @param retval - return code of the request
914 define oam_add_del_reply
920 /** \brief Reset fib table request
921 @param client_index - opaque cookie to identify the sender
922 @param context - sender context, to match reply w/ request
923 @param vrf_id - vrf/table id of the fib table to reset
924 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
934 /** \brief Reset fib response
935 @param context - sender context, to match reply w/ request
936 @param retval - return code for the reset bfib request
938 define reset_fib_reply
944 /** \brief DHCP Proxy config add / del request
945 @param client_index - opaque cookie to identify the sender
946 @param context - sender context, to match reply w/ request
947 @param vrf_id - vrf id
948 @param if_ipv6 - ipv6 if non-zero, else ipv4
949 @param is_add - add the config if non-zero, else delete
950 @param insert_circuit_id - option82 suboption 1 fib number
951 @param dhcp_server[] - server address
952 @param dhcp_src_address[] - <fix this, need details>
954 define dhcp_proxy_config
961 u8 insert_circuit_id;
963 u8 dhcp_src_address[16];
966 /** \brief DHCP Proxy config response
967 @param context - sender context, to match reply w/ request
968 @param retval - return code for the request
970 define dhcp_proxy_config_reply
976 /** \brief DHCP Proxy set / unset vss request
977 @param client_index - opaque cookie to identify the sender
978 @param context - sender context, to match reply w/ request
979 @param tbl_id - table id
980 @param oui - first part of vpn id
981 @param fib_id - second part of vpn id
982 @param is_ipv6 - ip6 if non-zero, else ip4
983 @param is_add - set vss if non-zero, else delete
985 define dhcp_proxy_set_vss
996 /** \brief DHCP proxy set / unset vss response
997 @param context - sender context, to match reply w/ request
998 @param retval - return code for the request
1000 define dhcp_proxy_set_vss_reply
1006 /** \brief Set the ip flow hash config for a fib request
1007 @param client_index - opaque cookie to identify the sender
1008 @param context - sender context, to match reply w/ request
1009 @param vrf_id - vrf/fib id
1010 @param is_ipv6 - if non-zero the fib is ip6, else ip4
1011 @param src - if non-zero include src in flow hash
1012 @param dst - if non-zero include dst in flow hash
1013 @param sport - if non-zero include sport in flow hash
1014 @param dport - if non-zero include dport in flow hash
1015 @param proto -if non-zero include proto in flow hash
1016 @param reverse - if non-zero include reverse in flow hash
1018 define set_ip_flow_hash
1032 /** \brief Set the ip flow hash config for a fib response
1033 @param context - sender context, to match reply w/ request
1034 @param retval - return code for the request
1036 define set_ip_flow_hash_reply
1042 /** \brief IPv6 router advertisement config request
1043 @param client_index - opaque cookie to identify the sender
1044 @param context - sender context, to match reply w/ request
1049 @param send_unicast -
1052 @param default_router -
1053 @param max_interval -
1054 @param min_interval -
1056 @param initial_count -
1057 @param initial_interval -
1059 define sw_interface_ip6nd_ra_config
1076 u32 initial_interval;
1079 /** \brief IPv6 router advertisement config response
1080 @param context - sender context, to match reply w/ request
1081 @param retval - return code for the request
1083 define sw_interface_ip6nd_ra_config_reply
1089 /** \brief IPv6 router advertisement prefix config request
1090 @param client_index - opaque cookie to identify the sender
1091 @param context - sender context, to match reply w/ request
1092 @param sw_if_index -
1094 @param address_length -
1095 @param use_default -
1096 @param no_advertise -
1098 @param no_autoconfig -
1101 @param val_lifetime -
1102 @param pref_lifetime -
1104 define sw_interface_ip6nd_ra_prefix
1121 /** \brief IPv6 router advertisement prefix config response
1122 @param context - sender context, to match reply w/ request
1123 @param retval - return code for the request
1125 define sw_interface_ip6nd_ra_prefix_reply
1131 /** \brief IPv6 interface enable / disable request
1132 @param client_index - opaque cookie to identify the sender
1133 @param context - sender context, to match reply w/ request
1134 @param sw_if_index - interface used to reach neighbor
1135 @param enable - if non-zero enable ip6 on interface, else disable
1137 define sw_interface_ip6_enable_disable
1142 u8 enable; /* set to true if enable */
1145 /** \brief IPv6 interface enable / disable response
1146 @param context - sender context, to match reply w/ request
1147 @param retval - return code for the request
1149 define sw_interface_ip6_enable_disable_reply
1155 /** \brief IPv6 set link local address on interface request
1156 @param client_index - opaque cookie to identify the sender
1157 @param context - sender context, to match reply w/ request
1158 @param sw_if_index - interface to set link local on
1159 @param address[] - the new link local address
1160 @param address_length - link local address length
1162 define sw_interface_ip6_set_link_local_address
1171 /** \brief IPv6 set link local address on interface response
1172 @param context - sender context, to match reply w/ request
1173 @param retval - error code for the request
1175 define sw_interface_ip6_set_link_local_address_reply
1181 /** \brief Set unnumbered interface add / del request
1182 @param client_index - opaque cookie to identify the sender
1183 @param context - sender context, to match reply w/ request
1184 @param sw_if_index - interface with an IP address
1185 @param unnumbered_sw_if_index - interface which will use the address
1186 @param is_add - if non-zero set the association, else unset it
1188 define sw_interface_set_unnumbered
1192 u32 sw_if_index; /* use this intfc address */
1193 u32 unnumbered_sw_if_index; /* on this interface */
1197 /** \brief Set unnumbered interface add / del response
1198 @param context - sender context, to match reply w/ request
1199 @param retval - return code for the request
1201 define sw_interface_set_unnumbered_reply
1207 /** \brief Create loopback interface request
1208 @param client_index - opaque cookie to identify the sender
1209 @param context - sender context, to match reply w/ request
1210 @param mac_address - mac addr to assign to the interface if none-zero
1212 define create_loopback
1219 /** \brief Create loopback interface response
1220 @param context - sender context, to match reply w/ request
1221 @param sw_if_index - sw index of the interface that was created
1222 @param retval - return code for the request
1224 define create_loopback_reply
1231 /** \brief Delete loopback interface request
1232 @param client_index - opaque cookie to identify the sender
1233 @param context - sender context, to match reply w/ request
1234 @param sw_if_index - sw index of the interface that was created
1236 define delete_loopback
1243 /** \brief Delete loopback interface response
1244 @param context - sender context, to match reply w/ request
1245 @param retval - return code for the request
1247 define delete_loopback_reply
1253 /** \brief Control ping from client to api server request
1254 @param client_index - opaque cookie to identify the sender
1255 @param context - sender context, to match reply w/ request
1263 /** \brief Control ping from the client to the server response
1264 @param client_index - opaque cookie to identify the sender
1265 @param context - sender context, to match reply w/ request
1266 @param retval - return code for the request
1267 @param vpe_pid - the pid of the vpe, returned by the server
1269 define control_ping_reply
1277 /** \brief Process a vpe parser cli string request
1278 @param client_index - opaque cookie to identify the sender
1279 @param context - sender context, to match reply w/ request
1280 @param cmd_in_shmem - pointer to cli command string
1296 /** \brief vpe parser cli string response
1297 @param context - sender context, to match reply w/ request
1298 @param retval - return code for request
1299 @param reply_in_shmem - Reply string from cli processing if any
1307 define cli_inband_reply
1315 /** \brief Set max allowed ARP or ip6 neighbor entries request
1316 @param client_index - opaque cookie to identify the sender
1317 @param context - sender context, to match reply w/ request
1318 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
1319 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
1321 define set_arp_neighbor_limit
1326 u32 arp_neighbor_limit;
1329 /** \brief Set max allowed ARP or ip6 neighbor entries response
1330 @param context - sender context, to match reply w/ request
1331 @param retval - return code for request
1333 define set_arp_neighbor_limit_reply
1339 /** \brief L2 interface patch add / del request
1340 @param client_index - opaque cookie to identify the sender
1341 @param context - sender context, to match reply w/ request
1342 @param rx_sw_if_index - receive side interface
1343 @param tx_sw_if_index - transmit side interface
1344 @param is_add - if non-zero set up the interface patch, else remove it
1346 define l2_patch_add_del
1355 /** \brief L2 interface patch add / del response
1356 @param context - sender context, to match reply w/ request
1357 @param retval - return code for the request
1359 define l2_patch_add_del_reply
1365 /** \brief IPv6 segment routing tunnel add / del request
1366 @param client_index - opaque cookie to identify the sender
1367 @param context - sender context, to match reply w/ request
1368 @param is_add - add the tunnel if non-zero, else delete it
1369 @param name[] - tunnel name (len. 64)
1370 @param src_address[] -
1371 @param dst_address[] -
1372 @param dst_mask_width -
1373 @param inner_vrf_id -
1374 @param outer_vrf_id -
1375 @param flags_net_byte_order -
1378 @param segs_and_tags[] -
1379 @param policy_name[] - name of policy to associate this tunnel to (len. 64)
1381 define sr_tunnel_add_del
1392 u16 flags_net_byte_order;
1395 u8 segs_and_tags[0];
1399 /** \brief IPv6 segment routing tunnel add / del response
1400 @param context - sender context, to match reply w/ request
1401 @param retval - return value for request
1403 define sr_tunnel_add_del_reply
1409 /** \brief IPv6 segment routing policy add / del request
1410 @param client_index - opaque cookie to identify the sender
1411 @param context - sender context, to match reply w/ request
1412 @param is_add - add the tunnel if non-zero, else delete it
1413 @param name[] - policy name (len. 64)
1414 @param tunnel_names[] -
1416 define sr_policy_add_del
1425 /** \brief IPv6 segment routing policy add / del response
1426 @param context - sender context, to match reply w/ request
1427 @param retval - return value for request
1429 define sr_policy_add_del_reply
1435 /** \brief IPv6 segment routing multicast map to policy add / del request
1436 @param client_index - opaque cookie to identify the sender
1437 @param context - sender context, to match reply w/ request
1438 @param is_add - add the tunnel if non-zero, else delete it
1439 @param multicast_address[] - IP6 multicast address
1440 @param policy_name[] = policy name (len.64)
1442 define sr_multicast_map_add_del
1447 u8 multicast_address[16];
1451 /** \brief IPv6 segment routing multicast map to policy add / del response
1452 @param context - sender context, to match reply w/ request
1453 @param retval - return value for request
1455 define sr_multicast_map_add_del_reply
1461 /** \brief Interface set vpath request
1462 @param client_index - opaque cookie to identify the sender
1463 @param context - sender context, to match reply w/ request
1464 @param sw_if_index - interface used to reach neighbor
1465 @param enable - if non-zero enable, else disable
1467 define sw_interface_set_vpath
1475 /** \brief Interface set vpath response
1476 @param context - sender context, to match reply w/ request
1477 @param retval - return code for the request
1479 define sw_interface_set_vpath_reply
1485 /** \brief Interface set vxlan-bypass request
1486 @param client_index - opaque cookie to identify the sender
1487 @param context - sender context, to match reply w/ request
1488 @param sw_if_index - interface used to reach neighbor
1489 @param is_ipv6 - if non-zero, enable ipv6-vxlan-bypass, else ipv4-vxlan-bypass
1490 @param enable - if non-zero enable, else disable
1492 define sw_interface_set_vxlan_bypass
1501 /** \brief Interface set vxlan-bypass response
1502 @param context - sender context, to match reply w/ request
1503 @param retval - return code for the request
1505 define sw_interface_set_vxlan_bypass_reply
1511 /** \brief MPLS Ethernet add / del tunnel request
1512 @param client_index - opaque cookie to identify the sender
1513 @param context - sender context, to match reply w/ request
1514 @param vrf_id - vrf_id, only for IP4
1515 @param sw_if_index - interface used to reach neighbor
1516 @param is_add - add if set, tunnel delete if 0
1517 @param dst_mac_address -
1518 @param adj_address -
1519 @param adj_address_length -
1521 define mpls_ethernet_add_del_tunnel
1529 u8 dst_mac_address[6];
1531 u8 adj_address_length;
1534 /** \brief Reply for MPLS Ethernet add / delete tunnel request
1535 @param context - sender context, to match reply w/ request
1536 @param retval - return code for the request
1538 define mpls_ethernet_add_del_tunnel_reply
1542 u32 tunnel_sw_if_index;
1544 /** \brief MPLS Ethernet add/ del tunnel 2
1545 @param client_index - opaque cookie to identify the sender
1546 @param context - sender context, to match reply w/ request
1547 @param inner_vrf_id -
1548 @param outer_vrf_id -
1549 @param resolve_attempts -
1550 @param resolve_opaque -
1551 @param resolve_if_needed -
1553 @param adj_address -
1554 @param adj_address_length -
1555 @param next_hop_ip4_address_in_outer_vrf -
1557 define mpls_ethernet_add_del_tunnel_2
1563 u32 resolve_attempts;
1564 u32 resolve_opaque; /* no need to set this */
1565 u8 resolve_if_needed;
1569 u8 adj_address_length;
1570 u8 next_hop_ip4_address_in_outer_vrf[4];
1573 /** \brief MPLS Ethernet add/ del tunnel 2
1574 @param context - sender context, to match reply w/ request
1575 @param retval - return code for add /del request
1577 define mpls_ethernet_add_del_tunnel_2_reply
1583 /** \brief Set L2 XConnect between two interfaces request
1584 @param client_index - opaque cookie to identify the sender
1585 @param context - sender context, to match reply w/ request
1586 @param rx_sw_if_index - Receive interface index
1587 @param tx_sw_if_index - Transmit interface index
1588 @param enable - enable xconnect if not 0, else set to L3 mode
1590 define sw_interface_set_l2_xconnect
1599 /** \brief Set L2 XConnect response
1600 @param context - sender context, to match reply w/ request
1601 @param retval - L2 XConnect request return code
1603 define sw_interface_set_l2_xconnect_reply
1609 /** \brief Interface bridge mode request
1610 @param client_index - opaque cookie to identify the sender
1611 @param context - sender context, to match reply w/ request
1612 @param rx_sw_if_index - the interface
1613 @param bd_id - bridge domain id
1614 @param bvi - Setup interface as a bvi, bridge mode only
1615 @param shg - Shared horizon group, for bridge mode only
1616 @param enable - Enable beige mode if not 0, else set to L3 mode
1618 define sw_interface_set_l2_bridge
1629 /** \brief Interface bridge mode response
1630 @param context - sender context, to match reply w/ request
1631 @param retval - Bridge mode request return code
1633 define sw_interface_set_l2_bridge_reply
1639 /** \brief L2 FIB add entry request
1640 @param client_index - opaque cookie to identify the sender
1641 @param context - sender context, to match reply w/ request
1642 @param mac - the entry's mac address
1643 @param bd_id - the entry's bridge domain id
1644 @param sw_if_index - the interface
1645 @param is_add - If non zero add the entry, else delete it
1649 define l2fib_add_del
1662 /** \brief L2 FIB add entry response
1663 @param context - sender context, to match reply w/ request
1664 @param retval - return code for the add l2fib entry request
1666 define l2fib_add_del_reply
1672 /** \brief Set L2 flags request !!! TODO - need more info, feature bits in l2_input.h
1673 @param client_index - opaque cookie to identify the sender
1674 @param context - sender context, to match reply w/ request
1675 @param sw_if_index - interface
1676 @param is_set - if non-zero, set the bits, else clear them
1677 @param feature_bitmap - non-zero bits to set or clear
1688 /** \brief Set L2 bits response
1689 @param context - sender context, to match reply w/ request
1690 @param retval - return code for the set l2 bits request
1692 define l2_flags_reply
1696 u32 resulting_feature_bitmap;
1699 /** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD,
1700 L2_UU_FLOOD, or L2_ARP_TERM) request
1701 @param client_index - opaque cookie to identify the sender
1702 @param context - sender context, to match reply w/ request
1703 @param bd_id - the bridge domain to set the flags for
1704 @param is_set - if non-zero, set the flags, else clear them
1705 @param feature_bitmap - bits that are non-zero to set or clear
1716 /** \brief Set bridge flags response
1717 @param context - sender context, to match reply w/ request
1718 @param retval - return code for the set bridge flags request
1719 @param resulting_feature_bitmap - the feature bitmap value after the request is implemented
1721 define bridge_flags_reply
1725 u32 resulting_feature_bitmap;
1728 /** \brief Set bridge domain ip to mac entry request
1729 @param client_index - opaque cookie to identify the sender
1730 @param context - sender context, to match reply w/ request
1731 @param bd_id - the bridge domain to set the flags for
1732 @param is_add - if non-zero, add the entry, else clear it
1733 @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
1734 @param mac_address - MAC address
1737 define bd_ip_mac_add_del
1748 /** \brief Set bridge domain ip to mac entry response
1749 @param context - sender context, to match reply w/ request
1750 @param retval - return code for the set bridge flags request
1752 define bd_ip_mac_add_del_reply
1758 /** \brief Add/Delete classification table request
1759 @param client_index - opaque cookie to identify the sender
1760 @param context - sender context, to match reply w/ request
1761 @param is_add- if non-zero add the table, else delete it
1762 @param table_index - if add, reuturns index of the created table, else specifies the table to delete
1763 @param nbuckets - number of buckets when adding a table
1764 @param memory_size - memory size when adding a table
1765 @param match_n_vectors - number of match vectors
1766 @param next_table_index - index of next table
1767 @param miss_next_index - index of miss table
1768 @param current_data_flag - option to use current node's packet payload
1769 as the starting point from where packets are classified,
1770 This option is only valid for L2/L3 input ACL for now.
1771 0: by default, classify data from the buffer's start location
1772 1: classify packets from VPP node’s current data pointer
1773 @param current_data_offset - a signed value to shift the start location of
1774 the packet to be classified
1775 For example, if input IP ACL node is used, L2 header’s first byte
1776 can be accessible by configuring current_data_offset to -14
1777 if there is no vlan tag.
1778 This is valid only if current_data_flag is set to 1.
1779 @param mask[] - match mask
1781 define classify_add_del_table
1790 u32 match_n_vectors;
1791 u32 next_table_index;
1792 u32 miss_next_index;
1793 u32 current_data_flag;
1794 i32 current_data_offset;
1798 /** \brief Add/Delete classification table response
1799 @param context - sender context, to match reply w/ request
1800 @param retval - return code for the table add/del requst
1801 @param new_table_index - for add, returned index of the new table
1802 @param skip_n_vectors - for add, returned value of skip_n_vectors in table
1803 @param match_n_vectors -for add, returned value of match_n_vectors in table
1805 define classify_add_del_table_reply
1809 u32 new_table_index;
1811 u32 match_n_vectors;
1814 /** \brief Classify add / del session request
1815 @param client_index - opaque cookie to identify the sender
1816 @param context - sender context, to match reply w/ request
1817 @param is_add - add session if non-zero, else delete
1818 @param table_index - index of the table to add/del the session, required
1819 @param hit_next_index - for add, hit_next_index of new session, required
1820 @param opaque_index - for add, opaque_index of new session
1821 @param advance -for add, advance value for session
1823 0: no action (by default)
1824 metadata is not used.
1825 1: Classified IP packets will be looked up from the
1826 specified ipv4 fib table (configured by metadata as VRF id).
1827 Only valid for L3 input ACL node
1828 2: Classified IP packets will be looked up from the
1829 specified ipv6 fib table (configured by metadata as VRF id).
1830 Only valid for L3 input ACL node
1831 @param metadata - valid only if action != 0
1832 VRF id if action is 1 or 2.
1833 @param match[] - for add, match value for session, required
1835 define classify_add_del_session
1849 /** \brief Classify add / del session response
1850 @param context - sender context, to match reply w/ request
1851 @param retval - return code for the add/del session request
1853 define classify_add_del_session_reply
1859 /** \brief Set/unset the classification table for an interface request
1860 @param client_index - opaque cookie to identify the sender
1861 @param context - sender context, to match reply w/ request
1862 @param is_ipv6 - ipv6 if non-zero, else ipv4
1863 @param sw_if_index - interface to associate with the table
1864 @param table_index - index of the table, if ~0 unset the table
1866 define classify_set_interface_ip_table
1872 u32 table_index; /* ~0 => off */
1875 /** \brief Set/unset interface classification table response
1876 @param context - sender context, to match reply w/ request
1877 @param retval - return code
1879 define classify_set_interface_ip_table_reply
1885 /** \brief Set/unset l2 classification tables for an interface request
1886 @param client_index - opaque cookie to identify the sender
1887 @param context - sender context, to match reply w/ request
1888 @param sw_if_index - interface to set/unset tables for
1889 @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
1890 @param ip6_table_index - ip6 index
1891 @param other_table_index - other index
1893 define classify_set_interface_l2_tables
1899 u32 ip4_table_index;
1900 u32 ip6_table_index;
1901 u32 other_table_index;
1905 /** \brief Set/unset l2 classification tables for an interface response
1906 @param context - sender context, to match reply w/ request
1907 @param retval - return code for the request
1909 define classify_set_interface_l2_tables_reply
1915 /** \brief Get node index using name request
1916 @param client_index - opaque cookie to identify the sender
1917 @param context - sender context, to match reply w/ request
1918 @param node_name[] - name of the node
1920 define get_node_index
1927 /** \brief Get node index using name request
1928 @param context - sender context, to match reply w/ request
1929 @param retval - return code for the request
1930 @param node_index - index of the desired node if found, else ~0
1932 define get_node_index_reply
1939 /** \brief Set the next node for a given node request
1940 @param client_index - opaque cookie to identify the sender
1941 @param context - sender context, to match reply w/ request
1942 @param node_name[] - node to add the next node to
1943 @param next_name[] - node to add as the next node
1945 define add_node_next
1953 /** \brief IP Set the next node for a given node response
1954 @param context - sender context, to match reply w/ request
1955 @param retval - return code for the add next node request
1956 @param next_index - the index of the next node if success, else ~0
1958 define add_node_next_reply
1965 /** \brief DHCP Proxy config 2 add / del request
1966 @param client_index - opaque cookie to identify the sender
1967 @param context - sender context, to match reply w/ request
1968 @param rx_vrf_id - receive vrf id
1969 @param server_vrf_id - server vrf id
1970 @param if_ipv6 - ipv6 if non-zero, else ipv4
1971 @param is_add - add the config if non-zero, else delete
1972 @param insert_circuit_id - option82 suboption 1 fib number
1973 @param dhcp_server[] - server address
1974 @param dhcp_src_address[] - <fix this, need details>
1976 define dhcp_proxy_config_2
1984 u8 insert_circuit_id;
1986 u8 dhcp_src_address[16];
1989 /** \brief DHCP Proxy config 2 add / del response
1990 @param context - sender context, to match reply w/ request
1991 @param retval - return code for request
1993 define dhcp_proxy_config_2_reply
1999 /** \brief l2tpv3 tunnel interface create request
2000 @param client_index - opaque cookie to identify the sender
2001 @param context - sender context, to match reply w/ request
2002 @param client_address - remote client tunnel ip address
2003 @param client_address - local tunnel ip address
2004 @param is_ipv6 - ipv6 if non-zero, else ipv4
2005 @param local_session_id - local tunnel session id
2006 @param remote_session_id - remote tunnel session id
2007 @param local_cookie - local tunnel cookie
2008 @param l2_sublayer_present - l2 sublayer is present in packets if non-zero
2009 @param encap_vrf_id - fib identifier used for outgoing encapsulated packets
2011 define l2tpv3_create_tunnel
2015 u8 client_address[16];
2018 u32 local_session_id;
2019 u32 remote_session_id;
2022 u8 l2_sublayer_present;
2026 /** \brief l2tpv3 tunnel interface create response
2027 @param context - sender context, to match reply w/ request
2028 @param retval - return code for the request
2029 @param sw_if_index - index of the new tunnel interface
2031 define l2tpv3_create_tunnel_reply
2038 define l2tpv3_set_tunnel_cookies
2043 u64 new_local_cookie;
2044 u64 new_remote_cookie;
2047 /** \brief L2TP tunnel set cookies response
2048 @param context - sender context, to match reply w/ request
2049 @param retval - return code for the request
2051 define l2tpv3_set_tunnel_cookies_reply
2057 define sw_if_l2tpv3_tunnel_details
2061 u8 interface_name[64];
2062 u8 client_address[16];
2064 u32 local_session_id;
2065 u32 remote_session_id;
2066 u64 local_cookie[2];
2068 u8 l2_sublayer_present;
2071 define sw_if_l2tpv3_tunnel_dump
2077 /** \brief L2 fib clear table request, clear all mac entries in the l2 fib
2078 @param client_index - opaque cookie to identify the sender
2079 @param context - sender context, to match reply w/ request
2081 define l2_fib_clear_table
2087 /** \brief L2 fib clear table response
2088 @param context - sender context, to match reply w/ request
2089 @param retval - return code for the request
2091 define l2_fib_clear_table_reply
2097 /** \brief L2 interface ethernet flow point filtering enable/disable request
2098 @param client_index - opaque cookie to identify the sender
2099 @param context - sender context, to match reply w/ request
2100 @param sw_if_index - interface to enable/disable filtering on
2101 @param enable_disable - if non-zero enable filtering, else disable
2103 define l2_interface_efp_filter
2111 /** \brief L2 interface ethernet flow point filtering response
2112 @param context - sender context, to match reply w/ request
2113 @param retval - return code for the request
2115 define l2_interface_efp_filter_reply
2121 define l2tpv3_interface_enable_disable
2129 define l2tpv3_interface_enable_disable_reply
2135 define l2tpv3_set_lookup_key
2139 /* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */
2143 define l2tpv3_set_lookup_key_reply
2149 define vxlan_add_del_tunnel
2157 u32 mcast_sw_if_index;
2159 u32 decap_next_index;
2163 define vxlan_add_del_tunnel_reply
2170 define vxlan_tunnel_dump
2177 define vxlan_tunnel_details
2183 u32 mcast_sw_if_index;
2185 u32 decap_next_index;
2190 define gre_add_del_tunnel
2202 define gre_add_del_tunnel_reply
2209 define gre_tunnel_dump
2216 define gre_tunnel_details
2227 /** \brief L2 interface vlan tag rewrite configure request
2228 @param client_index - opaque cookie to identify the sender
2229 @param context - sender context, to match reply w/ request
2230 @param sw_if_index - interface the operation is applied to
2231 @param vtr_op - Choose from l2_vtr_op_t enum values
2232 @param push_dot1q - first pushed flag dot1q id set, else dot1ad
2233 @param tag1 - Needed for any push or translate vtr op
2234 @param tag2 - Needed for any push 2 or translate x-2 vtr ops
2236 define l2_interface_vlan_tag_rewrite
2242 u32 push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
2243 u32 tag1; // first pushed tag
2244 u32 tag2; // second pushed tag
2247 /** \brief L2 interface vlan tag rewrite response
2248 @param context - sender context, to match reply w/ request
2249 @param retval - return code for the request
2251 define l2_interface_vlan_tag_rewrite_reply
2257 /** \brief vhost-user interface create request
2258 @param client_index - opaque cookie to identify the sender
2259 @param is_server - our side is socket server
2260 @param sock_filename - unix socket filename, used to speak with frontend
2261 @param use_custom_mac - enable or disable the use of the provided hardware address
2262 @param mac_address - hardware address to use if 'use_custom_mac' is set
2264 define create_vhost_user_if
2269 u8 sock_filename[256];
2271 u32 custom_dev_instance;
2277 /** \brief vhost-user interface create response
2278 @param context - sender context, to match reply w/ request
2279 @param retval - return code for the request
2280 @param sw_if_index - interface the operation is applied to
2282 define create_vhost_user_if_reply
2289 /** \brief vhost-user interface modify request
2290 @param client_index - opaque cookie to identify the sender
2291 @param is_server - our side is socket server
2292 @param sock_filename - unix socket filename, used to speak with frontend
2294 define modify_vhost_user_if
2300 u8 sock_filename[256];
2302 u32 custom_dev_instance;
2305 /** \brief vhost-user interface modify response
2306 @param context - sender context, to match reply w/ request
2307 @param retval - return code for the request
2309 define modify_vhost_user_if_reply
2315 /** \brief vhost-user interface delete request
2316 @param client_index - opaque cookie to identify the sender
2318 define delete_vhost_user_if
2325 /** \brief vhost-user interface delete response
2326 @param context - sender context, to match reply w/ request
2327 @param retval - return code for the request
2329 define delete_vhost_user_if_reply
2342 /* These fields map directly onto the subif template */
2346 u8 dot1ad; // 0 = dot1q, 1=dot1ad
2349 u8 outer_vlan_id_any;
2350 u8 inner_vlan_id_any;
2355 define create_subif_reply
2362 /** \brief show version
2363 @param client_index - opaque cookie to identify the sender
2364 @param context - sender context, to match reply w/ request
2372 /** \brief show version response
2373 @param context - sender context, to match reply w/ request
2374 @param retval - return code for the request
2375 @param program - name of the program (vpe)
2376 @param version - version of the program
2377 @param build_directory - root of the workspace where the program was built
2379 define show_version_reply
2386 u8 build_directory[256];
2389 /** \brief Vhost-user interface details structure (fix this)
2390 @param sw_if_index - index of the interface
2391 @param interface_name - name of interface
2392 @param virtio_net_hdr_sz - net header size
2393 @param features - interface features
2394 @param is_server - vhost-user server socket
2395 @param sock_filename - socket filename
2396 @param num_regions - number of used memory regions
2398 define sw_interface_vhost_user_details
2402 u8 interface_name[64];
2403 u32 virtio_net_hdr_sz;
2406 u8 sock_filename[256];
2412 define sw_interface_vhost_user_dump
2418 define ip_address_details
2426 define ip_address_dump
2447 /** \brief l2 fib table entry structure
2448 @param bd_id - the l2 fib / bridge domain table id
2449 @param mac - the entry's mac address
2450 @param sw_if_index - index of the interface
2451 @param static_mac - the entry is statically configured.
2452 @param filter_mac - the entry is a mac filter entry.
2453 @param bvi_mac - the mac address is a bridge virtual interface
2455 define l2_fib_table_entry
2466 /** \brief Dump l2 fib (aka bridge domain) table
2467 @param client_index - opaque cookie to identify the sender
2468 @param bd_id - the l2 fib / bridge domain table identifier
2470 define l2_fib_table_dump
2477 define vxlan_gpe_add_del_tunnel
2491 define vxlan_gpe_add_del_tunnel_reply
2498 define vxlan_gpe_tunnel_dump
2505 define vxlan_gpe_tunnel_details
2518 /** \brief add or delete locator_set
2519 @param client_index - opaque cookie to identify the sender
2520 @param context - sender context, to match reply w/ request
2521 @param is_add - add address if non-zero, else delete
2522 @param locator_set_name - locator name
2523 @param locator_num - number of locators
2524 @param locators - LISP locator records
2525 Structure of one locator record is as follows:
2533 define lisp_add_del_locator_set
2538 u8 locator_set_name[64];
2543 /** \brief Reply for locator_set add/del
2544 @param context - returned sender context, to match reply w/ request
2545 @param retval - return code
2546 @param ls_index - locator set index
2548 define lisp_add_del_locator_set_reply
2555 /** \brief add or delete locator for locator_set
2556 @param client_index - opaque cookie to identify the sender
2557 @param context - sender context, to match reply w/ request
2558 @param is_add - add address if non-zero, else delete
2559 @param locator_set_name - name of locator_set to add/del locator
2560 @param sw_if_index - index of the interface
2561 @param priority - priority of the lisp locator
2562 @param weight - weight of the lisp locator
2564 define lisp_add_del_locator
2569 u8 locator_set_name[64];
2575 /** \brief Reply for locator add/del
2576 @param context - returned sender context, to match reply w/ request
2577 @param retval - return code
2579 define lisp_add_del_locator_reply
2585 /** \brief add or delete lisp eid-table
2586 @param client_index - opaque cookie to identify the sender
2587 @param context - sender context, to match reply w/ request
2588 @param is_add - add address if non-zero, else delete
2593 @param eid - EID can be ip4, ip6 or mac
2594 @param prefix_len - prefix len
2595 @param locator_set_name - name of locator_set to add/del eid-table
2596 @param vni - virtual network instance
2598 define lisp_add_del_local_eid
2606 u8 locator_set_name[64];
2610 /** \brief Reply for local_eid add/del
2611 @param context - returned sender context, to match reply w/ request
2612 @param retval - return code
2614 define lisp_add_del_local_eid_reply
2620 /** \brief add or delete lisp gpe tunnel
2621 @param client_index - opaque cookie to identify the sender
2622 @param context - sender context, to match reply w/ request
2623 @param is_add - add address if non-zero, else delete
2628 @param rmt_eid - remote eid
2629 @param lcl_eid - local eid
2630 @param rmt_len - remote prefix len
2631 @param lcl_len - local prefix len
2632 @param vni - virtual network identifier
2633 @param dp_table - vrf/bridge domain id
2634 @param loc_num - number of locators
2635 @param lcl_locs - array of local locators
2636 @param rmt_locs - array of remote locators
2637 @param action - negative action when 0 locators configured
2639 define lisp_gpe_add_del_fwd_entry
2652 u8 lcl_locs[loc_num];
2653 u8 rmt_locs[loc_num];
2657 /** \brief Reply for gpe_fwd_entry add/del
2658 @param context - returned sender context, to match reply w/ request
2659 @param retval - return code
2661 define lisp_gpe_add_del_fwd_entry_reply
2667 /** \brief add or delete map-resolver
2668 @param client_index - opaque cookie to identify the sender
2669 @param context - sender context, to match reply w/ request
2670 @param is_add - add address if non-zero, else delete
2671 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2672 @param ip_address - array of address bytes
2674 define lisp_add_del_map_resolver
2683 /** \brief Reply for map_resolver add/del
2684 @param context - returned sender context, to match reply w/ request
2685 @param retval - return code
2687 define lisp_add_del_map_resolver_reply
2693 /** \brief enable or disable lisp-gpe protocol
2694 @param client_index - opaque cookie to identify the sender
2695 @param context - sender context, to match reply w/ request
2696 @param is_en - enable protocol if non-zero, else disable
2698 define lisp_gpe_enable_disable
2705 /** \brief Reply for gpe enable/disable
2706 @param context - returned sender context, to match reply w/ request
2707 @param retval - return code
2709 define lisp_gpe_enable_disable_reply
2715 /** \brief enable or disable LISP feature
2716 @param client_index - opaque cookie to identify the sender
2717 @param context - sender context, to match reply w/ request
2718 @param is_en - enable protocol if non-zero, else disable
2720 define lisp_enable_disable
2727 /** \brief Reply for gpe enable/disable
2728 @param context - returned sender context, to match reply w/ request
2729 @param retval - return code
2731 define lisp_enable_disable_reply
2737 /** \brief add or delete gpe_iface
2738 @param client_index - opaque cookie to identify the sender
2739 @param context - sender context, to match reply w/ request
2740 @param is_add - add address if non-zero, else delete
2742 define lisp_gpe_add_del_iface
2752 /** \brief Reply for gpe_iface add/del
2753 @param context - returned sender context, to match reply w/ request
2754 @param retval - return code
2756 define lisp_gpe_add_del_iface_reply
2762 /** \brief configure or disable LISP PITR node
2763 @param client_index - opaque cookie to identify the sender
2764 @param context - sender context, to match reply w/ request
2765 @param ls_name - locator set name
2766 @param is_add - add locator set if non-zero, else disable pitr
2768 define lisp_pitr_set_locator_set
2776 /** \brief Reply for lisp_pitr_set_locator_set
2777 @param context - returned sender context, to match reply w/ request
2778 @param retval - return code
2780 define lisp_pitr_set_locator_set_reply
2786 /** \brief set LISP map-request mode. Based on configuration VPP will send
2787 src/dest or just normal destination map requests.
2788 @param client_index - opaque cookie to identify the sender
2789 @param context - sender context, to match reply w/ request
2790 @param mode - new map-request mode. Supported values are:
2791 0 - destination only
2792 1 - source/destaination
2794 define lisp_map_request_mode
2801 /** \brief Reply for lisp_map_request_mode
2802 @param context - returned sender context, to match reply w/ request
2803 @param retval - return code
2805 define lisp_map_request_mode_reply
2811 /** \brief Request for LISP map-request mode
2812 @param client_index - opaque cookie to identify the sender
2813 @param context - sender context, to match reply w/ request
2815 define show_lisp_map_request_mode
2821 /** \brief Reply for show_lisp_map_request_mode
2822 @param context - returned sender context, to match reply w/ request
2823 @param retval - return code
2824 @param mode - map-request mode
2826 define show_lisp_map_request_mode_reply
2833 /** \brief add or delete remote static mapping
2834 @param client_index - opaque cookie to identify the sender
2835 @param context - sender context, to match reply w/ request
2836 @param is_add - add address if non-zero, else delete
2837 @param is_src_dst - flag indicating src/dst based routing policy
2838 @param del_all - if set, delete all remote mappings
2839 @param vni - virtual network instance
2840 @param action - negative map-reply action
2845 @param deid - dst EID
2846 @param seid - src EID, valid only if is_src_dst is enabled
2847 @param rloc_num - number of remote locators
2848 @param rlocs - remote locator records
2849 Structure of remote locator:
2858 define lisp_add_del_remote_mapping
2876 /** \brief Reply for lisp_add_del_remote_mapping
2877 @param context - returned sender context, to match reply w/ request
2878 @param retval - return code
2880 define lisp_add_del_remote_mapping_reply
2886 /** \brief add or delete LISP adjacency adjacency
2887 @param client_index - opaque cookie to identify the sender
2888 @param context - sender context, to match reply w/ request
2889 @param is_add - add address if non-zero, else delete
2890 @param vni - virtual network instance
2895 @param reid - remote EID
2896 @param leid - local EID
2898 define lisp_add_del_adjacency
2911 /** \brief Reply for lisp_add_del_adjacency
2912 @param context - returned sender context, to match reply w/ request
2913 @param retval - return code
2915 define lisp_add_del_adjacency_reply
2921 /** \brief add or delete map request itr rlocs
2922 @param client_index - opaque cookie to identify the sender
2923 @param context - sender context, to match reply w/ request
2924 @param is_add - add address if non-zero, else delete
2925 @param locator_set_name - locator set name
2927 define lisp_add_del_map_request_itr_rlocs
2932 u8 locator_set_name[64];
2935 /** \brief Reply for lisp_add_del_map_request_itr_rlocs
2936 @param context - returned sender context, to match reply w/ request
2937 @param retval - return code
2940 define lisp_add_del_map_request_itr_rlocs_reply
2946 /** \brief map/unmap vni/bd_index to vrf
2947 @param client_index - opaque cookie to identify the sender
2948 @param context - sender context, to match reply w/ request
2949 @param is_add - add or delete mapping
2950 @param dp_table - virtual network id/bridge domain index
2953 define lisp_eid_table_add_del_map
2963 /** \brief Reply for lisp_eid_table_add_del_map
2964 @param context - returned sender context, to match reply w/ request
2965 @param retval - return code
2967 define lisp_eid_table_add_del_map_reply
2973 /** \brief Request for map lisp locator status
2974 @param client_index - opaque cookie to identify the sender
2975 @param context - sender context, to match reply w/ request
2976 @param locator_set_index - index of locator_set
2977 @param ls_name - locator set name
2978 @param is_index_set - flag indicating whether ls_name or ls_index is set
2980 define lisp_locator_dump
2989 /** \brief LISP locator_set status
2990 @param local - if is set, then locator is local
2991 @param locator_set_name - name of the locator_set
2992 @param sw_if_index - sw_if_index of the locator
2993 @param priority - locator priority
2994 @param weight - locator weight
2996 define lisp_locator_details
3007 /** \brief LISP locator_set status
3008 @param context - sender context, to match reply w/ request
3009 @param ls_index - locator set index
3010 @param ls_name - name of the locator set
3012 define lisp_locator_set_details
3019 /** \brief Request for locator_set summary status
3020 @param client_index - opaque cookie to identify the sender
3021 @param context - sender context, to match reply w/ request
3022 @param filter - filter type
3025 1: local locator sets
3026 2: remote locator sets
3028 define lisp_locator_set_dump
3035 /** \brief Dump lisp eid-table
3036 @param client_index - opaque cookie to identify the sender
3037 @param context - sender context, to match reply w/ request
3038 @param locator_set_index - index of locator_set, if ~0 then the mapping
3040 @param action - negative map request action
3041 @param is_local - local if non-zero, else remote
3046 @param is_src_dst - EID is type of source/destination
3047 @param eid - EID can be ip4, ip6 or mac
3048 @param eid_prefix_len - prefix length
3049 @param seid - source EID can be ip4, ip6 or mac
3050 @param seid_prefix_len - source prefix length
3051 @param vni - virtual network instance
3052 @param ttl - time to live
3053 @param authoritative - authoritative
3056 define lisp_eid_table_details
3059 u32 locator_set_index;
3073 /** \brief Request for eid table summary status
3074 @param client_index - opaque cookie to identify the sender
3075 @param context - sender context, to match reply w/ request
3076 @param eid_set - if non-zero request info about specific mapping
3077 @param vni - virtual network instance; valid only if eid_set != 0
3078 @param prefix_length - prefix length if EID is IP address;
3079 valid only if eid_set != 0
3080 @param eid_type - EID type; valid only if eid_set != 0
3084 2: EID is ethernet address
3085 @param eid - endpoint identifier
3086 @param filter - filter type;
3092 define lisp_eid_table_dump
3104 /** \brief LISP adjacency
3109 @param reid - remote EID
3110 @param leid - local EID
3111 @param reid_prefix_len - remote EID IP prefix length
3112 @param leid_prefix_len - local EID IP prefix length
3114 typeonly manual_print manual_endian define lisp_adjacency
3123 /** \brief LISP adjacency reply
3124 @param count - number of adjacencies
3125 @param adjacencies - array of adjacencies
3127 manual_endian manual_print define lisp_adjacencies_get_reply
3132 vl_api_lisp_adjacency_t adjacencies[count];
3135 /** \brief Request for LISP adjacencies
3136 @param client_index - opaque cookie to identify the sender
3137 @param context - sender context, to match reply w/ request
3138 @param vni - filter adjacencies by VNI
3140 define lisp_adjacencies_get
3147 /** \brief Shows relationship between vni and vrf/bd
3148 @param dp_table - VRF index or bridge domain index
3149 @param vni - vitual network instance
3151 define lisp_eid_table_map_details
3158 /** \brief Request for lisp_eid_table_map_details
3159 @param client_index - opaque cookie to identify the sender
3160 @param context - sender context, to match reply w/ request
3161 @param is_l2 - if set dump vni/bd mappings else vni/vrf
3163 define lisp_eid_table_map_dump
3170 /** \brief Dumps all VNIs used in mappings
3171 @param client_index - opaque cookie to identify the sender
3172 @param context - sender context, to match reply w/ request
3174 define lisp_eid_table_vni_dump
3180 /** \brief reply to lisp_eid_table_vni_dump
3181 @param client_index - opaque cookie to identify the sender
3182 @param context - sender context, to match reply w/ request
3183 @param vni - virtual network instance
3185 define lisp_eid_table_vni_details
3192 define lisp_gpe_tunnel_details
3198 u8 destination_ip[16];
3210 /** \brief Request for gpe tunnel summary status
3211 @param client_index - opaque cookie to identify the sender
3212 @param context - sender context, to match reply w/ request
3214 define lisp_gpe_tunnel_dump
3220 /** \brief LISP map resolver status
3221 @param locator_set_name - name of the locator_set
3222 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
3223 @param ip_address - array of address bytes
3225 define lisp_map_resolver_details
3232 /** \brief Request for map resolver summary status
3233 @param client_index - opaque cookie to identify the sender
3234 @param context - sender context, to match reply w/ request
3236 define lisp_map_resolver_dump
3242 /** \brief Request for lisp-gpe protocol status
3243 @param client_index - opaque cookie to identify the sender
3244 @param context - sender context, to match reply w/ request
3246 define show_lisp_status
3252 /** \brief Status of lisp, enable or disable
3253 @param context - sender context, to match reply w/ request
3254 @param feature_status - lisp enable if non-zero, else disable
3255 @param gpe_status - lisp enable if non-zero, else disable
3257 define show_lisp_status_reply
3265 /** \brief Get LISP map request itr rlocs status
3266 @param context - sender context, to match reply w/ request
3267 @param locator_set_name - name of the locator_set
3269 define lisp_get_map_request_itr_rlocs
3275 /** \brief Request for map request itr rlocs summary status
3277 define lisp_get_map_request_itr_rlocs_reply
3281 u8 locator_set_name[64];
3284 /** \brief Request for lisp pitr status
3285 @param client_index - opaque cookie to identify the sender
3286 @param context - sender context, to match reply w/ request
3288 define show_lisp_pitr
3294 /** \brief Status of lisp pitr, enable or disable
3295 @param context - sender context, to match reply w/ request
3296 @param status - lisp pitr enable if non-zero, else disable
3297 @param locator_set_name - name of the locator_set
3299 define show_lisp_pitr_reply
3304 u8 locator_set_name[64];
3307 /* Gross kludge, DGMS */
3308 define interface_name_renumber
3313 u32 new_show_dev_instance;
3316 define interface_name_renumber_reply
3322 /** \brief Register for ip4 arp resolution events
3323 @param client_index - opaque cookie to identify the sender
3324 @param context - sender context, to match reply w/ request
3325 @param enable_disable - 1 => register for events, 0 => cancel registration
3326 @param pid - sender's pid
3327 @param address - the exact ip4 address of interest
3329 define want_ip4_arp_events
3338 /** \brief Reply for interface events registration
3339 @param context - returned sender context, to match reply w/ request
3340 @param retval - return code
3342 define want_ip4_arp_events_reply
3348 /** \brief Tell client about an ip4 arp resolution event
3349 @param client_index - opaque cookie to identify the sender
3350 @param context - sender context, to match reply w/ request
3351 @param address - the exact ip4 address of interest
3352 @param pid - client pid registered to receive notification
3353 @param sw_if_index - interface which received ARP packet
3354 @param new_mac - the new mac address
3355 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
3357 define ip4_arp_event
3368 /** \brief Register for ip6 nd resolution events
3369 @param client_index - opaque cookie to identify the sender
3370 @param context - sender context, to match reply w/ request
3371 @param enable_disable - 1 => register for events, 0 => cancel registration
3372 @param pid - sender's pid
3373 @param address - the exact ip6 address of interest
3375 define want_ip6_nd_events
3384 /** \brief Reply for ip6 nd resolution events registration
3385 @param context - returned sender context, to match reply w/ request
3386 @param retval - return code
3388 define want_ip6_nd_events_reply
3394 /** \brief Tell client about an ip6 nd resolution or mac/ip event
3395 @param client_index - opaque cookie to identify the sender
3396 @param context - sender context, to match reply w/ request
3397 @param pid - client pid registered to receive notification
3398 @param sw_if_index - interface which received ARP packet
3399 @param address - the exact ip6 address of interest
3400 @param new_mac - the new mac address
3401 @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
3414 /** \brief L2 bridge domain add or delete request
3415 @param client_index - opaque cookie to identify the sender
3416 @param context - sender context, to match reply w/ request
3417 @param bd_id - the bridge domain to create
3418 @param flood - enable/disable bcast/mcast flooding in the bd
3419 @param uu_flood - enable/disable uknown unicast flood in the bd
3420 @param forward - enable/disable forwarding on all interfaces in the bd
3421 @param learn - enable/disable learning on all interfaces in the bd
3422 @param arp_term - enable/disable arp termination in the bd
3423 @param is_add - add or delete flag
3425 define bridge_domain_add_del
3438 /** \brief L2 bridge domain add or delete response
3439 @param context - sender context, to match reply w/ request
3440 @param retval - return code for the set bridge flags request
3442 define bridge_domain_add_del_reply
3448 /** \brief L2 bridge domain request operational state details
3449 @param client_index - opaque cookie to identify the sender
3450 @param context - sender context, to match reply w/ request
3451 @param bd_id - the bridge domain id desired or ~0 to request all bds
3453 define bridge_domain_dump
3460 /** \brief L2 bridge domain operational state response
3461 @param bd_id - the bridge domain id
3462 @param flood - bcast/mcast flooding state on all interfaces in the bd
3463 @param uu_flood - uknown unicast flooding state on all interfaces in the bd
3464 @param forward - forwarding state on all interfaces in the bd
3465 @param learn - learning state on all interfaces in the bd
3466 @param arp_term - arp termination state on all interfaces in the bd
3467 @param n_sw_ifs - number of sw_if_index's in the domain
3469 define bridge_domain_details
3478 u32 bvi_sw_if_index;
3482 /** \brief L2 bridge domain sw interface operational state response
3483 @param bd_id - the bridge domain id
3484 @param sw_if_index - sw_if_index in the domain
3485 @param shg - split horizon group for the interface
3487 define bridge_domain_sw_if_details
3495 /** \brief DHCP Client config add / del request
3496 @param client_index - opaque cookie to identify the sender
3497 @param context - sender context, to match reply w/ request
3498 @param sw_if_index - index of the interface for DHCP client
3499 @param hostname - hostname
3500 @param is_add - add the config if non-zero, else delete
3501 @param want_dhcp_event - DHCP event sent to the sender
3502 via dhcp_compl_event API message if non-zero
3503 @param pid - sender's pid
3505 define dhcp_client_config
3516 /** \brief DHCP Client config response
3517 @param context - sender context, to match reply w/ request
3518 @param retval - return code for the request
3520 define dhcp_client_config_reply
3526 /** \brief Set/unset input ACL interface
3527 @param client_index - opaque cookie to identify the sender
3528 @param context - sender context, to match reply w/ request
3529 @param sw_if_index - interface to set/unset input ACL
3530 @param ip4_table_index - ip4 classify table index (~0 for skip)
3531 @param ip6_table_index - ip6 classify table index (~0 for skip)
3532 @param l2_table_index - l2 classify table index (~0 for skip)
3533 @param is_add - Set input ACL if non-zero, else unset
3534 Note: User is recommeneded to use just one valid table_index per call.
3535 (ip4_table_index, ip6_table_index, or l2_table_index)
3537 define input_acl_set_interface
3542 u32 ip4_table_index;
3543 u32 ip6_table_index;
3548 /** \brief Set/unset input ACL interface response
3549 @param context - sender context, to match reply w/ request
3550 @param retval - return code for the request
3552 define input_acl_set_interface_reply
3558 /** \brief IPsec: Add/delete Security Policy Database
3559 @param client_index - opaque cookie to identify the sender
3560 @param context - sender context, to match reply w/ request
3561 @param is_add - add SPD if non-zero, else delete
3562 @param spd_id - SPD instance id (control plane allocated)
3565 define ipsec_spd_add_del
3573 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
3574 @param context - returned sender context, to match reply w/ request
3575 @param retval - return code
3578 define ipsec_spd_add_del_reply
3584 /** \brief IPsec: Add/delete SPD from interface
3586 @param client_index - opaque cookie to identify the sender
3587 @param context - sender context, to match reply w/ request
3588 @param is_add - add security mode if non-zero, else delete
3589 @param sw_if_index - index of the interface
3590 @param spd_id - SPD instance id to use for lookups
3594 define ipsec_interface_add_del_spd
3604 /** \brief Reply for IPsec: Add/delete SPD from interface
3605 @param context - returned sender context, to match reply w/ request
3606 @param retval - return code
3609 define ipsec_interface_add_del_spd_reply
3615 /** \brief IPsec: Add/delete Security Policy Database entry
3617 See RFC 4301, 4.4.1.1 on how to match packet to selectors
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 SPD if non-zero, else delete
3622 @param spd_id - SPD instance id (control plane allocated)
3623 @param priority - priority of SPD entry (non-unique value). Used to order SPD matching - higher priorities match before lower
3624 @param is_outbound - entry applies to outbound traffic if non-zero, otherwise applies to inbound traffic
3625 @param is_ipv6 - remote/local address are IPv6 if non-zero, else IPv4
3626 @param remote_address_start - start of remote address range to match
3627 @param remote_address_stop - end of remote address range to match
3628 @param local_address_start - start of local address range to match
3629 @param local_address_stop - end of local address range to match
3630 @param protocol - protocol type to match [0 means any]
3631 @param remote_port_start - start of remote port range to match ...
3632 @param remote_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3633 @param local_port_start - start of local port range to match ...
3634 @param local_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3635 @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)
3636 @param sa_id - SAD instance id (control plane allocated)
3640 define ipsec_spd_add_del_entry
3653 u8 remote_address_start[16];
3654 u8 remote_address_stop[16];
3655 u8 local_address_start[16];
3656 u8 local_address_stop[16];
3660 u16 remote_port_start;
3661 u16 remote_port_stop;
3662 u16 local_port_start;
3663 u16 local_port_stop;
3670 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
3671 @param context - returned sender context, to match reply w/ request
3672 @param retval - return code
3675 define ipsec_spd_add_del_entry_reply
3681 /** \brief IPsec: Add/delete Security Association Database entry
3682 @param client_index - opaque cookie to identify the sender
3683 @param context - sender context, to match reply w/ request
3684 @param is_add - add SAD entry if non-zero, else delete
3686 @param sad_id - sad id
3688 @param spi - security parameter index
3690 @param protocol - 0 = AH, 1 = ESP
3692 @param crypto_algorithm - 0 = Null, 1 = AES-CBC-128, 2 = AES-CBC-192, 3 = AES-CBC-256, 4 = 3DES-CBC
3693 @param crypto_key_length - length of crypto_key in bytes
3694 @param crypto_key - crypto keying material
3696 @param integrity_algorithm - 0 = None, 1 = MD5-96, 2 = SHA1-96, 3 = SHA-256, 4 = SHA-384, 5=SHA-512
3697 @param integrity_key_length - length of integrity_key in bytes
3698 @param integrity_key - integrity keying material
3700 @param use_extended_sequence_number - use ESN when non-zero
3702 @param is_tunnel - IPsec tunnel mode if non-zero, else transport mode
3703 @param is_tunnel_ipv6 - IPsec tunnel mode is IPv6 if non-zero, else IPv4 tunnel only valid if is_tunnel is non-zero
3704 @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
3705 @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
3709 IPsec tunnel address copy mode (to support GDOI)
3712 define ipsec_sad_add_del_entry
3724 u8 crypto_algorithm;
3725 u8 crypto_key_length;
3728 u8 integrity_algorithm;
3729 u8 integrity_key_length;
3730 u8 integrity_key[128];
3732 u8 use_extended_sequence_number;
3736 u8 tunnel_src_address[16];
3737 u8 tunnel_dst_address[16];
3740 /** \brief Reply for IPsec: Add/delete Security Association Database entry
3741 @param context - returned sender context, to match reply w/ request
3742 @param retval - return code
3745 define ipsec_sad_add_del_entry_reply
3751 /** \brief IPsec: Update Security Association keys
3752 @param client_index - opaque cookie to identify the sender
3753 @param context - sender context, to match reply w/ request
3755 @param sa_id - sa id
3757 @param crypto_key_length - length of crypto_key in bytes
3758 @param crypto_key - crypto keying material
3760 @param integrity_key_length - length of integrity_key in bytes
3761 @param integrity_key - integrity keying material
3764 define ipsec_sa_set_key
3771 u8 crypto_key_length;
3774 u8 integrity_key_length;
3775 u8 integrity_key[128];
3778 /** \brief Reply for IPsec: Update Security Association keys
3779 @param context - returned sender context, to match reply w/ request
3780 @param retval - return code
3783 define ipsec_sa_set_key_reply
3789 /** \brief IKEv2: Add/delete profile
3790 @param client_index - opaque cookie to identify the sender
3791 @param context - sender context, to match reply w/ request
3793 @param name - IKEv2 profile name
3794 @param is_add - Add IKEv2 profile if non-zero, else delete
3796 define ikev2_profile_add_del
3805 /** \brief Reply for IKEv2: Add/delete profile
3806 @param context - returned sender context, to match reply w/ request
3807 @param retval - return code
3809 define ikev2_profile_add_del_reply
3815 /** \brief IKEv2: Set IKEv2 profile authentication method
3816 @param client_index - opaque cookie to identify the sender
3817 @param context - sender context, to match reply w/ request
3819 @param name - IKEv2 profile name
3820 @param auth_method - IKEv2 authentication method (shared-key-mic/rsa-sig)
3821 @param is_hex - Authentication data in hex format if non-zero, else string
3822 @param data_len - Authentication data length
3823 @param data - Authentication data (for rsa-sig cert file path)
3825 define ikev2_profile_set_auth
3837 /** \brief Reply for IKEv2: Set IKEv2 profile authentication method
3838 @param context - returned sender context, to match reply w/ request
3839 @param retval - return code
3841 define ikev2_profile_set_auth_reply
3847 /** \brief IKEv2: Set IKEv2 profile local/remote identification
3848 @param client_index - opaque cookie to identify the sender
3849 @param context - sender context, to match reply w/ request
3851 @param name - IKEv2 profile name
3852 @param is_local - Identification is local if non-zero, else remote
3853 @param id_type - Identification type
3854 @param data_len - Identification data length
3855 @param data - Identification data
3857 define ikev2_profile_set_id
3869 /** \brief Reply for IKEv2:
3870 @param context - returned sender context, to match reply w/ request
3871 @param retval - return code
3873 define ikev2_profile_set_id_reply
3879 /** \brief IKEv2: Set IKEv2 profile traffic selector parameters
3880 @param client_index - opaque cookie to identify the sender
3881 @param context - sender context, to match reply w/ request
3883 @param name - IKEv2 profile name
3884 @param is_local - Traffic selector is local if non-zero, else remote
3885 @param proto - Traffic selector IP protocol (if zero not relevant)
3886 @param start_port - The smallest port number allowed by traffic selector
3887 @param end_port - The largest port number allowed by traffic selector
3888 @param start_addr - The smallest address included in traffic selector
3889 @param end_addr - The largest address included in traffic selector
3891 define ikev2_profile_set_ts
3905 /** \brief Reply for IKEv2: Set IKEv2 profile traffic selector parameters
3906 @param context - returned sender context, to match reply w/ request
3907 @param retval - return code
3909 define ikev2_profile_set_ts_reply
3915 /** \brief IKEv2: Set IKEv2 local RSA private key
3916 @param client_index - opaque cookie to identify the sender
3917 @param context - sender context, to match reply w/ request
3919 @param key_file - Key file absolute path
3921 define ikev2_set_local_key
3929 /** \brief Reply for IKEv2: Set IKEv2 local key
3930 @param context - returned sender context, to match reply w/ request
3931 @param retval - return code
3933 define ikev2_set_local_key_reply
3939 /** \brief Tell client about a DHCP completion event
3940 @param client_index - opaque cookie to identify the sender
3941 @param pid - client pid registered to receive notification
3942 @param is_ipv6 - if non-zero the address is ipv6, else ipv4
3943 @param host_address - Host IP address
3944 @param router_address - Router IP address
3945 @param host_mac - Host MAC address
3947 define dhcp_compl_event
3953 u8 host_address[16];
3954 u8 router_address[16];
3958 /** \brief Add MAP domains
3959 @param client_index - opaque cookie to identify the sender
3960 @param context - sender context, to match reply w/ request
3961 @param ip6_prefix - Rule IPv6 prefix
3962 @param ip4_prefix - Rule IPv4 prefix
3963 @param ip6_src - MAP domain IPv6 BR address / Tunnel source
3964 @param ip6_prefix_len - Rule IPv6 prefix length
3965 @param ip4_prefix_len - Rule IPv4 prefix length
3966 @param ea_bits_len - Embedded Address bits length
3967 @param psid_offset - Port Set Identifider (PSID) offset
3968 @param psid_length - PSID length
3969 @param is_translation - MAP-E / MAP-T
3972 define map_add_domain
3981 u8 ip6_src_prefix_len;
3989 /** \brief Reply for MAP domain add
3990 @param context - returned sender context, to match reply w/ request
3991 @param index - MAP domain index
3992 @param retval - return code
3994 define map_add_domain_reply
4001 /** \brief Delete MAP domain
4002 @param client_index - opaque cookie to identify the sender
4003 @param context - sender context, to match reply w/ request
4004 @param index - MAP Domain index
4006 define map_del_domain
4013 /** \brief Reply for MAP domain del
4014 @param context - returned sender context, to match reply w/ request
4015 @param retval - return code
4017 define map_del_domain_reply
4023 /** \brief Add or Delete MAP rule from a domain (Only used for shared IPv4 per subscriber)
4024 @param client_index - opaque cookie to identify the sender
4025 @param context - sender context, to match reply w/ request
4026 @param index - MAP Domain index
4027 @param is_add - If 1 add rule, if 0 delete rule
4028 @param ip6_dst - MAP CE IPv6 address
4029 @param psid - Rule PSID
4031 define map_add_del_rule
4041 /** \brief Reply for MAP rule add/del
4042 @param context - returned sender context, to match reply w/ request
4043 @param retval - return code
4045 define map_add_del_rule_reply
4051 /** \brief Get list of map domains
4052 @param client_index - opaque cookie to identify the sender
4054 define map_domain_dump
4060 define map_domain_details
4078 define map_rule_dump
4085 define map_rule_details
4092 /** \brief Request for a single block of summary stats
4093 @param client_index - opaque cookie to identify the sender
4094 @param context - sender context, to match reply w/ request
4096 define map_summary_stats
4102 /** \brief Reply for map_summary_stats request
4103 @param context - sender context, to match reply w/ request
4104 @param retval - return code for request
4105 @param total_bindings -
4107 @param total_ip4_fragments -
4108 @param total_security_check -
4110 define map_summary_stats_reply
4117 u64 total_ip4_fragments;
4118 u64 total_security_check[2];
4121 /** \brief cop: enable/disable junk filtration features on an interface
4122 @param client_index - opaque cookie to identify the sender
4123 @param context - sender context, to match reply w/ request
4124 @param sw_if_inded - desired interface
4125 @param enable_disable - 1 => enable, 0 => disable
4128 define cop_interface_enable_disable
4136 /** \brief cop: interface enable/disable junk filtration reply
4137 @param context - returned sender context, to match reply w/ request
4138 @param retval - return code
4141 define cop_interface_enable_disable_reply
4147 /** \brief cop: enable/disable whitelist filtration features on an interface
4148 Note: the supplied fib_id must match in order to remove the feature!
4150 @param client_index - opaque cookie to identify the sender
4151 @param context - sender context, to match reply w/ request
4152 @param sw_if_index - interface handle, physical interfaces only
4153 @param fib_id - fib identifier for the whitelist / blacklist fib
4154 @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration
4155 @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration
4156 @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it
4159 define cop_whitelist_enable_disable
4170 /** \brief cop: interface enable/disable junk filtration reply
4171 @param context - returned sender context, to match reply w/ request
4172 @param retval - return code
4175 define cop_whitelist_enable_disable_reply
4181 /** \brief get_node_graph - get a copy of the vpp node graph
4182 including the current set of graph arcs.
4184 @param client_index - opaque cookie to identify the sender
4185 @param context - sender context, to match reply w/ request
4188 define get_node_graph
4194 /** \brief get_node_graph_reply
4195 @param context - returned sender context, to match reply w/ request
4196 @param retval - return code
4197 @param reply_in_shmem - result from vlib_node_serialize, in shared
4198 memory. Process with vlib_node_unserialize, remember to switch
4199 heaps and free the result.
4202 define get_node_graph_reply
4209 /** \brief Clear interface statistics
4210 @param client_index - opaque cookie to identify the sender
4211 @param context - sender context, to match reply w/ request
4212 @param sw_if_index - index of the interface to clear statistics
4214 define sw_interface_clear_stats
4221 /** \brief Reply to sw_interface_clear_stats
4222 @param context - sender context which was passed in the request
4223 @param retval - return code of the set flags request
4225 define sw_interface_clear_stats_reply
4231 /** \brief IOAM enable : Enable in-band OAM
4232 @param id - profile id
4233 @param seqno - To enable Seqno Processing
4234 @param analyse - Enabling analysis of iOAM at decap node
4235 @param pow_enable - Proof of Work enabled or not flag
4236 @param trace_enable - iOAM Trace enabled or not flag
4250 /** \brief iOAM Trace profile add / del response
4251 @param context - sender context, to match reply w/ request
4252 @param retval - return value for request
4254 define ioam_enable_reply
4260 /** \brief iOAM disable
4261 @param client_index - opaque cookie to identify the sender
4262 @param context - sender context, to match reply w/ request
4263 @param index - MAP Domain index
4272 /** \brief iOAM disable response
4273 @param context - sender context, to match reply w/ request
4274 @param retval - return value for request
4276 define ioam_disable_reply
4282 /** \brief Create host-interface
4283 @param client_index - opaque cookie to identify the sender
4284 @param context - sender context, to match reply w/ request
4285 @param host_if_name - interface name
4286 @param hw_addr - interface MAC
4287 @param use_random_hw_addr - use random generated MAC
4289 define af_packet_create
4294 u8 host_if_name[64];
4296 u8 use_random_hw_addr;
4299 /** \brief Create host-interface response
4300 @param context - sender context, to match reply w/ request
4301 @param retval - return value for request
4303 define af_packet_create_reply
4310 /** \brief Delete host-interface
4311 @param client_index - opaque cookie to identify the sender
4312 @param context - sender context, to match reply w/ request
4313 @param host_if_name - interface name
4315 define af_packet_delete
4320 u8 host_if_name[64];
4323 /** \brief Delete host-interface response
4324 @param context - sender context, to match reply w/ request
4325 @param retval - return value for request
4327 define af_packet_delete_reply
4333 /** \brief Add/del policer
4334 @param client_index - opaque cookie to identify the sender
4335 @param context - sender context, to match reply w/ request
4336 @param is_add - add policer if non-zero, else delete
4337 @param name - policer name
4340 @param cb - Committed Burst
4341 @param eb - Excess or Peak Burst
4342 @param rate_type - rate type
4343 @param round_type - rounding type
4344 @param type - policer algorithm
4345 @param color_aware - 0=color-blind, 1=color-aware
4346 @param conform_action_type - conform action type
4347 @param conform_dscp - DSCP for conform mar-and-transmit action
4348 @param exceed_action_type - exceed action type
4349 @param exceed_dscp - DSCP for exceed mar-and-transmit action
4350 @param violate_action_type - violate action type
4351 @param violate_dscp - DSCP for violate mar-and-transmit action
4353 define policer_add_del
4368 u8 conform_action_type;
4370 u8 exceed_action_type;
4372 u8 violate_action_type;
4376 /** \brief Add/del policer response
4377 @param context - sender context, to match reply w/ request
4378 @param retval - return value for request
4379 @param policer_index - for add, returned index of the new policer
4381 define policer_add_del_reply
4388 /** \brief Get list of policers
4389 @param client_index - opaque cookie to identify the sender
4390 @param context - sender context, to match reply w/ request
4391 @param match_name_valid - if 0 request all policers otherwise use match_name
4392 @param match_name - policer name
4399 u8 match_name_valid;
4403 /** \brief Policer operational state response.
4404 @param context - sender context, to match reply w/ request
4405 @param name - policer name
4408 @param cb - Committed Burst
4409 @param eb - Excess or Peak Burst
4410 @param rate_type - rate type
4411 @param round_type - rounding type
4412 @param type - policer algorithm
4413 @param conform_action_type - conform action type
4414 @param conform_dscp - DSCP for conform mar-and-transmit action
4415 @param exceed_action_type - exceed action type
4416 @param exceed_dscp - DSCP for exceed mar-and-transmit action
4417 @param violate_action_type - violate action type
4418 @param violate_dscp - DSCP for violate mar-and-transmit action
4419 @param single_rate - 1 = single rate policer, 0 = two rate policer
4420 @param color_aware - for hierarchical policing
4421 @param scale - power-of-2 shift amount for lower rates
4422 @param cir_tokens_per_period - number of tokens for each period
4423 @param pir_tokens_per_period - number of tokens for each period for 2-rate policer
4424 @param current_limit - current limit
4425 @param current_bucket - current bucket
4426 @param extended_limit - extended limit
4427 @param extended_bucket - extended bucket
4428 @param last_update_time - last update time
4430 define policer_details
4442 u8 conform_action_type;
4444 u8 exceed_action_type;
4446 u8 violate_action_type;
4451 u32 cir_tokens_per_period;
4452 u32 pir_tokens_per_period;
4456 u32 extended_bucket;
4457 u64 last_update_time;
4460 /** \brief Set/unset policer classify interface
4461 @param client_index - opaque cookie to identify the sender
4462 @param context - sender context, to match reply w/ request
4463 @param sw_if_index - interface to set/unset policer classify
4464 @param ip4_table_index - ip4 classify table index (~0 for skip)
4465 @param ip6_table_index - ip6 classify table index (~0 for skip)
4466 @param l2_table_index - l2 classify table index (~0 for skip)
4467 @param is_add - Set if non-zero, else unset
4468 Note: User is recommeneded to use just one valid table_index per call.
4469 (ip4_table_index, ip6_table_index, or l2_table_index)
4471 define policer_classify_set_interface
4476 u32 ip4_table_index;
4477 u32 ip6_table_index;
4482 /** \brief Set/unset policer classify interface response
4483 @param context - sender context, to match reply w/ request
4484 @param retval - return value for request
4486 define policer_classify_set_interface_reply
4492 /** \brief Get list of policer classify interfaces and tables
4493 @param client_index - opaque cookie to identify the sender
4494 @param context - sender context, to match reply w/ request
4495 @param type - classify table type
4497 define policer_classify_dump
4504 /** \brief Policer iclassify operational state response.
4505 @param context - sender context, to match reply w/ request
4506 @param sw_if_index - software interface index
4507 @param table_index - classify table index
4509 define policer_classify_details
4516 /** \brief Create netmap
4517 @param client_index - opaque cookie to identify the sender
4518 @param context - sender context, to match reply w/ request
4519 @param netmap_if_name - interface name
4520 @param hw_addr - interface MAC
4521 @param use_random_hw_addr - use random generated MAC
4522 @param is_pipe - is pipe
4523 @param is_master - 0=slave, 1=master
4525 define netmap_create
4530 u8 netmap_if_name[64];
4532 u8 use_random_hw_addr;
4537 /** \brief Create netmap response
4538 @param context - sender context, to match reply w/ request
4539 @param retval - return value for request
4541 define netmap_create_reply
4547 /** \brief Delete netmap
4548 @param client_index - opaque cookie to identify the sender
4549 @param context - sender context, to match reply w/ request
4550 @param netmap_if_name - interface name
4552 define netmap_delete
4557 u8 netmap_if_name[64];
4560 /** \brief Delete netmap response
4561 @param context - sender context, to match reply w/ request
4562 @param retval - return value for request
4564 define netmap_delete_reply
4570 /** \brief Dump mpls gre tunnel table
4571 @param client_index - opaque cookie to identify the sender
4572 @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
4574 define mpls_gre_tunnel_dump
4581 /** \brief mpls gre tunnel operational state response
4582 @param tunnel_index - gre tunnel identifier
4583 @param intfc_address - interface ipv4 addr
4584 @param mask_width - interface ipv4 addr mask
4585 @param hw_if_index - interface id
4587 @param tunnel_src - tunnel source ipv4 addr
4588 @param tunnel_dst - tunnel destination ipv4 addr
4589 @param outer_fib_index - gre tunnel identifier
4590 @param encap_index - reference to mpls label table
4591 @param nlabels - number of resolved labels
4592 @param labels - resolved labels
4594 define mpls_gre_tunnel_details
4600 u32 inner_fib_index;
4607 u32 outer_fib_index;
4609 u32 labels[nlabels];
4612 /** \brief Dump mpls eth tunnel table
4613 @param client_index - opaque cookie to identify the sender
4614 @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels
4616 define mpls_eth_tunnel_dump
4623 /** \brief mpls eth tunnel operational state response
4624 @param tunnel_index - eth tunnel identifier
4625 @param intfc_address - interface ipv4 addr
4626 @param mask_width - interface ipv4 addr mask
4627 @param hw_if_index - interface id
4629 @param tunnel_dst_mac -
4630 @param tx_sw_if_index -
4631 @param encap_index - reference to mpls label table
4632 @param nlabels - number of resolved labels
4633 @param labels - resolved labels
4635 define mpls_eth_tunnel_details
4641 u32 inner_fib_index;
4646 u8 tunnel_dst_mac[6];
4649 u32 labels[nlabels];
4652 /** \brief Dump mpls fib table
4653 @param client_index - opaque cookie to identify the sender
4654 @param fib_index - mpls fib entry identifier or -1 in case of all entries
4656 define mpls_fib_encap_dump
4662 /** \brief mpls fib encap table response
4663 @param fib_index - fib table id
4664 @param dest - destination ipv4 addr
4666 @param entry_index - reference to mpls label table
4667 @param nlabels - number of resolved labels
4668 @param labels - resolved labels
4670 define mpls_fib_encap_details
4679 u32 labels[nlabels];
4682 /** \brief Classify get table IDs request
4683 @param client_index - opaque cookie to identify the sender
4684 @param context - sender context, to match reply w/ request
4686 define classify_table_ids
4692 /** \brief Reply for classify get table IDs request
4693 @param context - sender context which was passed in the request
4694 @param count - number of ids returned in response
4695 @param ids - array of classify table ids
4697 define classify_table_ids_reply
4705 /** \brief Classify table ids by interface index request
4706 @param client_index - opaque cookie to identify the sender
4707 @param context - sender context, to match reply w/ request
4708 @param sw_if_index - index of the interface
4710 define classify_table_by_interface
4717 /** \brief Reply for classify table id by interface index request
4718 @param context - sender context which was passed in the request
4719 @param count - number of ids returned in response
4720 @param sw_if_index - index of the interface
4721 @param l2_table_id - l2 classify table index
4722 @param ip4_table_id - ip4 classify table index
4723 @param ip6_table_id - ip6 classify table index
4725 define classify_table_by_interface_reply
4735 /** \brief Classify table info
4736 @param client_index - opaque cookie to identify the sender
4737 @param context - sender context, to match reply w/ request
4738 @param table_id - classify table index
4740 define classify_table_info
4747 /** \brief Reply for classify table info request
4748 @param context - sender context which was passed in the request
4749 @param count - number of ids returned in response
4750 @param table_id - classify table index
4751 @param nbuckets - number of buckets when adding a table
4752 @param match_n_vectors - number of match vectors
4753 @param skip_n_vectors - number of skip_n_vectors
4754 @param active_sessions - number of sessions (active entries)
4755 @param next_table_index - index of next table
4756 @param miss_next_index - index of miss table
4757 @param mask[] - match mask
4759 define classify_table_info_reply
4765 u32 match_n_vectors;
4767 u32 active_sessions;
4768 u32 next_table_index;
4769 u32 miss_next_index;
4771 u8 mask[mask_length];
4774 /** \brief Classify sessions dump request
4775 @param client_index - opaque cookie to identify the sender
4776 @param context - sender context, to match reply w/ request
4777 @param table_id - classify table index
4779 define classify_session_dump
4786 /** \brief Reply for classify table session dump request
4787 @param context - sender context which was passed in the request
4788 @param count - number of ids returned in response
4789 @param table_id - classify table index
4790 @param hit_next_index - hit_next_index of session
4791 @param opaque_index - for add, opaque_index of session
4792 @param advance - advance value of session
4793 @param match[] - match value for session
4795 define classify_session_details
4804 u8 match[match_length];
4807 /** \brief Configure IPFIX exporter process request
4808 @param client_index - opaque cookie to identify the sender
4809 @param context - sender context, to match reply w/ request
4810 @param collector_address - address of IPFIX collector
4811 @param collector_port - port of IPFIX collector
4812 @param src_address - address of IPFIX exporter
4813 @param vrf_id - VRF / fib table ID
4814 @param path_mtu - Path MTU between exporter and collector
4815 @param template_interval - number of seconds after which to resend template
4816 @param udp_checksum - UDP checksum calculation enable flag
4818 define set_ipfix_exporter
4822 u8 collector_address[16];
4827 u32 template_interval;
4831 /** \brief Reply to IPFIX exporter configure request
4832 @param context - sender context which was passed in the request
4834 define set_ipfix_exporter_reply
4840 /** \brief IPFIX exporter dump request
4841 @param client_index - opaque cookie to identify the sender
4842 @param context - sender context, to match reply w/ request
4844 define ipfix_exporter_dump
4850 /** \brief Reply to IPFIX exporter dump request
4851 @param context - sender context which was passed in the request
4852 @param collector_address - address of IPFIX collector
4853 @param collector_port - port of IPFIX collector
4854 @param src_address - address of IPFIX exporter
4855 @param fib_index - fib table index
4856 @param path_mtu - Path MTU between exporter and collector
4857 @param template_interval - number of seconds after which to resend template
4858 @param udp_checksum - UDP checksum calculation enable flag
4860 define ipfix_exporter_details
4863 u8 collector_address[16];
4868 u32 template_interval;
4872 /** \brief IPFIX classify stream configure request
4873 @param client_index - opaque cookie to identify the sender
4874 @param context - sender context, to match reply w/ request
4875 @param domain_id - domain ID reported in IPFIX messages for classify stream
4876 @param src_port - source port of UDP session for classify stream
4878 define set_ipfix_classify_stream {
4885 /** \brief IPFIX classify stream configure response
4886 @param context - sender context, to match reply w/ request
4887 @param retval - return value for request
4889 define set_ipfix_classify_stream_reply {
4894 /** \brief IPFIX classify stream dump request
4895 @param client_index - opaque cookie to identify the sender
4896 @param context - sender context, to match reply w/ request
4898 define ipfix_classify_stream_dump {
4903 /** \brief Reply to IPFIX classify stream dump request
4904 @param context - sender context, to match reply w/ request
4905 @param domain_id - domain ID reported in IPFIX messages for classify stream
4906 @param src_port - source port of UDP session for classify stream
4908 define ipfix_classify_stream_details {
4914 /** \brief IPFIX add or delete classifier table request
4915 @param client_index - opaque cookie to identify the sender
4916 @param context - sender context, to match reply w/ request
4917 @param table_id - classifier table ID
4918 @param ip_version - version of IP used in the classifier table
4919 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
4921 define ipfix_classify_table_add_del {
4926 u8 transport_protocol;
4930 /** \brief IPFIX add classifier table response
4931 @param context - sender context which was passed in the request
4933 define ipfix_classify_table_add_del_reply {
4938 /** \brief IPFIX classify tables dump request
4939 @param client_index - opaque cookie to identify the sender
4940 @param context - sender context, to match reply w/ request
4942 define ipfix_classify_table_dump {
4947 /** \brief Reply to IPFIX classify tables dump request
4948 @param context - sender context, to match reply w/ request
4949 @param table_id - classifier table ID
4950 @param ip_version - version of IP used in the classifier table
4951 @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
4953 define ipfix_classify_table_details {
4957 u8 transport_protocol;
4960 /** \brief Set/unset flow classify interface
4961 @param client_index - opaque cookie to identify the sender
4962 @param context - sender context, to match reply w/ request
4963 @param sw_if_index - interface to set/unset flow classify
4964 @param ip4_table_index - ip4 classify table index (~0 for skip)
4965 @param ip6_table_index - ip6 classify table index (~0 for skip)
4966 @param l2_table_index - l2 classify table index (~0 for skip)
4967 @param is_add - Set if non-zero, else unset
4968 Note: User is recommeneded to use just one valid table_index per call.
4969 (ip4_table_index, ip6_table_index, or l2_table_index)
4971 define flow_classify_set_interface {
4975 u32 ip4_table_index;
4976 u32 ip6_table_index;
4980 /** \brief Set/unset flow classify interface response
4981 @param context - sender context, to match reply w/ request
4982 @param retval - return value for request
4984 define flow_classify_set_interface_reply {
4989 /** \brief Get list of flow classify interfaces and tables
4990 @param client_index - opaque cookie to identify the sender
4991 @param context - sender context, to match reply w/ request
4992 @param type - classify table type
4994 define flow_classify_dump {
5000 /** \brief Flow classify operational state response.
5001 @param context - sender context, to match reply w/ request
5002 @param sw_if_index - software interface index
5003 @param table_index - classify table index
5005 define flow_classify_details {
5011 /** \brief Enable/Disable span to mirror traffic from one interface to another
5012 @param client_index - opaque cookie to identify the sender
5013 @param context - sender context which was passed in the request
5014 @param sw_if_index_from - interface to be mirorred
5015 @param sw_if_index_to - interface where the traffic is mirrored
5016 @param enable - 1 enable SPAN, 0 SPAN on given interface
5018 define sw_interface_span_enable_disable{
5021 u32 sw_if_index_from;
5026 /** \brief Reply to SPAN enable/disable request
5027 @param context - sender context which was passed in the request
5029 define sw_interface_span_enable_disable_reply {
5034 /** \brief SPAN dump request
5035 @param client_index - opaque cookie to identify the sender
5036 @param context - sender context, to match reply w/ request
5038 define sw_interface_span_dump {
5043 /** \brief Reply to SPAN dump request
5044 @param context - sender context which was passed in the request
5045 @param sw_if_index_from - mirorred interface
5046 @param sw_if_index_to - interface where the traffic is mirrored
5048 define sw_interface_span_details {
5050 u32 sw_if_index_from;
5054 /** \brief Query relative index via node names
5055 @param client_index - opaque cookie to identify the sender
5056 @param context - sender context, to match reply w/ request
5057 @param node_name - name of node to find relative index from
5058 @param next_name - next node from node_name to find relative index of
5060 define get_next_index
5068 /** \brief Reply for get next node index
5069 @param context - sender context which was passed in the request
5070 @param retval - return value
5071 @param next_index - index of the next_node
5073 define get_next_index_reply
5080 /** \brief PacketGenerator create interface request
5081 @param client_index - opaque cookie to identify the sender
5082 @param context - sender context, to match reply w/ request
5083 @param interface_id - interface index
5085 define pg_create_interface
5092 /** \brief PacketGenerator create interface response
5093 @param context - sender context, to match reply w/ request
5094 @param retval - return value for request
5096 define pg_create_interface_reply
5103 /** \brief PacketGenerator capture packets on given interface request
5104 @param client_index - opaque cookie to identify the sender
5105 @param context - sender context, to match reply w/ request
5106 @param interface_id - pg interface index
5107 @param is_enabled - 1 if enabling streams, 0 if disabling
5108 @param count - number of packets to be captured
5109 @param pcap_file - pacp file name to store captured packets
5118 u32 pcap_name_length;
5119 u8 pcap_file_name[pcap_name_length];
5122 /** \brief PacketGenerator capture packets response
5123 @param context - sender context, to match reply w/ request
5124 @param retval - return value for request
5126 define pg_capture_reply
5132 /** \brief Enable / disable packet generator request
5133 @param client_index - opaque cookie to identify the sender
5134 @param context - sender context, to match reply w/ request
5135 @param is_enabled - 1 if enabling streams, 0 if disabling
5136 @param stream - stream name to be enable/disabled, if not specified handle all streams
5138 define pg_enable_disable
5143 u32 stream_name_length;
5144 u8 stream_name[stream_name_length];
5147 /** \brief Reply for enable / disable packet generator
5148 @param context - returned sender context, to match reply w/ request
5149 @param retval - return code
5151 define pg_enable_disable_reply
5157 /** \brief Configure IP source and L4 port-range check
5158 @param client_index - opaque cookie to identify the sender
5159 @param context - sender context, to match reply w/ request
5160 @param is_ip6 - 1 if source address type is IPv6
5161 @param is_add - 1 if add, 0 if delete
5162 @param mask_length - mask length for address entry
5163 @param address - array of address bytes
5164 @param number_of_ranges - length of low_port and high_port arrays (must match)
5165 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
5166 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
5167 @param vrf_id - fib table/vrf id to associate the source and port-range check with
5168 @note To specify a single port set low_port and high_port entry the same
5170 define ip_source_and_port_range_check_add_del
5178 u8 number_of_ranges;
5184 /** \brief Configure IP source and L4 port-range check reply
5185 @param context - returned sender context, to match reply w/ request
5186 @param retval - return code
5188 define ip_source_and_port_range_check_add_del_reply
5194 /** \brief Set interface source and L4 port-range request
5195 @param client_index - opaque cookie to identify the sender
5196 @param context - sender context, to match reply w/ request
5197 @param interface_id - interface index
5198 @param tcp_vrf_id - VRF associated with source and TCP port-range check
5199 @param udp_vrf_id - VRF associated with source and TCP port-range check
5201 define ip_source_and_port_range_check_interface_add_del
5213 /** \brief Set interface source and L4 port-range response
5214 @param context - sender context, to match reply w/ request
5215 @param retval - return value for request
5217 define ip_source_and_port_range_check_interface_add_del_reply
5223 /** \brief Add / del ipsec gre tunnel request
5224 @param client_index - opaque cookie to identify the sender
5225 @param context - sender context, to match reply w/ request
5226 @param local_sa_id - local SA id
5227 @param remote_sa_id - remote SA id
5228 @param is_add - 1 if adding the tunnel, 0 if deleting
5229 @param src_address - tunnel source address
5230 @param dst_address - tunnel destination address
5232 define ipsec_gre_add_del_tunnel {
5242 /** \brief Reply for add / del ipsec gre tunnel request
5243 @param context - returned sender context, to match reply w/ request
5244 @param retval - return code
5245 @param sw_if_index - software index of the new ipsec gre tunnel
5247 define ipsec_gre_add_del_tunnel_reply {
5253 /** \brief Dump ipsec gre tunnel table
5254 @param client_index - opaque cookie to identify the sender
5255 @param context - sender context, to match reply w/ request
5256 @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
5258 define ipsec_gre_tunnel_dump {
5264 /** \brief mpls gre tunnel operational state response
5265 @param context - returned sender context, to match reply w/ request
5266 @param sw_if_index - software index of the ipsec gre tunnel
5267 @param local_sa_id - local SA id
5268 @param remote_sa_id - remote SA id
5269 @param src_address - tunnel source address
5270 @param dst_address - tunnel destination address
5272 define ipsec_gre_tunnel_details {
5281 /** \brief Delete sub interface request
5282 @param client_index - opaque cookie to identify the sender
5283 @param context - sender context, to match reply w/ request
5284 @param sw_if_index - sw index of the interface that was created by create_subif
5286 define delete_subif {
5292 /** \brief Delete sub interface response
5293 @param context - sender context, to match reply w/ request
5294 @param retval - return code for the request
5296 define delete_subif_reply {
5301 /** \brief DPDK interface HQoS pipe profile set request
5302 @param client_index - opaque cookie to identify the sender
5303 @param context - sender context, to match reply w/ request
5304 @param sw_if_index - the interface
5305 @param subport - subport ID
5306 @param pipe - pipe ID within its subport
5307 @param profile - pipe profile ID
5309 define sw_interface_set_dpdk_hqos_pipe {
5318 /** \brief DPDK interface HQoS pipe profile set reply
5319 @param context - sender context, to match reply w/ request
5320 @param retval - request return code
5322 define sw_interface_set_dpdk_hqos_pipe_reply {
5327 /** \brief DPDK interface HQoS subport parameters set request
5328 @param client_index - opaque cookie to identify the sender
5329 @param context - sender context, to match reply w/ request
5330 @param sw_if_index - the interface
5331 @param subport - subport ID
5332 @param tb_rate - subport token bucket rate (measured in bytes/second)
5333 @param tb_size - subport token bucket size (measured in credits)
5334 @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second)
5335 @param tc_period - enforcement period for rates (measured in milliseconds)
5337 define sw_interface_set_dpdk_hqos_subport {
5348 /** \brief DPDK interface HQoS subport parameters set reply
5349 @param context - sender context, to match reply w/ request
5350 @param retval - request return code
5352 define sw_interface_set_dpdk_hqos_subport_reply {
5357 /** \brief DPDK interface HQoS tctbl entry set request
5358 @param client_index - opaque cookie to identify the sender
5359 @param context - sender context, to match reply w/ request
5360 @param sw_if_index - the interface
5361 @param entry - entry index ID
5362 @param tc - traffic class (0 .. 3)
5363 @param queue - traffic class queue (0 .. 3)
5365 define sw_interface_set_dpdk_hqos_tctbl {
5374 /** \brief DPDK interface HQoS tctbl entry set reply
5375 @param context - sender context, to match reply w/ request
5376 @param retval - request return code
5378 define sw_interface_set_dpdk_hqos_tctbl_reply {
5383 /** \brief L2 interface pbb tag rewrite configure request
5384 @param client_index - opaque cookie to identify the sender
5385 @param context - sender context, to match reply w/ request
5386 @param sw_if_index - interface the operation is applied to
5387 @param vtr_op - Choose from l2_vtr_op_t enum values
5388 @param inner_tag - needed for translate_qinq vtr op only
5389 @param outer_tag - needed for translate_qinq vtr op only
5390 @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op
5391 @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op
5392 @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op
5393 @param i_sid - I-tag service id, needed for any push or translate qinq vtr op
5395 define l2_interface_pbb_tag_rewrite
5408 /** \brief L2 interface pbb tag rewrite response
5409 @param context - sender context, to match reply w/ request
5410 @param retval - return code for the request
5412 define l2_interface_pbb_tag_rewrite_reply
5418 /** \brief Punt traffic to the host
5419 @param client_index - opaque cookie to identify the sender
5420 @param context - sender context, to match reply w/ request
5421 @param is_add - add punt if non-zero, else delete
5422 @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All
5423 @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported
5424 @param l4_port - TCP/UDP port to be punted
5435 /** \brief Reply to the punt request
5436 @param context - sender context which was passed in the request
5437 @param retval - return code of punt request
5445 /** \brief Dump ipsec policy database data
5446 @param client_index - opaque cookie to identify the sender
5447 @param context - sender context, to match reply w/ request
5448 @param spd_id - SPD instance id
5449 @param sa_id - SA id, optional, set to ~0 to see all policies in SPD
5451 define ipsec_spd_dump {
5458 /** \brief IPsec policy database response
5459 @param context - sender context which was passed in the request
5460 @param spd_id - SPD instance id
5461 @param priority - numeric value to control policy evaluation order
5462 @param is_outbound - [1|0] to indicate if direction is [out|in]bound
5463 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
5464 @param local_start_addr - first address in local traffic selector range
5465 @param local_stop_addr - last address in local traffic selector range
5466 @param local_start_port - first port in local traffic selector range
5467 @param local_stop_port - last port in local traffic selector range
5468 @param remote_start_addr - first address in remote traffic selector range
5469 @param remote_stop_addr - last address in remote traffic selector range
5470 @param remote_start_port - first port in remote traffic selector range
5471 @param remote_stop_port - last port in remote traffic selector range
5472 @param protocol - traffic selector protocol
5473 @param policy - policy action
5474 @param sa_id - SA id
5475 @param bytes - byte count of packets matching this policy
5476 @param packets - count of packets matching this policy
5479 define ipsec_spd_details {
5485 u8 local_start_addr[16];
5486 u8 local_stop_addr[16];
5487 u16 local_start_port;
5488 u16 local_stop_port;
5489 u8 remote_start_addr[16];
5490 u8 remote_stop_addr[16];
5491 u16 remote_start_port;
5492 u16 remote_stop_port;
5500 /** \brief Feature path enable/disable request
5501 @param client_index - opaque cookie to identify the sender
5502 @param context - sender context, to match reply w/ request
5503 @param sw_if_index - the interface
5504 @param enable - 1 = on, 0 = off
5506 define feature_enable_disable {
5512 u8 feature_name[64];
5515 /** \brief Reply to the eature path enable/disable request
5516 @param context - sender context which was passed in the request
5517 @param retval - return code for the request
5519 define feature_enable_disable_reply
5525 /** \brief Set / clear software interface tag
5526 @param client_index - opaque cookie to identify the sender
5527 @param context - sender context, to match reply w/ request
5528 @param sw_if_index - the interface
5529 @param add_del - 1 = add, 0 = delete
5530 @param tag - an ascii tag
5532 define sw_interface_tag_add_del {
5540 /** \brief Reply to set / clear software interface tag
5541 @param context - sender context which was passed in the request
5542 @param retval - return code for the request
5544 define sw_interface_tag_add_del_reply