FD.io VPP  v16.12-rc0-308-g931be3a
Vector Packet Processing
vpe.api
Go to the documentation of this file.
1 /* Hey Emacs use -*- mode: C -*- */
2 /*
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:
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 
17 /** \file
18 
19  This file defines vpe control-plane API messages which are generally
20  called through a shared memory interface.
21 */
22 
23 
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
29 */
30 define want_interface_events
31 {
36 };
37 
38 /** \brief Reply for interface events registration
39  @param context - returned sender context, to match reply w/ request
40  @param retval - return code
41 */
42 define want_interface_events_reply
43 {
46 };
47 
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
63  @param sub_default
64  @param sub_outer_vlan_id_any
65  @param sub_inner_vlan_id_any
66  @param vtr_op - vlan tag rewrite operation
67  @param vtr_push_dot1q
68  @param vtr_tag1
69  @param vtr_tag2
70 */
71 define sw_interface_details
72 {
75 
76  /* index of sup interface (e.g. hw interface).
77  equal to sw_if_index for super hw interface. */
79 
80  /* Layer 2 address, if applicable */
82  u8 l2_address[8];
83 
84  /* Interface name */
85  u8 interface_name[64];
86 
87  /* 1 = up, 0 = down */
90 
91  /* 1 = half duplex, 2 = full duplex */
93 
94  /* 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G */
96 
97  /* MTU */
99 
100  /* Subinterface ID. A number 0-N to uniquely identify this subinterface under the super interface */
102 
103  /* 0 = dot1q, 1=dot1ad */
105 
106  /* Number of tags 0-2 */
114 
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
120 };
121 
122 /** \brief Set flags on the interface
123  @param client_index - opaque cookie to identify the sender
124  @param context - sender context, to match reply w/ request
125  @param sw_if_index - index of the interface to set flags on
126  @param admin_up_down - set the admin state, 1 = up, 0 = down
127  @param link_up_down - Oper state sent on change event, not used in config.
128  @param deleted - interface was deleted
129 */
130 define sw_interface_set_flags
131 {
135  /* 1 = up, 0 = down */
139 };
140 
141 /** \brief Reply to sw_interface_set_flags
142  @param context - sender context which was passed in the request
143  @param retval - return code of the set flags request
144 */
145 define sw_interface_set_flags_reply
146 {
149 };
150 
151 /* works */
152 define sw_interface_dump
153 {
157  u8 name_filter[49];
158 };
159 
160 /** \brief Set or delete one or all ip addresses on a specified interface
161  @param client_index - opaque cookie to identify the sender
162  @param context - sender context, to match reply w/ request
163  @param sw_if_index - index of the interface to add/del addresses
164  @param is_add - add address if non-zero, else delete
165  @param is_ipv6 - if non-zero the address is ipv6, else ipv4
166  @param del_all - if non-zero delete all addresses on the interface
167  @param address_length - address length in bytes, 4 for ip4, 16 for ip6
168  @param address - array of address bytes
169 */
170 define sw_interface_add_del_address
171 {
179  u8 address[16];
180 };
181 
182 /** \brief Reply for interface events registration
183  @param context - returned sender context, to match reply w/ request
184  @param retval - return code
185 */
186 define sw_interface_add_del_address_reply
187 {
190 };
191 
192 /** \brief Associate the specified interface with a fib table
193  @param client_index - opaque cookie to identify the sender
194  @param context - sender context, to match reply w/ request
195  @param sw_if_index - index of the interface
196  @param is_ipv6 - if non-zero ipv6, else ipv4
197  @param vrf_id - fib table/vrd id to associate the interface with
198 */
199 define sw_interface_set_table
200 {
206 };
207 
208 /** \brief Reply for interface events registration
209  @param context - returned sender context, to match reply w/ request
210  @param retval - return code
211 */
212 define sw_interface_set_table_reply
213 {
216 };
217 
218 /** \brief Enable or Disable MPLS on and interface
219  @param client_index - opaque cookie to identify the sender
220  @param context - sender context, to match reply w/ request
221  @param sw_if_index - index of the interface
222  @param enable - if non-zero enable, else disable
223 */
224 define sw_interface_set_mpls_enable
225 {
230 };
231 
232 /** \brief Reply for MPLS state on an interface
233  @param context - returned sender context, to match reply w/ request
234  @param retval - return code
235 */
236 define sw_interface_set_mpls_enable_reply
237 {
240 };
241 
242 /** \brief Initialize a new tap interface with the given paramters
243  @param client_index - opaque cookie to identify the sender
244  @param context - sender context, to match reply w/ request
245  @param use_random_mac - let the system generate a unique mac address
246  @param tap_name - name to associate with the new interface
247  @param mac_address - mac addr to assign to the interface if use_radom not set
248 */
249 define tap_connect
250 {
254  u8 tap_name[64];
255  u8 mac_address[6];
258 };
259 
260 /** \brief Reply for tap connect request
261  @param context - returned sender context, to match reply w/ request
262  @param retval - return code
263  @param sw_if_index - software index allocated for the new tap interface
264 */
265 define tap_connect_reply
266 {
270 };
271 
272 /** \brief Modify a tap interface with the given paramters
273  @param client_index - opaque cookie to identify the sender
274  @param context - sender context, to match reply w/ request
275  @param sw_if_index - interface index of existing tap interface
276  @param use_random_mac - let the system generate a unique mac address
277  @param tap_name - name to associate with the new interface
278  @param mac_address - mac addr to assign to the interface if use_radom not set
279 */
280 define tap_modify
281 {
286  u8 tap_name[64];
287  u8 mac_address[6];
290 };
291 
292 /** \brief Reply for tap modify request
293  @param context - returned sender context, to match reply w/ request
294  @param retval - return code
295  @param sw_if_index - software index if the modified tap interface
296 */
297 define tap_modify_reply
298 {
302 };
303 
304 /** \brief Delete tap interface
305  @param client_index - opaque cookie to identify the sender
306  @param context - sender context, to match reply w/ request
307  @param sw_if_index - interface index of existing tap interface
308 */
309 define tap_delete
310 {
314 };
315 
316 /** \brief Reply for tap delete request
317  @param context - returned sender context, to match reply w/ request
318  @param retval - return code
319 */
320 define tap_delete_reply
321 {
324 };
325 
326 /** \brief Dump tap interfaces request */
327 define sw_interface_tap_dump
328 {
331 };
332 
333 /** \brief Reply for tap dump request
334  @param sw_if_index - software index of tap interface
335  @param dev_name - Linux tap device name
336 */
337 define sw_interface_tap_details
338 {
341  u8 dev_name[64];
342 };
343 
344 /** \brief Create a new subinterface with the given vlan id
345  @param client_index - opaque cookie to identify the sender
346  @param context - sender context, to match reply w/ request
347  @param sw_if_index - software index of the new vlan's parent interface
348  @param vlan_id - vlan tag of the new interface
349 */
350 define create_vlan_subif
351 {
356 };
357 
358 /** \brief Reply for the vlan subinterface create request
359  @param context - returned sender context, to match reply w/ request
360  @param retval - return code
361  @param sw_if_index - software index allocated for the new subinterface
362 */
363 define create_vlan_subif_reply
364 {
368 };
369 
370 /** \brief MPLS Route Add / del route
371  @param client_index - opaque cookie to identify the sender
372  @param context - sender context, to match reply w/ request
373  @param mr_label - The MPLS label value
374  @param mr_eos - The End of stack bit
375  @param mr_table_id - The MPLS table-id the route is added in
376  @param mr_classify_table_index - If this is a classify route,
377  this is the classify table index
378  @param mr_create_table_if_needed - If the MPLS or IP tables do not exist,
379  create them
380  @param mr_is_add - Is this a route add or delete
381  @param mr_is_classify - Is this route result a classify
382  @param mr_is_multipath - Is this route update a multipath - i.e. is this
383  a path addition to an existing route
384  @param mr_is_resolve_host - Recurse resolution constraint via a host prefix
385  @param mr_is_resolve_attached - Recurse resolution constraint via attached prefix
386  @param mr_next_hop_proto_is_ip4 - The next-hop is IPV4
387  @param mr_next_hop_weight - The weight, for UCMP
388  @param mr_next_hop[16] - the nextop address
389  @param mr_next_hop_sw_if_index - the next-hop SW interface
390  @param mr_next_hop_table_id - the next-hop table-id (if appropriate)
391  @param mr_next_hop_out_label - the next-hop output label
392 */
393 define mpls_route_add_del
394 {
409  u8 mr_next_hop[16];
413 };
414 
415 /** \brief Reply for MPLS route add / del request
416  @param context - returned sender context, to match reply w/ request
417  @param retval - return code
418 */
419 define mpls_route_add_del_reply
420 {
423 };
424 
425 /** \brief Dump MPLS fib table
426  @param client_index - opaque cookie to identify the sender
427 */
428 define mpls_fib_dump
429 {
432 };
433 
434 /** \brief mpls FIB table response
435  @param table_id - MPLS fib table id
436  @param s_bit - End-of-stack bit
437  @param label - MPLS label value
438 */
439 define mpls_fib_details
440 {
445 };
446 
447 /** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create
448  a per-prefix label entry.
449  @param client_index - opaque cookie to identify the sender
450  @param context - sender context, to match reply w/ request
451  @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in
452  @param mb_label - The MPLS label value to bind
453  @param mb_ip_table_id - The IP table-id of the IP prefix to bind to.
454  @param mb_create_table_if_needed - Create either/both tables if required.
455  @param mb_is_bind - Bind or unbind
456  @param mb_is_ip4 - The prefix to bind to is IPv4
457  @param mb_address_length - Length of IP prefix
458  @param mb_address[16] - IP prefix/
459 */
460 define mpls_ip_bind_unbind
461 {
471  u8 mb_address[16];
472 };
473 
474 /** \brief Reply for MPLS IP bind/unbind request
475  @param context - returned sender context, to match reply w/ request
476  @param retval - return code
477 */
478 define mpls_ip_bind_unbind_reply
479 {
482 };
483 
484 /** \brief Add / del route request
485  @param client_index - opaque cookie to identify the sender
486  @param context - sender context, to match reply w/ request
487  @param sw_if_index - software index of the new vlan's parent interface
488  @param vrf_id - fib table /vrf associated with the route
489  @param lookup_in_vrf -
490  @param resolve_attempts -
491  @param classify_table_index -
492  @param create_vrf_if_needed -
493  @param resolve_if_needed -
494  @param is_add - 1 if adding the route, 0 if deleting
495  @param is_drop - Drop the packet
496  @param is_unreach - Drop the packet and rate limit send ICMP unreachable
497  @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
498  @param is_ipv6 - 0 if an ip4 route, else ip6
499  @param is_local -
500  @param is_classify -
501  @param is_multipath - Set to 1 if this is a multipath route, else 0
502  @param not_last - Is last or not last msg in group of multiple add/del msgs
503  @param next_hop_weight -
504  @param dst_address_length -
505  @param dst_address[16] -
506  @param next_hop_address[16] -
507 */
508 define ip_add_del_route
509 {
530  /* Is last/not-last message in group of multiple add/del messages. */
534  u8 dst_address[16];
535  u8 next_hop_address[16];
536 };
537 
538 /** \brief Reply for add / del route request
539  @param context - returned sender context, to match reply w/ request
540  @param retval - return code
541 */
542 define ip_add_del_route_reply
543 {
546 };
547 
548 /** \brief Add / del MPLS encapsulation request
549  @param client_index - opaque cookie to identify the sender
550  @param context - sender context, to match reply w/ request
551  @param vrf_id - vrf id
552  @param dst_address[4] -
553  @param is_add - 1 if adding the encap, 0 if deleting
554  @param nlabels - number of labels
555  @param labels - array of labels
556 */
557 define mpls_add_del_encap
558 {
562  u8 dst_address[4];
563  /* 1 = add, 0 = delete */
566  u32 labels[0];
567 };
568 
569 /** \brief Reply for add / del encapsulation request
570  @param context - returned sender context, to match reply w/ request
571  @param retval - return code
572 */
573 define mpls_add_del_encap_reply
574 {
577 };
578 
579 /** \brief Proxy ARP add / del request
580  @param client_index - opaque cookie to identify the sender
581  @param context - sender context, to match reply w/ request
582  @param vrf_id - VRF / Fib table ID
583  @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
584  @param low_address[4] - Low address of the Proxy ARP range
585  @param hi_address[4] - High address of the Proxy ARP range
586 */
587 define proxy_arp_add_del
588 {
593  u8 low_address[4];
594  u8 hi_address[4];
595 };
596 
597 /** \brief Reply for proxy arp add / del request
598  @param context - returned sender context, to match reply w/ request
599  @param retval - return code
600 */
601 define proxy_arp_add_del_reply
602 {
605 };
606 
607 /** \brief Proxy ARP add / del request
608  @param client_index - opaque cookie to identify the sender
609  @param context - sender context, to match reply w/ request
610  @param sw_if_index - Which interface to enable / disable Proxy Arp on
611  @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
612 */
613 define proxy_arp_intfc_enable_disable
614 {
618  /* 1 = on, 0 = off */
620 };
621 
622 /** \brief Reply for Proxy ARP interface enable / disable request
623  @param context - returned sender context, to match reply w/ request
624  @param retval - return code
625 */
626 define proxy_arp_intfc_enable_disable_reply
627 {
630 };
631 
632 /** \brief IP neighbor add / del request
633  @param client_index - opaque cookie to identify the sender
634  @param context - sender context, to match reply w/ request
635  @param vrf_id - vrf_id, only for IP4
636  @param sw_if_index - interface used to reach neighbor
637  @param is_add - 1 to add neighbor, 0 to delete
638  @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
639  @param is_static -
640  @param mac_address - l2 address of the neighbor
641  @param dst_address - ip4 or ip6 address of the neighbor
642 */
643 define ip_neighbor_add_del
644 {
647  u32 vrf_id; /* only makes sense for ip4 */
649  /* 1 = add, 0 = delete */
653  u8 mac_address[6];
654  u8 dst_address[16];
655 };
656 
657 /** \brief Reply for IP Neighbor add / delete request
658  @param context - returned sender context, to match reply w/ request
659  @param retval - return code
660 */
661 define ip_neighbor_add_del_reply
662 {
665 };
666 
667 /** \brief Reset VRF (remove all routes etc) request
668  @param client_index - opaque cookie to identify the sender
669  @param context - sender context, to match reply w/ request
670  @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
671  @param vrf_id - ID of th FIB table / VRF to reset
672 */
673 define reset_vrf
674 {
679 };
680 
681 /** \brief Reply for Reset VRF request
682  @param context - returned sender context, to match reply w/ request
683  @param retval - return code
684 */
685 define reset_vrf_reply
686 {
689 };
690 
691 /** \brief Is Address Reachable request - DISABLED
692  @param client_index - opaque cookie to identify the sender
693  @param context - sender context, to match reply w/ request
694  @param next_hop_sw_if_index - index of interface used to get to next hop
695  @param is_ipv6 - 1 for IPv6, 0 for IPv4
696  @param is_error - address not found or does not match intf
697  @param address[] - Address in question
698 */
699 define is_address_reachable
700 {
701  u32 client_index; /* (api_main_t *) am->my_client_index */
704  u8 is_known; /* on reply, this is the answer */
706  u8 is_error; /* address not found or does not match intf */
707  u8 address[16];
708 };
709 
710 /** \brief Want Stats, register for stats updates
711  @param client_index - opaque cookie to identify the sender
712  @param context - sender context, to match reply w/ request
713  @param enable_disable - 1 = enable stats, 0 = disable
714  @param pid - pid of process requesting stats updates
715 */
716 define want_stats
717 {
722 };
723 
724 /** \brief Reply for Want Stats request
725  @param context - returned sender context, to match reply w/ request
726  @param retval - return code
727 */
728 define want_stats_reply
729 {
732 };
733 
734 /** \brief Want stats counters structure
735  @param vnet_counter_type- such as ip4, ip6, punts, etc
736  @param is_combined - rx & tx total (all types) counts
737  @param first_sw_if_index - first sw index in block of index, counts
738  @param count - number of interfaces this stats block includes counters for
739  @param data - contiguous block of vlib_counter_t structures
740 */
741 define vnet_interface_counters
742 {
743  /* enums - plural - in vnet/interface.h */
748  u8 data[count];
749 };
750 
751 typeonly manual_print manual_endian define ip4_fib_counter
752 {
757 };
758 
759 manual_print manual_endian define vnet_ip4_fib_counters
760 {
764 };
765 
766 typeonly manual_print manual_endian define ip6_fib_counter
767 {
768  u64 address[2];
772 };
773 
774 manual_print manual_endian define vnet_ip6_fib_counters
775 {
779 };
780 
781 /** \brief Request for a single block of summary stats
782  @param client_index - opaque cookie to identify the sender
783  @param context - sender context, to match reply w/ request
784 */
785 define vnet_get_summary_stats
786 {
789 };
790 
791 /** \brief Reply for vnet_get_summary_stats request
792  @param context - sender context, to match reply w/ request
793  @param retval - return code for request
794  @param total_pkts -
795  @param total_bytes -
796  @param vector_rate -
797 */
798 define vnet_summary_stats_reply
799 {
802  u64 total_pkts[2];
803  u64 total_bytes[2];
805 };
806 
807 /** \brief OAM event structure
808  @param dst_address[] -
809  @param state
810 */
811 define oam_event
812 {
813  u8 dst_address[4];
815 };
816 
817 /** \brief Want OAM events request
818  @param client_index - opaque cookie to identify the sender
819  @param context - sender context, to match reply w/ request
820  @param enable_disable- enable if non-zero, else disable
821  @param pid - pid of the requesting process
822 */
823 define want_oam_events
824 {
829 };
830 
831 /** \brief Want OAM events response
832  @param context - sender context, to match reply w/ request
833  @param retval - return code for the want oam stats request
834 */
835 define want_oam_events_reply
836 {
839 };
840 
841 /** \brief OAM add / del target request
842  @param client_index - opaque cookie to identify the sender
843  @param context - sender context, to match reply w/ request
844  @param vrf_id - vrf_id of the target
845  @param src_address[] - source address to use for the updates
846  @param dst_address[] - destination address of the target
847  @param is_add - add target if non-zero, else delete
848 */
849 define oam_add_del
850 {
854  u8 src_address[4];
855  u8 dst_address[4];
857 };
858 
859 /** \brief OAM add / del target response
860  @param context - sender context, to match reply w/ request
861  @param retval - return code of the request
862 */
863 define oam_add_del_reply
864 {
867 };
868 
869 /** \brief Reset fib table request
870  @param client_index - opaque cookie to identify the sender
871  @param context - sender context, to match reply w/ request
872  @param vrf_id - vrf/table id of the fib table to reset
873  @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
874 */
875 define reset_fib
876 {
881 };
882 
883 /** \brief Reset fib response
884  @param context - sender context, to match reply w/ request
885  @param retval - return code for the reset bfib request
886 */
887 define reset_fib_reply
888 {
891 };
892 
893 /** \brief DHCP Proxy config add / del request
894  @param client_index - opaque cookie to identify the sender
895  @param context - sender context, to match reply w/ request
896  @param vrf_id - vrf id
897  @param if_ipv6 - ipv6 if non-zero, else ipv4
898  @param is_add - add the config if non-zero, else delete
899  @param insert_circuit_id - option82 suboption 1 fib number
900  @param dhcp_server[] - server address
901  @param dhcp_src_address[] - <fix this, need details>
902 */
903 define dhcp_proxy_config
904 {
911  u8 dhcp_server[16];
912  u8 dhcp_src_address[16];
913 };
914 
915 /** \brief DHCP Proxy config response
916  @param context - sender context, to match reply w/ request
917  @param retval - return code for the request
918 */
919 define dhcp_proxy_config_reply
920 {
923 };
924 
925 /** \brief DHCP Proxy set / unset vss request
926  @param client_index - opaque cookie to identify the sender
927  @param context - sender context, to match reply w/ request
928  @param tbl_id - table id
929  @param oui - first part of vpn id
930  @param fib_id - second part of vpn id
931  @param is_ipv6 - ip6 if non-zero, else ip4
932  @param is_add - set vss if non-zero, else delete
933 */
934 define dhcp_proxy_set_vss
935 {
943 };
944 
945 /** \brief DHCP proxy set / unset vss response
946  @param context - sender context, to match reply w/ request
947  @param retval - return code for the request
948 */
949 define dhcp_proxy_set_vss_reply
950 {
953 };
954 
955 /** \brief Set the ip flow hash config for a fib request
956  @param client_index - opaque cookie to identify the sender
957  @param context - sender context, to match reply w/ request
958  @param vrf_id - vrf/fib id
959  @param is_ipv6 - if non-zero the fib is ip6, else ip4
960  @param src - if non-zero include src in flow hash
961  @param dst - if non-zero include dst in flow hash
962  @param sport - if non-zero include sport in flow hash
963  @param dport - if non-zero include dport in flow hash
964  @param proto -if non-zero include proto in flow hash
965  @param reverse - if non-zero include reverse in flow hash
966 */
967 define set_ip_flow_hash
968 {
979 };
980 
981 /** \brief Set the ip flow hash config for a fib response
982  @param context - sender context, to match reply w/ request
983  @param retval - return code for the request
984 */
985 define set_ip_flow_hash_reply
986 {
989 };
990 
991 /** \brief IPv6 router advertisement config request
992  @param client_index - opaque cookie to identify the sender
993  @param context - sender context, to match reply w/ request
994  @param suppress -
995  @param managed -
996  @param other -
997  @param ll_option -
998  @param send_unicast -
999  @param cease -
1000  @param is_no -
1001  @param default_router -
1002  @param max_interval -
1003  @param min_interval -
1004  @param lifetime -
1005  @param initial_count -
1006  @param initial_interval -
1007 */
1008 define sw_interface_ip6nd_ra_config
1009 {
1026 };
1027 
1028 /** \brief IPv6 router advertisement config response
1029  @param context - sender context, to match reply w/ request
1030  @param retval - return code for the request
1031 */
1032 define sw_interface_ip6nd_ra_config_reply
1033 {
1036 };
1037 
1038 /** \brief IPv6 router advertisement prefix config request
1039  @param client_index - opaque cookie to identify the sender
1040  @param context - sender context, to match reply w/ request
1041  @param sw_if_index -
1042  @param address[] -
1043  @param address_length -
1044  @param use_default -
1045  @param no_advertise -
1046  @param off_link -
1047  @param no_autoconfig -
1048  @param no_onlink -
1049  @param is_no -
1050  @param val_lifetime -
1051  @param pref_lifetime -
1052 */
1053 define sw_interface_ip6nd_ra_prefix
1054 {
1058  u8 address[16];
1068 };
1069 
1070 /** \brief IPv6 router advertisement prefix config response
1071  @param context - sender context, to match reply w/ request
1072  @param retval - return code for the request
1073 */
1074 define sw_interface_ip6nd_ra_prefix_reply
1075 {
1078 };
1079 
1080 /** \brief IPv6 interface enable / disable request
1081  @param client_index - opaque cookie to identify the sender
1082  @param context - sender context, to match reply w/ request
1083  @param sw_if_index - interface used to reach neighbor
1084  @param enable - if non-zero enable ip6 on interface, else disable
1085 */
1086 define sw_interface_ip6_enable_disable
1087 {
1091  u8 enable; /* set to true if enable */
1092 };
1093 
1094 /** \brief IPv6 interface enable / disable response
1095  @param context - sender context, to match reply w/ request
1096  @param retval - return code for the request
1097 */
1098 define sw_interface_ip6_enable_disable_reply
1099 {
1102 };
1103 
1104 /** \brief IPv6 set link local address on interface request
1105  @param client_index - opaque cookie to identify the sender
1106  @param context - sender context, to match reply w/ request
1107  @param sw_if_index - interface to set link local on
1108  @param address[] - the new link local address
1109  @param address_length - link local address length
1110 */
1111 define sw_interface_ip6_set_link_local_address
1112 {
1116  u8 address[16];
1118 };
1119 
1120 /** \brief IPv6 set link local address on interface response
1121  @param context - sender context, to match reply w/ request
1122  @param retval - error code for the request
1123 */
1124 define sw_interface_ip6_set_link_local_address_reply
1125 {
1128 };
1129 
1130 /** \brief Set unnumbered interface add / del request
1131  @param client_index - opaque cookie to identify the sender
1132  @param context - sender context, to match reply w/ request
1133  @param sw_if_index - interface with an IP address
1134  @param unnumbered_sw_if_index - interface which will use the address
1135  @param is_add - if non-zero set the association, else unset it
1136 */
1137 define sw_interface_set_unnumbered
1138 {
1141  u32 sw_if_index; /* use this intfc address */
1142  u32 unnumbered_sw_if_index; /* on this interface */
1144 };
1145 
1146 /** \brief Set unnumbered interface add / del response
1147  @param context - sender context, to match reply w/ request
1148  @param retval - return code for the request
1149 */
1150 define sw_interface_set_unnumbered_reply
1151 {
1154 };
1155 
1156 /** \brief Create loopback interface request
1157  @param client_index - opaque cookie to identify the sender
1158  @param context - sender context, to match reply w/ request
1159  @param mac_address - mac addr to assign to the interface if none-zero
1160 */
1161 define create_loopback
1162 {
1165  u8 mac_address[6];
1166 };
1167 
1168 /** \brief Create loopback interface response
1169  @param context - sender context, to match reply w/ request
1170  @param sw_if_index - sw index of the interface that was created
1171  @param retval - return code for the request
1172 */
1173 define create_loopback_reply
1174 {
1178 };
1179 
1180 /** \brief Delete loopback interface request
1181  @param client_index - opaque cookie to identify the sender
1182  @param context - sender context, to match reply w/ request
1183  @param sw_if_index - sw index of the interface that was created
1184 */
1185 define delete_loopback
1186 {
1190 };
1191 
1192 /** \brief Delete loopback interface response
1193  @param context - sender context, to match reply w/ request
1194  @param retval - return code for the request
1195 */
1196 define delete_loopback_reply
1197 {
1200 };
1201 
1202 /** \brief Control ping from client to api server request
1203  @param client_index - opaque cookie to identify the sender
1204  @param context - sender context, to match reply w/ request
1205 */
1206 define control_ping
1207 {
1210 };
1211 
1212 /** \brief Control ping from the client to the server response
1213  @param client_index - opaque cookie to identify the sender
1214  @param context - sender context, to match reply w/ request
1215  @param retval - return code for the request
1216  @param vpe_pid - the pid of the vpe, returned by the server
1217 */
1218 define control_ping_reply
1219 {
1224 };
1225 
1226 /** \brief Process a vpe parser cli string request
1227  @param client_index - opaque cookie to identify the sender
1228  @param context - sender context, to match reply w/ request
1229  @param cmd_in_shmem - pointer to cli command string
1230 */
1231 define cli_request
1232 {
1236 };
1237 define cli_inband
1238 {
1242  u8 cmd[length];
1243 };
1244 
1245 /** \brief vpe parser cli string response
1246  @param context - sender context, to match reply w/ request
1247  @param retval - return code for request
1248  @param reply_in_shmem - Reply string from cli processing if any
1249 */
1250 define cli_reply
1251 {
1255 };
1256 define cli_inband_reply
1257 {
1261  u8 reply[length];
1262 };
1263 
1264 /** \brief Set max allowed ARP or ip6 neighbor entries request
1265  @param client_index - opaque cookie to identify the sender
1266  @param context - sender context, to match reply w/ request
1267  @param is_ipv6 - neighbor limit if non-zero, else ARP limit
1268  @param arp_neighbor_limit - the new limit, defaults are ~ 50k
1269 */
1270 define set_arp_neighbor_limit
1271 {
1276 };
1277 
1278 /** \brief Set max allowed ARP or ip6 neighbor entries response
1279  @param context - sender context, to match reply w/ request
1280  @param retval - return code for request
1281 */
1282 define set_arp_neighbor_limit_reply
1283 {
1286 };
1287 
1288 /** \brief L2 interface patch add / del request
1289  @param client_index - opaque cookie to identify the sender
1290  @param context - sender context, to match reply w/ request
1291  @param rx_sw_if_index - receive side interface
1292  @param tx_sw_if_index - transmit side interface
1293  @param is_add - if non-zero set up the interface patch, else remove it
1294 */
1295 define l2_patch_add_del
1296 {
1302 };
1303 
1304 /** \brief L2 interface patch add / del response
1305  @param context - sender context, to match reply w/ request
1306  @param retval - return code for the request
1307 */
1308 define l2_patch_add_del_reply
1309 {
1312 };
1313 
1314 /** \brief IPv6 segment routing tunnel add / del request
1315  @param client_index - opaque cookie to identify the sender
1316  @param context - sender context, to match reply w/ request
1317  @param is_add - add the tunnel if non-zero, else delete it
1318  @param name[] - tunnel name (len. 64)
1319  @param src_address[] -
1320  @param dst_address[] -
1321  @param dst_mask_width -
1322  @param inner_vrf_id -
1323  @param outer_vrf_id -
1324  @param flags_net_byte_order -
1325  @param n_segments -
1326  @param n_tags -
1327  @param segs_and_tags[] -
1328  @param policy_name[] - name of policy to associate this tunnel to (len. 64)
1329 */
1330 define sr_tunnel_add_del
1331 {
1335  u8 name[64];
1336  u8 src_address[16];
1337  u8 dst_address[16];
1344  u8 segs_and_tags[0];
1345  u8 policy_name[64];
1346 };
1347 
1348 /** \brief IPv6 segment routing tunnel add / del response
1349  @param context - sender context, to match reply w/ request
1350  @param retval - return value for request
1351 */
1352 define sr_tunnel_add_del_reply
1353 {
1356 };
1357 
1358 /** \brief IPv6 segment routing policy add / del request
1359  @param client_index - opaque cookie to identify the sender
1360  @param context - sender context, to match reply w/ request
1361  @param is_add - add the tunnel if non-zero, else delete it
1362  @param name[] - policy name (len. 64)
1363  @param tunnel_names[] -
1364 */
1365 define sr_policy_add_del
1366 {
1370  u8 name[64];
1371  u8 tunnel_names[0];
1372 };
1373 
1374 /** \brief IPv6 segment routing policy add / del response
1375  @param context - sender context, to match reply w/ request
1376  @param retval - return value for request
1377 */
1378 define sr_policy_add_del_reply
1379 {
1382 };
1383 
1384 /** \brief IPv6 segment routing multicast map to policy add / del request
1385  @param client_index - opaque cookie to identify the sender
1386  @param context - sender context, to match reply w/ request
1387  @param is_add - add the tunnel if non-zero, else delete it
1388  @param multicast_address[] - IP6 multicast address
1389  @param policy_name[] = policy name (len.64)
1390 */
1391 define sr_multicast_map_add_del
1392 {
1396  u8 multicast_address[16];
1397  u8 policy_name[64];
1398 };
1399 
1400 /** \brief IPv6 segment routing multicast map to policy add / del response
1401  @param context - sender context, to match reply w/ request
1402  @param retval - return value for request
1403 */
1404 define sr_multicast_map_add_del_reply
1405 {
1408 };
1409 
1410 /** \brief Interface set vpath request
1411  @param client_index - opaque cookie to identify the sender
1412  @param context - sender context, to match reply w/ request
1413  @param sw_if_index - interface used to reach neighbor
1414  @param enable - if non-zero enable, else disable
1415 */
1416 define sw_interface_set_vpath
1417 {
1422 };
1423 
1424 /** \brief Interface set vpath response
1425  @param context - sender context, to match reply w/ request
1426  @param retval - return code for the request
1427 */
1428 define sw_interface_set_vpath_reply
1429 {
1432 };
1433 
1434 /** \brief MPLS Ethernet add / del tunnel request
1435  @param client_index - opaque cookie to identify the sender
1436  @param context - sender context, to match reply w/ request
1437  @param vrf_id - vrf_id, only for IP4
1438  @param sw_if_index - interface used to reach neighbor
1439  @param is_add - add if set, tunnel delete if 0
1440  @param dst_mac_address -
1441  @param adj_address -
1442  @param adj_address_length -
1443 */
1444 define mpls_ethernet_add_del_tunnel
1445 {
1452  u8 dst_mac_address[6];
1453  u8 adj_address[4];
1455 };
1456 
1457 /** \brief Reply for MPLS Ethernet add / delete tunnel request
1458  @param context - sender context, to match reply w/ request
1459  @param retval - return code for the request
1460 */
1461 define mpls_ethernet_add_del_tunnel_reply
1462 {
1466 };
1467 /** \brief MPLS Ethernet add/ del tunnel 2
1468  @param client_index - opaque cookie to identify the sender
1469  @param context - sender context, to match reply w/ request
1470  @param inner_vrf_id -
1471  @param outer_vrf_id -
1472  @param resolve_attempts -
1473  @param resolve_opaque -
1474  @param resolve_if_needed -
1475  @param is_add -
1476  @param adj_address -
1477  @param adj_address_length -
1478  @param next_hop_ip4_address_in_outer_vrf -
1479 */
1480 define mpls_ethernet_add_del_tunnel_2
1481 {
1487  u32 resolve_opaque; /* no need to set this */
1491  u8 adj_address[4];
1493  u8 next_hop_ip4_address_in_outer_vrf[4];
1494 };
1495 
1496 /** \brief MPLS Ethernet add/ del tunnel 2
1497  @param context - sender context, to match reply w/ request
1498  @param retval - return code for add /del request
1499 */
1500 define mpls_ethernet_add_del_tunnel_2_reply
1501 {
1504 };
1505 
1506 /** \brief Set L2 XConnect between two interfaces request
1507  @param client_index - opaque cookie to identify the sender
1508  @param context - sender context, to match reply w/ request
1509  @param rx_sw_if_index - Receive interface index
1510  @param tx_sw_if_index - Transmit interface index
1511  @param enable - enable xconnect if not 0, else set to L3 mode
1512 */
1513 define sw_interface_set_l2_xconnect
1514 {
1520 };
1521 
1522 /** \brief Set L2 XConnect response
1523  @param context - sender context, to match reply w/ request
1524  @param retval - L2 XConnect request return code
1525 */
1526 define sw_interface_set_l2_xconnect_reply
1527 {
1530 };
1531 
1532 /** \brief Interface bridge mode request
1533  @param client_index - opaque cookie to identify the sender
1534  @param context - sender context, to match reply w/ request
1535  @param rx_sw_if_index - the interface
1536  @param bd_id - bridge domain id
1537  @param bvi - Setup interface as a bvi, bridge mode only
1538  @param shg - Shared horizon group, for bridge mode only
1539  @param enable - Enable beige mode if not 0, else set to L3 mode
1540 */
1541 define sw_interface_set_l2_bridge
1542 {
1550 };
1551 
1552 /** \brief Interface bridge mode response
1553  @param context - sender context, to match reply w/ request
1554  @param retval - Bridge mode request return code
1555 */
1556 define sw_interface_set_l2_bridge_reply
1557 {
1560 };
1561 
1562 /** \brief L2 FIB add entry request
1563  @param client_index - opaque cookie to identify the sender
1564  @param context - sender context, to match reply w/ request
1565  @param mac - the entry's mac address
1566  @param bd_id - the entry's bridge domain id
1567  @param sw_if_index - the interface
1568  @param is_add - If non zero add the entry, else delete it
1569  @param static_mac -
1570  @param filter_mac -
1571 */
1572 define l2fib_add_del
1573 {
1583 };
1584 
1585 /** \brief L2 FIB add entry response
1586  @param context - sender context, to match reply w/ request
1587  @param retval - return code for the add l2fib entry request
1588 */
1589 define l2fib_add_del_reply
1590 {
1593 };
1594 
1595 /** \brief Set L2 flags request !!! TODO - need more info, feature bits in l2_input.h
1596  @param client_index - opaque cookie to identify the sender
1597  @param context - sender context, to match reply w/ request
1598  @param sw_if_index - interface
1599  @param is_set - if non-zero, set the bits, else clear them
1600  @param feature_bitmap - non-zero bits to set or clear
1601 */
1602 define l2_flags
1603 {
1609 };
1610 
1611 /** \brief Set L2 bits response
1612  @param context - sender context, to match reply w/ request
1613  @param retval - return code for the set l2 bits request
1614 */
1615 define l2_flags_reply
1616 {
1620 };
1621 
1622 /** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD,
1623  L2_UU_FLOOD, or L2_ARP_TERM) request
1624  @param client_index - opaque cookie to identify the sender
1625  @param context - sender context, to match reply w/ request
1626  @param bd_id - the bridge domain to set the flags for
1627  @param is_set - if non-zero, set the flags, else clear them
1628  @param feature_bitmap - bits that are non-zero to set or clear
1629 */
1630 define bridge_flags
1631 {
1637 };
1638 
1639 /** \brief Set bridge flags response
1640  @param context - sender context, to match reply w/ request
1641  @param retval - return code for the set bridge flags request
1642  @param resulting_feature_bitmap - the feature bitmap value after the request is implemented
1643 */
1644 define bridge_flags_reply
1645 {
1649 };
1650 
1651 /** \brief Set bridge domain ip to mac entry request
1652  @param client_index - opaque cookie to identify the sender
1653  @param context - sender context, to match reply w/ request
1654  @param bd_id - the bridge domain to set the flags for
1655  @param is_add - if non-zero, add the entry, else clear it
1656  @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address
1657  @param mac_address - MAC address
1658  @param
1659 */
1660 define bd_ip_mac_add_del
1661 {
1667  u8 ip_address[16];
1668  u8 mac_address[6];
1669 };
1670 
1671 /** \brief Set bridge domain ip to mac entry response
1672  @param context - sender context, to match reply w/ request
1673  @param retval - return code for the set bridge flags request
1674 */
1675 define bd_ip_mac_add_del_reply
1676 {
1679 };
1680 
1681 /** \brief Add/Delete classification table request
1682  @param client_index - opaque cookie to identify the sender
1683  @param context - sender context, to match reply w/ request
1684  @param is_add- if non-zero add the table, else delete it
1685  @param table_index - if add, reuturns index of the created table, else specifies the table to delete
1686  @param nbuckets - number of buckets when adding a table
1687  @param memory_size - memory size when adding a table
1688  @param match_n_vectors - number of match vectors
1689  @param next_table_index - index of next table
1690  @param miss_next_index - index of miss table
1691  @param mask[] - match mask
1692 */
1693 define classify_add_del_table
1694 {
1705  u8 mask[0];
1706 };
1707 
1708 /** \brief Add/Delete classification table response
1709  @param context - sender context, to match reply w/ request
1710  @param retval - return code for the table add/del requst
1711  @param new_table_index - for add, returned index of the new table
1712  @param skip_n_vectors - for add, returned value of skip_n_vectors in table
1713  @param match_n_vectors -for add, returned value of match_n_vectors in table
1714 */
1715 define classify_add_del_table_reply
1716 {
1722 };
1723 
1724 /** \brief Classify add / del session request
1725  @param client_index - opaque cookie to identify the sender
1726  @param context - sender context, to match reply w/ request
1727  @param is_add - add session if non-zero, else delete
1728  @param table_index - index of the table to add/del the session, required
1729  @param hit_next_index - for add, hit_next_index of new session, required
1730  @param opaque_index - for add, opaque_index of new session
1731  @param advance -for add, advance value for session
1732  @param match[] - for add, match value for session, required
1733 */
1734 define classify_add_del_session
1735 {
1743  u8 match[0];
1744 };
1745 
1746 /** \brief Classify add / del session response
1747  @param context - sender context, to match reply w/ request
1748  @param retval - return code for the add/del session request
1749 */
1750 define classify_add_del_session_reply
1751 {
1754 };
1755 
1756 /** \brief Set/unset the classification table for an interface request
1757  @param client_index - opaque cookie to identify the sender
1758  @param context - sender context, to match reply w/ request
1759  @param is_ipv6 - ipv6 if non-zero, else ipv4
1760  @param sw_if_index - interface to associate with the table
1761  @param table_index - index of the table, if ~0 unset the table
1762 */
1763 define classify_set_interface_ip_table
1764 {
1769  u32 table_index; /* ~0 => off */
1770 };
1771 
1772 /** \brief Set/unset interface classification table response
1773  @param context - sender context, to match reply w/ request
1774  @param retval - return code
1775 */
1776 define classify_set_interface_ip_table_reply
1777 {
1780 };
1781 
1782 /** \brief Set/unset l2 classification tables for an interface request
1783  @param client_index - opaque cookie to identify the sender
1784  @param context - sender context, to match reply w/ request
1785  @param sw_if_index - interface to set/unset tables for
1786  @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset
1787  @param ip6_table_index - ip6 index
1788  @param other_table_index - other index
1789 */
1790 define classify_set_interface_l2_tables
1791 {
1795  /* 3 x ~0 => off */
1800 };
1801 
1802 /** \brief Set/unset l2 classification tables for an interface response
1803  @param context - sender context, to match reply w/ request
1804  @param retval - return code for the request
1805 */
1806 define classify_set_interface_l2_tables_reply
1807 {
1810 };
1811 
1812 /** \brief Get node index using name request
1813  @param client_index - opaque cookie to identify the sender
1814  @param context - sender context, to match reply w/ request
1815  @param node_name[] - name of the node
1816 */
1817 define get_node_index
1818 {
1821  u8 node_name[64];
1822 };
1823 
1824 /** \brief Get node index using name request
1825  @param context - sender context, to match reply w/ request
1826  @param retval - return code for the request
1827  @param node_index - index of the desired node if found, else ~0
1828 */
1829 define get_node_index_reply
1830 {
1834 };
1835 
1836 /** \brief Set the next node for a given node request
1837  @param client_index - opaque cookie to identify the sender
1838  @param context - sender context, to match reply w/ request
1839  @param node_name[] - node to add the next node to
1840  @param next_name[] - node to add as the next node
1841 */
1842 define add_node_next
1843 {
1846  u8 node_name[64];
1847  u8 next_name[64];
1848 };
1849 
1850 /** \brief IP Set the next node for a given node response
1851  @param context - sender context, to match reply w/ request
1852  @param retval - return code for the add next node request
1853  @param next_index - the index of the next node if success, else ~0
1854 */
1855 define add_node_next_reply
1856 {
1860 };
1861 
1862 /** \brief DHCP Proxy config 2 add / del request
1863  @param client_index - opaque cookie to identify the sender
1864  @param context - sender context, to match reply w/ request
1865  @param rx_vrf_id - receive vrf id
1866  @param server_vrf_id - server vrf id
1867  @param if_ipv6 - ipv6 if non-zero, else ipv4
1868  @param is_add - add the config if non-zero, else delete
1869  @param insert_circuit_id - option82 suboption 1 fib number
1870  @param dhcp_server[] - server address
1871  @param dhcp_src_address[] - <fix this, need details>
1872 */
1873 define dhcp_proxy_config_2
1874 {
1882  u8 dhcp_server[16];
1883  u8 dhcp_src_address[16];
1884 };
1885 
1886 /** \brief DHCP Proxy config 2 add / del response
1887  @param context - sender context, to match reply w/ request
1888  @param retval - return code for request
1889 */
1890 define dhcp_proxy_config_2_reply
1891 {
1894 };
1895 
1896 /** \brief l2tpv3 tunnel interface create request
1897  @param client_index - opaque cookie to identify the sender
1898  @param context - sender context, to match reply w/ request
1899  @param client_address - remote client tunnel ip address
1900  @param client_address - local tunnel ip address
1901  @param is_ipv6 - ipv6 if non-zero, else ipv4
1902  @param local_session_id - local tunnel session id
1903  @param remote_session_id - remote tunnel session id
1904  @param local_cookie - local tunnel cookie
1905  @param l2_sublayer_present - l2 sublayer is present in packets if non-zero
1906  @param encap_vrf_id - fib identifier used for outgoing encapsulated packets
1907 */
1908 define l2tpv3_create_tunnel
1909 {
1912  u8 client_address[16];
1913  u8 our_address[16];
1921 };
1922 
1923 /** \brief l2tpv3 tunnel interface create response
1924  @param context - sender context, to match reply w/ request
1925  @param retval - return code for the request
1926  @param sw_if_index - index of the new tunnel interface
1927 */
1928 define l2tpv3_create_tunnel_reply
1929 {
1933 };
1934 
1936 {
1942 };
1943 
1944 /** \brief L2TP tunnel set cookies response
1945  @param context - sender context, to match reply w/ request
1946  @param retval - return code for the request
1947 */
1948 define l2tpv3_set_tunnel_cookies_reply
1949 {
1952 };
1953 
1954 define sw_if_l2tpv3_tunnel_details
1955 {
1958  u8 interface_name[64];
1959  u8 client_address[16];
1960  u8 our_address[16];
1963  u64 local_cookie[2];
1966 };
1967 
1968 define sw_if_l2tpv3_tunnel_dump
1969 {
1972 };
1973 
1974 /** \brief L2 fib clear table request, clear all mac entries in the l2 fib
1975  @param client_index - opaque cookie to identify the sender
1976  @param context - sender context, to match reply w/ request
1977 */
1978 define l2_fib_clear_table
1979 {
1982 };
1983 
1984 /** \brief L2 fib clear table response
1985  @param context - sender context, to match reply w/ request
1986  @param retval - return code for the request
1987 */
1988 define l2_fib_clear_table_reply
1989 {
1992 };
1993 
1994 /** \brief L2 interface ethernet flow point filtering enable/disable request
1995  @param client_index - opaque cookie to identify the sender
1996  @param context - sender context, to match reply w/ request
1997  @param sw_if_index - interface to enable/disable filtering on
1998  @param enable_disable - if non-zero enable filtering, else disable
1999 */
2000 define l2_interface_efp_filter
2001 {
2006 };
2007 
2008 /** \brief L2 interface ethernet flow point filtering response
2009  @param context - sender context, to match reply w/ request
2010  @param retval - return code for the request
2011 */
2012 define l2_interface_efp_filter_reply
2013 {
2016 };
2017 
2019 {
2024 };
2025 
2026 define l2tpv3_interface_enable_disable_reply
2027 {
2030 };
2031 
2032 define l2tpv3_set_lookup_key
2033 {
2036  /* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */
2038 };
2039 
2040 define l2tpv3_set_lookup_key_reply
2041 {
2044 };
2045 
2046 define vxlan_add_del_tunnel
2047 {
2052  u8 src_address[16];
2053  u8 dst_address[16];
2057 };
2058 
2059 define vxlan_add_del_tunnel_reply
2060 {
2064 };
2065 
2066 define vxlan_tunnel_dump
2067 {
2071 };
2072 
2073 define vxlan_tunnel_details
2074 {
2077  u8 src_address[16];
2078  u8 dst_address[16];
2083 };
2084 
2085 define gre_add_del_tunnel
2086 {
2092  u8 src_address[16];
2093  u8 dst_address[16];
2095 };
2096 
2097 define gre_add_del_tunnel_reply
2098 {
2102 };
2103 
2104 define gre_tunnel_dump
2105 {
2109 };
2110 
2111 define gre_tunnel_details
2112 {
2117  u8 src_address[16];
2118  u8 dst_address[16];
2120 };
2121 
2122 /** \brief L2 interface vlan tag rewrite configure request
2123  @param client_index - opaque cookie to identify the sender
2124  @param context - sender context, to match reply w/ request
2125  @param sw_if_index - interface the operation is applied to
2126  @param vtr_op - Choose from l2_vtr_op_t enum values
2127  @param push_dot1q - first pushed flag dot1q id set, else dot1ad
2128  @param tag1 - Needed for any push or translate vtr op
2129  @param tag2 - Needed for any push 2 or translate x-2 vtr ops
2130 */
2131 define l2_interface_vlan_tag_rewrite
2132 {
2137  u32 push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
2138  u32 tag1; // first pushed tag
2139  u32 tag2; // second pushed tag
2140 };
2141 
2142 /** \brief L2 interface vlan tag rewrite response
2143  @param context - sender context, to match reply w/ request
2144  @param retval - return code for the request
2145 */
2146 define l2_interface_vlan_tag_rewrite_reply
2147 {
2150 };
2151 
2152 /** \brief vhost-user interface create request
2153  @param client_index - opaque cookie to identify the sender
2154  @param is_server - our side is socket server
2155  @param sock_filename - unix socket filename, used to speak with frontend
2156  @param use_custom_mac - enable or disable the use of the provided hardware address
2157  @param mac_address - hardware address to use if 'use_custom_mac' is set
2158 */
2159 define create_vhost_user_if
2160 {
2164  u8 sock_filename[256];
2168  u8 mac_address[6];
2169 };
2170 
2171 /** \brief vhost-user interface create response
2172  @param context - sender context, to match reply w/ request
2173  @param retval - return code for the request
2174  @param sw_if_index - interface the operation is applied to
2175 */
2176 define create_vhost_user_if_reply
2177 {
2181 };
2182 
2183 /** \brief vhost-user interface modify request
2184  @param client_index - opaque cookie to identify the sender
2185  @param is_server - our side is socket server
2186  @param sock_filename - unix socket filename, used to speak with frontend
2187 */
2188 define modify_vhost_user_if
2189 {
2194  u8 sock_filename[256];
2197 };
2198 
2199 /** \brief vhost-user interface modify response
2200  @param context - sender context, to match reply w/ request
2201  @param retval - return code for the request
2202 */
2203 define modify_vhost_user_if_reply
2204 {
2207 };
2208 
2209 /** \brief vhost-user interface delete request
2210  @param client_index - opaque cookie to identify the sender
2211 */
2212 define delete_vhost_user_if
2213 {
2217 };
2218 
2219 /** \brief vhost-user interface delete response
2220  @param context - sender context, to match reply w/ request
2221  @param retval - return code for the request
2222 */
2223 define delete_vhost_user_if_reply
2224 {
2227 };
2228 
2229 define create_subif
2230 {
2235 
2236  /* These fields map directly onto the subif template */
2240  u8 dot1ad; // 0 = dot1q, 1=dot1ad
2247 };
2248 
2249 define create_subif_reply
2250 {
2254 };
2255 
2256 /** \brief show version
2257  @param client_index - opaque cookie to identify the sender
2258  @param context - sender context, to match reply w/ request
2259 */
2260 define show_version
2261 {
2264 };
2265 
2266 /** \brief show version response
2267  @param context - sender context, to match reply w/ request
2268  @param retval - return code for the request
2269  @param program - name of the program (vpe)
2270  @param version - version of the program
2271  @param build_directory - root of the workspace where the program was built
2272 */
2273 define show_version_reply
2274 {
2277  u8 program[32];
2278  u8 version[32];
2279  u8 build_date[32];
2280  u8 build_directory[256];
2281 };
2282 
2283 /** \brief Vhost-user interface details structure (fix this)
2284  @param sw_if_index - index of the interface
2285  @param interface_name - name of interface
2286  @param virtio_net_hdr_sz - net header size
2287  @param features - interface features
2288  @param is_server - vhost-user server socket
2289  @param sock_filename - socket filename
2290  @param num_regions - number of used memory regions
2291 */
2292 define sw_interface_vhost_user_details
2293 {
2296  u8 interface_name[64];
2300  u8 sock_filename[256];
2303 };
2304 
2305 /* works */
2306 define sw_interface_vhost_user_dump
2307 {
2310 };
2311 
2312 define ip_address_details
2313 {
2316  u8 ip[16];
2318 };
2319 
2320 define ip_address_dump
2321 {
2326 };
2327 
2328 define ip_details
2329 {
2332 };
2333 
2334 define ip_dump
2335 {
2339 };
2340 
2341 /** \brief l2 fib table entry structure
2342  @param bd_id - the l2 fib / bridge domain table id
2343  @param mac - the entry's mac address
2344  @param sw_if_index - index of the interface
2345  @param static_mac - the entry is statically configured.
2346  @param filter_mac - the entry is a mac filter entry.
2347  @param bvi_mac - the mac address is a bridge virtual interface
2348 */
2349 define l2_fib_table_entry
2350 {
2358 };
2359 
2360 /** \brief Dump l2 fib (aka bridge domain) table
2361  @param client_index - opaque cookie to identify the sender
2362  @param bd_id - the l2 fib / bridge domain table identifier
2363 */
2364 define l2_fib_table_dump
2365 {
2369 };
2370 
2371 define vxlan_gpe_add_del_tunnel
2372 {
2376  u8 local[16];
2377  u8 remote[16];
2383 };
2384 
2385 define vxlan_gpe_add_del_tunnel_reply
2386 {
2390 };
2391 
2392 define vxlan_gpe_tunnel_dump
2393 {
2397 };
2398 
2399 define vxlan_gpe_tunnel_details
2400 {
2403  u8 local[16];
2404  u8 remote[16];
2410 };
2411 
2412 /** \brief add or delete locator_set
2413  @param client_index - opaque cookie to identify the sender
2414  @param context - sender context, to match reply w/ request
2415  @param is_add - add address if non-zero, else delete
2416  @param locator_set_name - locator name
2417  @param locator_num - number of locators
2418  @param locators - LISP locator records
2419  Structure of one locator record is as follows:
2420 
2421  define locator_t {
2422  u32 sw_if_index;
2423  u8 priority;
2424  u8 weight;
2425  }
2426 */
2427 define lisp_add_del_locator_set
2428 {
2432  u8 locator_set_name[64];
2434  u8 locators[0];
2435 };
2436 
2437 /** \brief Reply for locator_set add/del
2438  @param context - returned sender context, to match reply w/ request
2439  @param retval - return code
2440  @param ls_index - locator set index
2441 */
2442 define lisp_add_del_locator_set_reply
2443 {
2447 };
2448 
2449 /** \brief add or delete locator for locator_set
2450  @param client_index - opaque cookie to identify the sender
2451  @param context - sender context, to match reply w/ request
2452  @param is_add - add address if non-zero, else delete
2453  @param locator_set_name - name of locator_set to add/del locator
2454  @param sw_if_index - index of the interface
2455  @param priority - priority of the lisp locator
2456  @param weight - weight of the lisp locator
2457 */
2458 define lisp_add_del_locator
2459 {
2463  u8 locator_set_name[64];
2467 };
2468 
2469 /** \brief Reply for locator add/del
2470  @param context - returned sender context, to match reply w/ request
2471  @param retval - return code
2472 */
2473 define lisp_add_del_locator_reply
2474 {
2477 };
2478 
2479 /** \brief add or delete lisp eid-table
2480  @param client_index - opaque cookie to identify the sender
2481  @param context - sender context, to match reply w/ request
2482  @param is_add - add address if non-zero, else delete
2483  @param eid_type:
2484  0 : ipv4
2485  1 : ipv6
2486  2 : mac
2487  @param eid - EID can be ip4, ip6 or mac
2488  @param prefix_len - prefix len
2489  @param locator_set_name - name of locator_set to add/del eid-table
2490  @param vni - virtual network instance
2491 */
2492 define lisp_add_del_local_eid
2493 {
2498  u8 eid[16];
2500  u8 locator_set_name[64];
2502 };
2503 
2504 /** \brief Reply for local_eid add/del
2505  @param context - returned sender context, to match reply w/ request
2506  @param retval - return code
2507 */
2508 define lisp_add_del_local_eid_reply
2509 {
2512 };
2513 
2514 /** \brief add or delete lisp gpe tunnel
2515  @param client_index - opaque cookie to identify the sender
2516  @param context - sender context, to match reply w/ request
2517  @param is_add - add address if non-zero, else delete
2518  @param eid_type -
2519  0 : ipv4
2520  1 : ipv6
2521  2 : mac
2522  @param rmt_eid - remote eid
2523  @param lcl_eid - local eid
2524  @param rmt_len - remote prefix len
2525  @param lcl_len - local prefix len
2526  @param vni - virtual network identifier
2527  @param dp_table - vrf/bridge domain id
2528  @param loc_num - number of locators
2529  @param lcl_locs - array of local locators
2530  @param rmt_locs - array of remote locators
2531  @param action - negative action when 0 locators configured
2532 */
2533 define lisp_gpe_add_del_fwd_entry
2534 {
2539  u8 rmt_eid[16];
2540  u8 lcl_eid[16];
2546  u8 lcl_locs[loc_num];
2547  u8 rmt_locs[loc_num];
2549 };
2550 
2551 /** \brief Reply for gpe_fwd_entry add/del
2552  @param context - returned sender context, to match reply w/ request
2553  @param retval - return code
2554 */
2555 define lisp_gpe_add_del_fwd_entry_reply
2556 {
2559 };
2560 
2561 /** \brief add or delete map-resolver
2562  @param client_index - opaque cookie to identify the sender
2563  @param context - sender context, to match reply w/ request
2564  @param is_add - add address if non-zero, else delete
2565  @param is_ipv6 - if non-zero the address is ipv6, else ipv4
2566  @param ip_address - array of address bytes
2567 */
2568 define lisp_add_del_map_resolver
2569 {
2574  u8 ip_address[16];
2575 };
2576 
2577 /** \brief Reply for map_resolver add/del
2578  @param context - returned sender context, to match reply w/ request
2579  @param retval - return code
2580 */
2581 define lisp_add_del_map_resolver_reply
2582 {
2585 };
2586 
2587 /** \brief enable or disable lisp-gpe protocol
2588  @param client_index - opaque cookie to identify the sender
2589  @param context - sender context, to match reply w/ request
2590  @param is_en - enable protocol if non-zero, else disable
2591 */
2592 define lisp_gpe_enable_disable
2593 {
2597 };
2598 
2599 /** \brief Reply for gpe enable/disable
2600  @param context - returned sender context, to match reply w/ request
2601  @param retval - return code
2602 */
2603 define lisp_gpe_enable_disable_reply
2604 {
2607 };
2608 
2609 /** \brief enable or disable LISP feature
2610  @param client_index - opaque cookie to identify the sender
2611  @param context - sender context, to match reply w/ request
2612  @param is_en - enable protocol if non-zero, else disable
2613 */
2614 define lisp_enable_disable
2615 {
2619 };
2620 
2621 /** \brief Reply for gpe enable/disable
2622  @param context - returned sender context, to match reply w/ request
2623  @param retval - return code
2624 */
2625 define lisp_enable_disable_reply
2626 {
2629 };
2630 
2631 /** \brief add or delete gpe_iface
2632  @param client_index - opaque cookie to identify the sender
2633  @param context - sender context, to match reply w/ request
2634  @param is_add - add address if non-zero, else delete
2635 */
2636 define lisp_gpe_add_del_iface
2637 {
2644 };
2645 
2646 /** \brief Reply for gpe_iface add/del
2647  @param context - returned sender context, to match reply w/ request
2648  @param retval - return code
2649 */
2650 define lisp_gpe_add_del_iface_reply
2651 {
2654 };
2655 
2656 /** \brief configure or disable LISP PITR node
2657  @param client_index - opaque cookie to identify the sender
2658  @param context - sender context, to match reply w/ request
2659  @param ls_name - locator set name
2660  @param is_add - add locator set if non-zero, else disable pitr
2661 */
2662 define lisp_pitr_set_locator_set
2663 {
2667  u8 ls_name[64];
2668 };
2669 
2670 /** \brief Reply for lisp_pitr_set_locator_set
2671  @param context - returned sender context, to match reply w/ request
2672  @param retval - return code
2673 */
2674 define lisp_pitr_set_locator_set_reply
2675 {
2678 };
2679 
2680 /** \brief set LISP map-request mode. Based on configuration VPP will send
2681  src/dest or just normal destination map requests.
2682  @param client_index - opaque cookie to identify the sender
2683  @param context - sender context, to match reply w/ request
2684  @param mode - new map-request mode. Supported values are:
2685  0 - destination only
2686  1 - source/destaination
2687 */
2688 define lisp_map_request_mode
2689 {
2693 };
2694 
2695 /** \brief Reply for lisp_map_request_mode
2696  @param context - returned sender context, to match reply w/ request
2697  @param retval - return code
2698 */
2699 define lisp_map_request_mode_reply
2700 {
2703 };
2704 
2705 /** \brief Request for LISP map-request mode
2706  @param client_index - opaque cookie to identify the sender
2707  @param context - sender context, to match reply w/ request
2708 */
2709 define show_lisp_map_request_mode
2710 {
2713 };
2714 
2715 /** \brief Reply for show_lisp_map_request_mode
2716  @param context - returned sender context, to match reply w/ request
2717  @param retval - return code
2718  @param mode - map-request mode
2719 */
2720 define show_lisp_map_request_mode_reply
2721 {
2725 };
2726 
2727 /** \brief add or delete remote static mapping
2728  @param client_index - opaque cookie to identify the sender
2729  @param context - sender context, to match reply w/ request
2730  @param is_add - add address if non-zero, else delete
2731  @param is_src_dst - flag indicating src/dst based routing policy
2732  @param del_all - if set, delete all remote mappings
2733  @param vni - virtual network instance
2734  @param action - negative map-reply action
2735  @param eid_type -
2736  0 : ipv4
2737  1 : ipv6
2738  2 : mac
2739  @param deid - dst EID
2740  @param seid - src EID, valid only if is_src_dst is enabled
2741  @param rloc_num - number of remote locators
2742  @param rlocs - remote locator records
2743  Structure of remote locator:
2744 
2745  define rloc_t {
2746  u8 is_ip4;
2747  u8 priority;
2748  u8 weight;
2749  u8 addr[16];
2750  }
2751 */
2752 define lisp_add_del_remote_mapping
2753 {
2762  u8 eid[16];
2764  u8 seid[16];
2767  u8 rlocs[0];
2768 };
2769 
2770 /** \brief Reply for lisp_add_del_remote_mapping
2771  @param context - returned sender context, to match reply w/ request
2772  @param retval - return code
2773 */
2774 define lisp_add_del_remote_mapping_reply
2775 {
2778 };
2779 
2780 /** \brief add or delete LISP adjacency adjacency
2781  @param client_index - opaque cookie to identify the sender
2782  @param context - sender context, to match reply w/ request
2783  @param is_add - add address if non-zero, else delete
2784  @param vni - virtual network instance
2785  @param eid_type -
2786  0 : ipv4
2787  1 : ipv6
2788  2 : mac
2789  @param reid - remote EID
2790  @param leid - local EID
2791 */
2793 {
2799  u8 reid[16];
2800  u8 leid[16];
2803 };
2804 
2805 /** \brief Reply for lisp_add_del_adjacency
2806  @param context - returned sender context, to match reply w/ request
2807  @param retval - return code
2808 */
2809 define lisp_add_del_adjacency_reply
2810 {
2813 };
2814 
2815 /** \brief add or delete map request itr rlocs
2816  @param client_index - opaque cookie to identify the sender
2817  @param context - sender context, to match reply w/ request
2818  @param is_add - add address if non-zero, else delete
2819  @param locator_set_name - locator set name
2820 */
2821 define lisp_add_del_map_request_itr_rlocs
2822 {
2826  u8 locator_set_name[64];
2827 };
2828 
2829 /** \brief Reply for lisp_add_del_map_request_itr_rlocs
2830  @param context - returned sender context, to match reply w/ request
2831  @param retval - return code
2832 */
2833 
2834 define lisp_add_del_map_request_itr_rlocs_reply
2835 {
2838 };
2839 
2840 /** \brief map/unmap vni/bd_index to vrf
2841  @param client_index - opaque cookie to identify the sender
2842  @param context - sender context, to match reply w/ request
2843  @param is_add - add or delete mapping
2844  @param dp_table - virtual network id/bridge domain index
2845  @param vrf - vrf
2846 */
2847 define lisp_eid_table_add_del_map
2848 {
2855 };
2856 
2857 /** \brief Reply for lisp_eid_table_add_del_map
2858  @param context - returned sender context, to match reply w/ request
2859  @param retval - return code
2860 */
2861 define lisp_eid_table_add_del_map_reply
2862 {
2865 };
2866 
2867 /** \brief Request for map lisp locator status
2868  @param client_index - opaque cookie to identify the sender
2869  @param context - sender context, to match reply w/ request
2870  @param locator_set_index - index of locator_set
2871  @param ls_name - locator set name
2872  @param is_index_set - flag indicating whether ls_name or ls_index is set
2873  */
2874 define lisp_locator_dump
2875 {
2879  u8 ls_name[64];
2881 };
2882 
2883 /** \brief LISP locator_set status
2884  @param local - if is set, then locator is local
2885  @param locator_set_name - name of the locator_set
2886  @param sw_if_index - sw_if_index of the locator
2887  @param priority - locator priority
2888  @param weight - locator weight
2889  */
2890 define lisp_locator_details
2891 {
2896  u8 ip_address[16];
2899 };
2900 
2901 /** \brief LISP locator_set status
2902  @param context - sender context, to match reply w/ request
2903  @param ls_index - locator set index
2904  @param ls_name - name of the locator set
2905  */
2906 define lisp_locator_set_details
2907 {
2910  u8 ls_name[64];
2911 };
2912 
2913 /** \brief Request for locator_set summary status
2914  @param client_index - opaque cookie to identify the sender
2915  @param context - sender context, to match reply w/ request
2916  @param filter - filter type
2917  Supported values:
2918  0: all locator sets
2919  1: local locator sets
2920  2: remote locator sets
2921  */
2922 define lisp_locator_set_dump
2923 {
2927 };
2928 
2929 /** \brief Dump lisp eid-table
2930  @param client_index - opaque cookie to identify the sender
2931  @param context - sender context, to match reply w/ request
2932  @param locator_set_index - index of locator_set, if ~0 then the mapping
2933  is negative
2934  @param action - negative map request action
2935  @param is_local - local if non-zero, else remote
2936  @param eid_type:
2937  0 : ipv4
2938  1 : ipv6
2939  2 : mac
2940  @param is_src_dst - EID is type of source/destination
2941  @param eid - EID can be ip4, ip6 or mac
2942  @param eid_prefix_len - prefix length
2943  @param seid - source EID can be ip4, ip6 or mac
2944  @param seid_prefix_len - source prefix length
2945  @param vni - virtual network instance
2946  @param ttl - time to live
2947  @param authoritative - authoritative
2948 */
2949 
2950 define lisp_eid_table_details
2951 {
2959  u8 eid[16];
2961  u8 seid[16];
2965 };
2966 
2967 /** \brief Request for eid table summary status
2968  @param client_index - opaque cookie to identify the sender
2969  @param context - sender context, to match reply w/ request
2970  @param eid_set - if non-zero request info about specific mapping
2971  @param vni - virtual network instance; valid only if eid_set != 0
2972  @param prefix_length - prefix length if EID is IP address;
2973  valid only if eid_set != 0
2974  @param eid_type - EID type; valid only if eid_set != 0
2975  Supported values:
2976  0: EID is IPv4
2977  1: EID is IPv6
2978  2: EID is ethernet address
2979  @param eid - endpoint identifier
2980  @param filter - filter type;
2981  Support values:
2982  0: all eid
2983  1: local eid
2984  2: remote eid
2985  */
2986 define lisp_eid_table_dump
2987 {
2994  u8 eid[16];
2996 };
2997 
2998 /** \brief LISP adjacency
2999  @param eid_type -
3000  0 : ipv4
3001  1 : ipv6
3002  2 : mac
3003  @param reid - remote EID
3004  @param leid - local EID
3005  @param reid_prefix_len - remote EID IP prefix length
3006  @param leid_prefix_len - local EID IP prefix length
3007  */
3008 typeonly manual_print manual_endian define lisp_adjacency
3009 {
3011  u8 reid[16];
3012  u8 leid[16];
3015 };
3016 
3017 /** \brief LISP adjacency reply
3018  @param count - number of adjacencies
3019  @param adjacencies - array of adjacencies
3020  */
3021 manual_endian manual_print define lisp_adjacencies_get_reply
3022 {
3026  vl_api_lisp_adjacency_t adjacencies[count];
3027 };
3028 
3029 /** \brief Request for LISP adjacencies
3030  @param client_index - opaque cookie to identify the sender
3031  @param context - sender context, to match reply w/ request
3032  @param vni - filter adjacencies by VNI
3033  */
3034 define lisp_adjacencies_get
3035 {
3039 };
3040 
3041 /** \brief Shows relationship between vni and vrf/bd
3042  @param dp_table - VRF index or bridge domain index
3043  @param vni - vitual network instance
3044  */
3045 define lisp_eid_table_map_details
3046 {
3050 };
3051 
3052 /** \brief Request for lisp_eid_table_map_details
3053  @param client_index - opaque cookie to identify the sender
3054  @param context - sender context, to match reply w/ request
3055  @param is_l2 - if set dump vni/bd mappings else vni/vrf
3056  */
3057 define lisp_eid_table_map_dump
3058 {
3062 };
3063 
3064 /** \brief Dumps all VNIs used in mappings
3065  @param client_index - opaque cookie to identify the sender
3066  @param context - sender context, to match reply w/ request
3067  */
3068 define lisp_eid_table_vni_dump
3069 {
3072 };
3073 
3074 /** \brief reply to lisp_eid_table_vni_dump
3075  @param client_index - opaque cookie to identify the sender
3076  @param context - sender context, to match reply w/ request
3077  @param vni - virtual network instance
3078  */
3079 define lisp_eid_table_vni_details
3080 {
3084 };
3085 
3086 define lisp_gpe_tunnel_details
3087 {
3091  u8 source_ip[16];
3092  u8 destination_ip[16];
3102 };
3103 
3104 /** \brief Request for gpe tunnel summary status
3105  @param client_index - opaque cookie to identify the sender
3106  @param context - sender context, to match reply w/ request
3107  */
3108 define lisp_gpe_tunnel_dump
3109 {
3112 };
3113 
3114 /** \brief LISP map resolver status
3115  @param locator_set_name - name of the locator_set
3116  @param is_ipv6 - if non-zero the address is ipv6, else ipv4
3117  @param ip_address - array of address bytes
3118  */
3119 define lisp_map_resolver_details
3120 {
3123  u8 ip_address[16];
3124 };
3125 
3126 /** \brief Request for map resolver summary status
3127  @param client_index - opaque cookie to identify the sender
3128  @param context - sender context, to match reply w/ request
3129  */
3130 define lisp_map_resolver_dump
3131 {
3134 };
3135 
3136 /** \brief Request for lisp-gpe protocol status
3137  @param client_index - opaque cookie to identify the sender
3138  @param context - sender context, to match reply w/ request
3139 */
3140 define show_lisp_status
3141 {
3144 };
3145 
3146 /** \brief Status of lisp, enable or disable
3147  @param context - sender context, to match reply w/ request
3148  @param feature_status - lisp enable if non-zero, else disable
3149  @param gpe_status - lisp enable if non-zero, else disable
3150 */
3151 define show_lisp_status_reply
3152 {
3157 };
3158 
3159 /** \brief Get LISP map request itr rlocs status
3160  @param context - sender context, to match reply w/ request
3161  @param locator_set_name - name of the locator_set
3162  */
3163 define lisp_get_map_request_itr_rlocs
3164 {
3167 };
3168 
3169 /** \brief Request for map request itr rlocs summary status
3170  */
3171 define lisp_get_map_request_itr_rlocs_reply
3172 {
3175  u8 locator_set_name[64];
3176 };
3177 
3178 /** \brief Request for lisp pitr status
3179  @param client_index - opaque cookie to identify the sender
3180  @param context - sender context, to match reply w/ request
3181 */
3182 define show_lisp_pitr
3183 {
3186 };
3187 
3188 /** \brief Status of lisp pitr, enable or disable
3189  @param context - sender context, to match reply w/ request
3190  @param status - lisp pitr enable if non-zero, else disable
3191  @param locator_set_name - name of the locator_set
3192 */
3193 define show_lisp_pitr_reply
3194 {
3198  u8 locator_set_name[64];
3199 };
3200 
3201 /* Gross kludge, DGMS */
3202 define interface_name_renumber
3203 {
3208 };
3209 
3210 define interface_name_renumber_reply
3211 {
3214 };
3215 
3216 /** \brief Register for ip4 arp resolution events
3217  @param client_index - opaque cookie to identify the sender
3218  @param context - sender context, to match reply w/ request
3219  @param enable_disable - 1 => register for events, 0 => cancel registration
3220  @param pid - sender's pid
3221  @param address - the exact ip4 address of interest
3222 */
3223 define want_ip4_arp_events
3224 {
3230 };
3231 
3232 /** \brief Reply for interface events registration
3233  @param context - returned sender context, to match reply w/ request
3234  @param retval - return code
3235 */
3236 define want_ip4_arp_events_reply
3237 {
3240 };
3241 
3242 /** \brief Tell client about an ip4 arp resolution event
3243  @param client_index - opaque cookie to identify the sender
3244  @param context - sender context, to match reply w/ request
3245  @param address - the exact ip4 address of interest
3246  @param pid - client pid registered to receive notification
3247  @param sw_if_index - interface which received ARP packet
3248  @param new_mac - the new mac address
3249  @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
3250 */
3251 define ip4_arp_event
3252 {
3258  u8 new_mac[6];
3260 };
3261 
3262 /** \brief Register for ip6 nd resolution events
3263  @param client_index - opaque cookie to identify the sender
3264  @param context - sender context, to match reply w/ request
3265  @param enable_disable - 1 => register for events, 0 => cancel registration
3266  @param pid - sender's pid
3267  @param address - the exact ip6 address of interest
3268 */
3269 define want_ip6_nd_events
3270 {
3275  u8 address[16];
3276 };
3277 
3278 /** \brief Reply for ip6 nd resolution events registration
3279  @param context - returned sender context, to match reply w/ request
3280  @param retval - return code
3281 */
3282 define want_ip6_nd_events_reply
3283 {
3286 };
3287 
3288 /** \brief Tell client about an ip6 nd resolution or mac/ip event
3289  @param client_index - opaque cookie to identify the sender
3290  @param context - sender context, to match reply w/ request
3291  @param pid - client pid registered to receive notification
3292  @param sw_if_index - interface which received ARP packet
3293  @param address - the exact ip6 address of interest
3294  @param new_mac - the new mac address
3295  @param mac_ip - 0: resolution event, 1: mac/ip binding in bd
3296 */
3297 define ip6_nd_event
3298 {
3303  u8 address[16];
3304  u8 new_mac[6];
3306 };
3307 
3308 /** \brief L2 bridge domain add or delete request
3309  @param client_index - opaque cookie to identify the sender
3310  @param context - sender context, to match reply w/ request
3311  @param bd_id - the bridge domain to create
3312  @param flood - enable/disable bcast/mcast flooding in the bd
3313  @param uu_flood - enable/disable uknown unicast flood in the bd
3314  @param forward - enable/disable forwarding on all interfaces in the bd
3315  @param learn - enable/disable learning on all interfaces in the bd
3316  @param arp_term - enable/disable arp termination in the bd
3317  @param is_add - add or delete flag
3318 */
3319 define bridge_domain_add_del
3320 {
3330 };
3331 
3332 /** \brief L2 bridge domain add or delete response
3333  @param context - sender context, to match reply w/ request
3334  @param retval - return code for the set bridge flags request
3335 */
3336 define bridge_domain_add_del_reply
3337 {
3340 };
3341 
3342 /** \brief L2 bridge domain request operational state details
3343  @param client_index - opaque cookie to identify the sender
3344  @param context - sender context, to match reply w/ request
3345  @param bd_id - the bridge domain id desired or ~0 to request all bds
3346 */
3347 define bridge_domain_dump
3348 {
3352 };
3353 
3354 /** \brief L2 bridge domain operational state response
3355  @param bd_id - the bridge domain id
3356  @param flood - bcast/mcast flooding state on all interfaces in the bd
3357  @param uu_flood - uknown unicast flooding state on all interfaces in the bd
3358  @param forward - forwarding state on all interfaces in the bd
3359  @param learn - learning state on all interfaces in the bd
3360  @param arp_term - arp termination state on all interfaces in the bd
3361  @param n_sw_ifs - number of sw_if_index's in the domain
3362 */
3363 define bridge_domain_details
3364 {
3374 };
3375 
3376 /** \brief L2 bridge domain sw interface operational state response
3377  @param bd_id - the bridge domain id
3378  @param sw_if_index - sw_if_index in the domain
3379  @param shg - split horizon group for the interface
3380 */
3381 define bridge_domain_sw_if_details
3382 {
3387 };
3388 
3389 /** \brief DHCP Client config add / del request
3390  @param client_index - opaque cookie to identify the sender
3391  @param context - sender context, to match reply w/ request
3392  @param sw_if_index - index of the interface for DHCP client
3393  @param hostname - hostname
3394  @param is_add - add the config if non-zero, else delete
3395  @param want_dhcp_event - DHCP event sent to the sender
3396  via dhcp_compl_event API message if non-zero
3397  @param pid - sender's pid
3398 */
3400 {
3404  u8 hostname[64];
3408 };
3409 
3410 /** \brief DHCP Client config response
3411  @param context - sender context, to match reply w/ request
3412  @param retval - return code for the request
3413 */
3414 define dhcp_client_config_reply
3415 {
3418 };
3419 
3420 /** \brief Set/unset input ACL interface
3421  @param client_index - opaque cookie to identify the sender
3422  @param context - sender context, to match reply w/ request
3423  @param sw_if_index - interface to set/unset input ACL
3424  @param ip4_table_index - ip4 classify table index (~0 for skip)
3425  @param ip6_table_index - ip6 classify table index (~0 for skip)
3426  @param l2_table_index - l2 classify table index (~0 for skip)
3427  @param is_add - Set input ACL if non-zero, else unset
3428  Note: User is recommeneded to use just one valid table_index per call.
3429  (ip4_table_index, ip6_table_index, or l2_table_index)
3430 */
3431 define input_acl_set_interface
3432 {
3440 };
3441 
3442 /** \brief Set/unset input ACL interface response
3443  @param context - sender context, to match reply w/ request
3444  @param retval - return code for the request
3445 */
3446 define input_acl_set_interface_reply
3447 {
3450 };
3451 
3452 /** \brief IPsec: Add/delete Security Policy Database
3453  @param client_index - opaque cookie to identify the sender
3454  @param context - sender context, to match reply w/ request
3455  @param is_add - add SPD if non-zero, else delete
3456  @param spd_id - SPD instance id (control plane allocated)
3457 */
3458 
3459 define ipsec_spd_add_del
3460 {
3465 };
3466 
3467 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
3468  @param context - returned sender context, to match reply w/ request
3469  @param retval - return code
3470 */
3471 
3472 define ipsec_spd_add_del_reply
3473 {
3476 };
3477 
3478 /** \brief IPsec: Add/delete SPD from interface
3479 
3480  @param client_index - opaque cookie to identify the sender
3481  @param context - sender context, to match reply w/ request
3482  @param is_add - add security mode if non-zero, else delete
3483  @param sw_if_index - index of the interface
3484  @param spd_id - SPD instance id to use for lookups
3485 */
3486 
3487 
3488 define ipsec_interface_add_del_spd
3489 {
3492 
3496 };
3497 
3498 /** \brief Reply for IPsec: Add/delete SPD from interface
3499  @param context - returned sender context, to match reply w/ request
3500  @param retval - return code
3501 */
3502 
3503 define ipsec_interface_add_del_spd_reply
3504 {
3507 };
3508 
3509 /** \brief IPsec: Add/delete Security Policy Database entry
3510 
3511  See RFC 4301, 4.4.1.1 on how to match packet to selectors
3512 
3513  @param client_index - opaque cookie to identify the sender
3514  @param context - sender context, to match reply w/ request
3515  @param is_add - add SPD if non-zero, else delete
3516  @param spd_id - SPD instance id (control plane allocated)
3517  @param priority - priority of SPD entry (non-unique value). Used to order SPD matching - higher priorities match before lower
3518  @param is_outbound - entry applies to outbound traffic if non-zero, otherwise applies to inbound traffic
3519  @param is_ipv6 - remote/local address are IPv6 if non-zero, else IPv4
3520  @param remote_address_start - start of remote address range to match
3521  @param remote_address_stop - end of remote address range to match
3522  @param local_address_start - start of local address range to match
3523  @param local_address_stop - end of local address range to match
3524  @param protocol - protocol type to match [0 means any]
3525  @param remote_port_start - start of remote port range to match ...
3526  @param remote_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3527  @param local_port_start - start of local port range to match ...
3528  @param local_port_stop - end of remote port range to match [0 to 65535 means ANY, 65535 to 0 means OPAQUE]
3529  @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)
3530  @param sa_id - SAD instance id (control plane allocated)
3531 
3532 */
3533 
3534 define ipsec_spd_add_del_entry
3535 {
3539 
3543 
3544  // Selector
3547  u8 remote_address_start[16];
3548  u8 remote_address_stop[16];
3549  u8 local_address_start[16];
3550  u8 local_address_stop[16];
3551 
3553 
3558 
3559  // Policy
3562 };
3563 
3564 /** \brief Reply for IPsec: Add/delete Security Policy Database entry
3565  @param context - returned sender context, to match reply w/ request
3566  @param retval - return code
3567 */
3568 
3569 define ipsec_spd_add_del_entry_reply
3570 {
3573 };
3574 
3575 /** \brief IPsec: Add/delete Security Association Database entry
3576  @param client_index - opaque cookie to identify the sender
3577  @param context - sender context, to match reply w/ request
3578  @param is_add - add SAD entry if non-zero, else delete
3579 
3580  @param sad_id - sad id
3581 
3582  @param spi - security parameter index
3583 
3584  @param protocol - 0 = AH, 1 = ESP
3585 
3586  @param crypto_algorithm - 0 = Null, 1 = AES-CBC-128, 2 = AES-CBC-192, 3 = AES-CBC-256, 4 = 3DES-CBC
3587  @param crypto_key_length - length of crypto_key in bytes
3588  @param crypto_key - crypto keying material
3589 
3590  @param integrity_algorithm - 0 = None, 1 = MD5-96, 2 = SHA1-96, 3 = SHA-256, 4 = SHA-384, 5=SHA-512
3591  @param integrity_key_length - length of integrity_key in bytes
3592  @param integrity_key - integrity keying material
3593 
3594  @param use_extended_sequence_number - use ESN when non-zero
3595 
3596  @param is_tunnel - IPsec tunnel mode if non-zero, else transport mode
3597  @param is_tunnel_ipv6 - IPsec tunnel mode is IPv6 if non-zero, else IPv4 tunnel only valid if is_tunnel is non-zero
3598  @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
3599  @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
3600 
3601  To be added:
3602  Anti-replay
3603  IPsec tunnel address copy mode (to support GDOI)
3604  */
3605 
3606 define ipsec_sad_add_del_entry
3607 {
3611 
3613 
3615 
3617 
3620  u8 crypto_key[128];
3621 
3624  u8 integrity_key[128];
3625 
3627 
3630  u8 tunnel_src_address[16];
3631  u8 tunnel_dst_address[16];
3632 };
3633 
3634 /** \brief Reply for IPsec: Add/delete Security Association Database entry
3635  @param context - returned sender context, to match reply w/ request
3636  @param retval - return code
3637 */
3638 
3639 define ipsec_sad_add_del_entry_reply
3640 {
3643 };
3644 
3645 /** \brief IPsec: Update Security Association keys
3646  @param client_index - opaque cookie to identify the sender
3647  @param context - sender context, to match reply w/ request
3648 
3649  @param sa_id - sa id
3650 
3651  @param crypto_key_length - length of crypto_key in bytes
3652  @param crypto_key - crypto keying material
3653 
3654  @param integrity_key_length - length of integrity_key in bytes
3655  @param integrity_key - integrity keying material
3656 */
3657 
3658 define ipsec_sa_set_key
3659 {
3662 
3664 
3666  u8 crypto_key[128];
3667 
3669  u8 integrity_key[128];
3670 };
3671 
3672 /** \brief Reply for IPsec: Update Security Association keys
3673  @param context - returned sender context, to match reply w/ request
3674  @param retval - return code
3675 */
3676 
3677 define ipsec_sa_set_key_reply
3678 {
3681 };
3682 
3683 /** \brief IKEv2: Add/delete profile
3684  @param client_index - opaque cookie to identify the sender
3685  @param context - sender context, to match reply w/ request
3686 
3687  @param name - IKEv2 profile name
3688  @param is_add - Add IKEv2 profile if non-zero, else delete
3689 */
3690 define ikev2_profile_add_del
3691 {
3694 
3695  u8 name[64];
3697 };
3698 
3699 /** \brief Reply for IKEv2: Add/delete profile
3700  @param context - returned sender context, to match reply w/ request
3701  @param retval - return code
3702 */
3703 define ikev2_profile_add_del_reply
3704 {
3707 };
3708 
3709 /** \brief IKEv2: Set IKEv2 profile authentication method
3710  @param client_index - opaque cookie to identify the sender
3711  @param context - sender context, to match reply w/ request
3712 
3713  @param name - IKEv2 profile name
3714  @param auth_method - IKEv2 authentication method (shared-key-mic/rsa-sig)
3715  @param is_hex - Authentication data in hex format if non-zero, else string
3716  @param data_len - Authentication data length
3717  @param data - Authentication data (for rsa-sig cert file path)
3718 */
3719 define ikev2_profile_set_auth
3720 {
3723 
3724  u8 name[64];
3728  u8 data[0];
3729 };
3730 
3731 /** \brief Reply for IKEv2: Set IKEv2 profile authentication method
3732  @param context - returned sender context, to match reply w/ request
3733  @param retval - return code
3734 */
3735 define ikev2_profile_set_auth_reply
3736 {
3739 };
3740 
3741 /** \brief IKEv2: Set IKEv2 profile local/remote identification
3742  @param client_index - opaque cookie to identify the sender
3743  @param context - sender context, to match reply w/ request
3744 
3745  @param name - IKEv2 profile name
3746  @param is_local - Identification is local if non-zero, else remote
3747  @param id_type - Identification type
3748  @param data_len - Identification data length
3749  @param data - Identification data
3750 */
3751 define ikev2_profile_set_id
3752 {
3755 
3756  u8 name[64];
3760  u8 data[0];
3761 };
3762 
3763 /** \brief Reply for IKEv2:
3764  @param context - returned sender context, to match reply w/ request
3765  @param retval - return code
3766 */
3767 define ikev2_profile_set_id_reply
3768 {
3771 };
3772 
3773 /** \brief IKEv2: Set IKEv2 profile traffic selector parameters
3774  @param client_index - opaque cookie to identify the sender
3775  @param context - sender context, to match reply w/ request
3776 
3777  @param name - IKEv2 profile name
3778  @param is_local - Traffic selector is local if non-zero, else remote
3779  @param proto - Traffic selector IP protocol (if zero not relevant)
3780  @param start_port - The smallest port number allowed by traffic selector
3781  @param end_port - The largest port number allowed by traffic selector
3782  @param start_addr - The smallest address included in traffic selector
3783  @param end_addr - The largest address included in traffic selector
3784 */
3785 define ikev2_profile_set_ts
3786 {
3789 
3790  u8 name[64];
3797 };
3798 
3799 /** \brief Reply for IKEv2: Set IKEv2 profile traffic selector parameters
3800  @param context - returned sender context, to match reply w/ request
3801  @param retval - return code
3802 */
3803 define ikev2_profile_set_ts_reply
3804 {
3807 };
3808 
3809 /** \brief IKEv2: Set IKEv2 local RSA private key
3810  @param client_index - opaque cookie to identify the sender
3811  @param context - sender context, to match reply w/ request
3812 
3813  @param key_file - Key file absolute path
3814 */
3816 {
3819 
3820  u8 key_file[256];
3821 };
3822 
3823 /** \brief Reply for IKEv2: Set IKEv2 local key
3824  @param context - returned sender context, to match reply w/ request
3825  @param retval - return code
3826 */
3827 define ikev2_set_local_key_reply
3828 {
3831 };
3832 
3833 /** \brief Tell client about a DHCP completion event
3834  @param client_index - opaque cookie to identify the sender
3835  @param pid - client pid registered to receive notification
3836  @param is_ipv6 - if non-zero the address is ipv6, else ipv4
3837  @param host_address - Host IP address
3838  @param router_address - Router IP address
3839  @param host_mac - Host MAC address
3840 */
3841 define dhcp_compl_event
3842 {
3845  u8 hostname[64];
3847  u8 host_address[16];
3848  u8 router_address[16];
3849  u8 host_mac[6];
3850 };
3851 
3852 /** \brief Add MAP domains
3853  @param client_index - opaque cookie to identify the sender
3854  @param context - sender context, to match reply w/ request
3855  @param ip6_prefix - Rule IPv6 prefix
3856  @param ip4_prefix - Rule IPv4 prefix
3857  @param ip6_src - MAP domain IPv6 BR address / Tunnel source
3858  @param ip6_prefix_len - Rule IPv6 prefix length
3859  @param ip4_prefix_len - Rule IPv4 prefix length
3860  @param ea_bits_len - Embedded Address bits length
3861  @param psid_offset - Port Set Identifider (PSID) offset
3862  @param psid_length - PSID length
3863  @param is_translation - MAP-E / MAP-T
3864  @param mtu - MTU
3865 */
3866 define map_add_domain
3867 {
3870  u8 ip6_prefix[16];
3871  u8 ip4_prefix[4];
3872  u8 ip6_src[16];
3881 };
3882 
3883 /** \brief Reply for MAP domain add
3884  @param context - returned sender context, to match reply w/ request
3885  @param index - MAP domain index
3886  @param retval - return code
3887 */
3888 define map_add_domain_reply
3889 {
3893 };
3894 
3895 /** \brief Delete MAP domain
3896  @param client_index - opaque cookie to identify the sender
3897  @param context - sender context, to match reply w/ request
3898  @param index - MAP Domain index
3899 */
3900 define map_del_domain
3901 {
3905 };
3906 
3907 /** \brief Reply for MAP domain del
3908  @param context - returned sender context, to match reply w/ request
3909  @param retval - return code
3910 */
3911 define map_del_domain_reply
3912 {
3915 };
3916 
3917 /** \brief Add or Delete MAP rule from a domain (Only used for shared IPv4 per subscriber)
3918  @param client_index - opaque cookie to identify the sender
3919  @param context - sender context, to match reply w/ request
3920  @param index - MAP Domain index
3921  @param is_add - If 1 add rule, if 0 delete rule
3922  @param ip6_dst - MAP CE IPv6 address
3923  @param psid - Rule PSID
3924 */
3925 define map_add_del_rule
3926 {
3931  u8 ip6_dst[16];
3933 };
3934 
3935 /** \brief Reply for MAP rule add/del
3936  @param context - returned sender context, to match reply w/ request
3937  @param retval - return code
3938 */
3939 define map_add_del_rule_reply
3940 {
3943 };
3944 
3945 /** \brief Get list of map domains
3946  @param client_index - opaque cookie to identify the sender
3947 */
3948 define map_domain_dump
3949 {
3952 };
3953 
3954 define map_domain_details
3955 {
3958  u8 ip6_prefix[16];
3959  u8 ip4_prefix[4];
3960  u8 ip6_src[16];
3970 };
3971 
3972 define map_rule_dump
3973 {
3977 };
3978 
3979 define map_rule_details
3980 {
3982  u8 ip6_dst[16];
3984 };
3985 
3986 /** \brief Request for a single block of summary stats
3987  @param client_index - opaque cookie to identify the sender
3988  @param context - sender context, to match reply w/ request
3989 */
3990 define map_summary_stats
3991 {
3994 };
3995 
3996 /** \brief Reply for map_summary_stats request
3997  @param context - sender context, to match reply w/ request
3998  @param retval - return code for request
3999  @param total_bindings -
4000  @param total_pkts -
4001  @param total_ip4_fragments -
4002  @param total_security_check -
4003 */
4004 define map_summary_stats_reply
4005 {
4009  u64 total_pkts[2];
4010  u64 total_bytes[2];
4012  u64 total_security_check[2];
4013 };
4014 
4015 /** \brief cop: enable/disable junk filtration features on an interface
4016  @param client_index - opaque cookie to identify the sender
4017  @param context - sender context, to match reply w/ request
4018  @param sw_if_inded - desired interface
4019  @param enable_disable - 1 => enable, 0 => disable
4020 */
4021 
4023 {
4028 };
4029 
4030 /** \brief cop: interface enable/disable junk filtration reply
4031  @param context - returned sender context, to match reply w/ request
4032  @param retval - return code
4033 */
4034 
4035 define cop_interface_enable_disable_reply
4036 {
4039 };
4040 
4041 /** \brief cop: enable/disable whitelist filtration features on an interface
4042  Note: the supplied fib_id must match in order to remove the feature!
4043 
4044  @param client_index - opaque cookie to identify the sender
4045  @param context - sender context, to match reply w/ request
4046  @param sw_if_index - interface handle, physical interfaces only
4047  @param fib_id - fib identifier for the whitelist / blacklist fib
4048  @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration
4049  @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration
4050  @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it
4051 */
4052 
4054 {
4062 };
4063 
4064 /** \brief cop: interface enable/disable junk filtration reply
4065  @param context - returned sender context, to match reply w/ request
4066  @param retval - return code
4067 */
4068 
4069 define cop_whitelist_enable_disable_reply
4070 {
4073 };
4074 
4075 /** \brief get_node_graph - get a copy of the vpp node graph
4076  including the current set of graph arcs.
4077 
4078  @param client_index - opaque cookie to identify the sender
4079  @param context - sender context, to match reply w/ request
4080 */
4081 
4082 define get_node_graph
4083 {
4086 };
4087 
4088 /** \brief get_node_graph_reply
4089  @param context - returned sender context, to match reply w/ request
4090  @param retval - return code
4091  @param reply_in_shmem - result from vlib_node_serialize, in shared
4092  memory. Process with vlib_node_unserialize, remember to switch
4093  heaps and free the result.
4094 */
4095 
4096 define get_node_graph_reply
4097 {
4101 };
4102 
4103 /** \brief Clear interface statistics
4104  @param client_index - opaque cookie to identify the sender
4105  @param context - sender context, to match reply w/ request
4106  @param sw_if_index - index of the interface to clear statistics
4107 */
4108 define sw_interface_clear_stats
4109 {
4113 };
4114 
4115 /** \brief Reply to sw_interface_clear_stats
4116  @param context - sender context which was passed in the request
4117  @param retval - return code of the set flags request
4118 */
4119 define sw_interface_clear_stats_reply
4120 {
4123 };
4124 
4125 /** \brief IOAM enable : Enable in-band OAM
4126  @param id - profile id
4127  @param seqno - To enable Seqno Processing
4128  @param analyse - Enabling analysis of iOAM at decap node
4129  @param pow_enable - Proof of Work enabled or not flag
4130  @param trace_enable - iOAM Trace enabled or not flag
4131 */
4132 define ioam_enable
4133 {
4142 };
4143 
4144 /** \brief iOAM Trace profile add / del response
4145  @param context - sender context, to match reply w/ request
4146  @param retval - return value for request
4147 */
4148 define ioam_enable_reply
4149 {
4152 };
4153 
4154 /** \brief iOAM disable
4155  @param client_index - opaque cookie to identify the sender
4156  @param context - sender context, to match reply w/ request
4157  @param index - MAP Domain index
4158 */
4159 define ioam_disable
4160 {
4164 };
4165 
4166 /** \brief iOAM disable response
4167  @param context - sender context, to match reply w/ request
4168  @param retval - return value for request
4169 */
4170 define ioam_disable_reply
4171 {
4174 };
4175 
4176 /** \brief Create host-interface
4177  @param client_index - opaque cookie to identify the sender
4178  @param context - sender context, to match reply w/ request
4179  @param host_if_name - interface name
4180  @param hw_addr - interface MAC
4181  @param use_random_hw_addr - use random generated MAC
4182 */
4183 define af_packet_create
4184 {
4187 
4188  u8 host_if_name[64];
4189  u8 hw_addr[6];
4191 };
4192 
4193 /** \brief Create host-interface response
4194  @param context - sender context, to match reply w/ request
4195  @param retval - return value for request
4196 */
4197 define af_packet_create_reply
4198 {
4202 };
4203 
4204 /** \brief Delete host-interface
4205  @param client_index - opaque cookie to identify the sender
4206  @param context - sender context, to match reply w/ request
4207  @param host_if_name - interface name
4208 */
4209 define af_packet_delete
4210 {
4213 
4214  u8 host_if_name[64];
4215 };
4216 
4217 /** \brief Delete host-interface response
4218  @param context - sender context, to match reply w/ request
4219  @param retval - return value for request
4220 */
4221 define af_packet_delete_reply
4222 {
4225 };
4226 
4227 /** \brief Add/del policer
4228  @param client_index - opaque cookie to identify the sender
4229  @param context - sender context, to match reply w/ request
4230  @param is_add - add policer if non-zero, else delete
4231  @param name - policer name
4232  @param cir - CIR
4233  @param eir - EIR
4234  @param cb - Committed Burst
4235  @param eb - Excess or Peak Burst
4236  @param rate_type - rate type
4237  @param round_type - rounding type
4238  @param type - policer algorithm
4239  @param color_aware - 0=color-blind, 1=color-aware
4240  @param conform_action_type - conform action type
4241  @param conform_dscp - DSCP for conform mar-and-transmit action
4242  @param exceed_action_type - exceed action type
4243  @param exceed_dscp - DSCP for exceed mar-and-transmit action
4244  @param violate_action_type - violate action type
4245  @param violate_dscp - DSCP for violate mar-and-transmit action
4246 */
4248 {
4251 
4253  u8 name[64];
4268 };
4269 
4270 /** \brief Add/del policer response
4271  @param context - sender context, to match reply w/ request
4272  @param retval - return value for request
4273  @param policer_index - for add, returned index of the new policer
4274 */
4275 define policer_add_del_reply
4276 {
4280 };
4281 
4282 /** \brief Get list of policers
4283  @param client_index - opaque cookie to identify the sender
4284  @param context - sender context, to match reply w/ request
4285  @param match_name_valid - if 0 request all policers otherwise use match_name
4286  @param match_name - policer name
4287 */
4288 define policer_dump
4289 {
4292 
4294  u8 match_name[64];
4295 };
4296 
4297 /** \brief Policer operational state response.
4298  @param context - sender context, to match reply w/ request
4299  @param name - policer name
4300  @param cir - CIR
4301  @param eir - EIR
4302  @param cb - Committed Burst
4303  @param eb - Excess or Peak Burst
4304  @param rate_type - rate type
4305  @param round_type - rounding type
4306  @param type - policer algorithm
4307  @param conform_action_type - conform action type
4308  @param conform_dscp - DSCP for conform mar-and-transmit action
4309  @param exceed_action_type - exceed action type
4310  @param exceed_dscp - DSCP for exceed mar-and-transmit action
4311  @param violate_action_type - violate action type
4312  @param violate_dscp - DSCP for violate mar-and-transmit action
4313  @param single_rate - 1 = single rate policer, 0 = two rate policer
4314  @param color_aware - for hierarchical policing
4315  @param scale - power-of-2 shift amount for lower rates
4316  @param cir_tokens_per_period - number of tokens for each period
4317  @param pir_tokens_per_period - number of tokens for each period for 2-rate policer
4318  @param current_limit - current limit
4319  @param current_bucket - current bucket
4320  @param extended_limit - extended limit
4321  @param extended_bucket - extended bucket
4322  @param last_update_time - last update time
4323 */
4324 define policer_details
4325 {
4327 
4328  u8 name[64];
4352 };
4353 
4354 /** \brief Set/unset policer classify interface
4355  @param client_index - opaque cookie to identify the sender
4356  @param context - sender context, to match reply w/ request
4357  @param sw_if_index - interface to set/unset policer classify
4358  @param ip4_table_index - ip4 classify table index (~0 for skip)
4359  @param ip6_table_index - ip6 classify table index (~0 for skip)
4360  @param l2_table_index - l2 classify table index (~0 for skip)
4361  @param is_add - Set if non-zero, else unset
4362  Note: User is recommeneded to use just one valid table_index per call.
4363  (ip4_table_index, ip6_table_index, or l2_table_index)
4364 */
4365 define policer_classify_set_interface
4366 {
4374 };
4375 
4376 /** \brief Set/unset policer classify interface response
4377  @param context - sender context, to match reply w/ request
4378  @param retval - return value for request
4379 */
4380 define policer_classify_set_interface_reply
4381 {
4384 };
4385 
4386 /** \brief Get list of policer classify interfaces and tables
4387  @param client_index - opaque cookie to identify the sender
4388  @param context - sender context, to match reply w/ request
4389  @param type - classify table type
4390 */
4391 define policer_classify_dump
4392 {
4396 };
4397 
4398 /** \brief Policer iclassify operational state response.
4399  @param context - sender context, to match reply w/ request
4400  @param sw_if_index - software interface index
4401  @param table_index - classify table index
4402 */
4403 define policer_classify_details
4404 {
4408 };
4409 
4410 /** \brief Create netmap
4411  @param client_index - opaque cookie to identify the sender
4412  @param context - sender context, to match reply w/ request
4413  @param netmap_if_name - interface name
4414  @param hw_addr - interface MAC
4415  @param use_random_hw_addr - use random generated MAC
4416  @param is_pipe - is pipe
4417  @param is_master - 0=slave, 1=master
4418 */
4419 define netmap_create
4420 {
4423 
4424  u8 netmap_if_name[64];
4425  u8 hw_addr[6];
4429 };
4430 
4431 /** \brief Create netmap response
4432  @param context - sender context, to match reply w/ request
4433  @param retval - return value for request
4434 */
4435 define netmap_create_reply
4436 {
4439 };
4440 
4441 /** \brief Delete netmap
4442  @param client_index - opaque cookie to identify the sender
4443  @param context - sender context, to match reply w/ request
4444  @param netmap_if_name - interface name
4445 */
4446 define netmap_delete
4447 {
4450 
4451  u8 netmap_if_name[64];
4452 };
4453 
4454 /** \brief Delete netmap response
4455  @param context - sender context, to match reply w/ request
4456  @param retval - return value for request
4457 */
4458 define netmap_delete_reply
4459 {
4462 };
4463 
4464 /** \brief Dump mpls gre tunnel table
4465  @param client_index - opaque cookie to identify the sender
4466  @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
4467 */
4468 define mpls_gre_tunnel_dump
4469 {
4473 };
4474 
4475 /** \brief mpls gre tunnel operational state response
4476  @param tunnel_index - gre tunnel identifier
4477  @param intfc_address - interface ipv4 addr
4478  @param mask_width - interface ipv4 addr mask
4479  @param hw_if_index - interface id
4480  @param l2_only -
4481  @param tunnel_src - tunnel source ipv4 addr
4482  @param tunnel_dst - tunnel destination ipv4 addr
4483  @param outer_fib_index - gre tunnel identifier
4484  @param encap_index - reference to mpls label table
4485  @param nlabels - number of resolved labels
4486  @param labels - resolved labels
4487 */
4488 define mpls_gre_tunnel_details
4489 {
4492 
4503  u32 labels[nlabels];
4504 };
4505 
4506 /** \brief Dump mpls eth tunnel table
4507  @param client_index - opaque cookie to identify the sender
4508  @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels
4509 */
4510 define mpls_eth_tunnel_dump
4511 {
4515 };
4516 
4517 /** \brief mpls eth tunnel operational state response
4518  @param tunnel_index - eth tunnel identifier
4519  @param intfc_address - interface ipv4 addr
4520  @param mask_width - interface ipv4 addr mask
4521  @param hw_if_index - interface id
4522  @param l2_only -
4523  @param tunnel_dst_mac -
4524  @param tx_sw_if_index -
4525  @param encap_index - reference to mpls label table
4526  @param nlabels - number of resolved labels
4527  @param labels - resolved labels
4528 */
4529 define mpls_eth_tunnel_details
4530 {
4533 
4540  u8 tunnel_dst_mac[6];
4543  u32 labels[nlabels];
4544 };
4545 
4546 /** \brief Dump mpls fib table
4547  @param client_index - opaque cookie to identify the sender
4548  @param fib_index - mpls fib entry identifier or -1 in case of all entries
4549 */
4550 define mpls_fib_encap_dump
4551 {
4554 };
4555 
4556 /** \brief mpls fib encap table response
4557  @param fib_index - fib table id
4558  @param dest - destination ipv4 addr
4559  @param s_bit -
4560  @param entry_index - reference to mpls label table
4561  @param nlabels - number of resolved labels
4562  @param labels - resolved labels
4563 */
4564 define mpls_fib_encap_details
4565 {
4567 
4573  u32 labels[nlabels];
4574 };
4575 
4576 /** \brief Classify get table IDs request
4577  @param client_index - opaque cookie to identify the sender
4578  @param context - sender context, to match reply w/ request
4579 */
4580 define classify_table_ids
4581 {
4584 };
4585 
4586 /** \brief Reply for classify get table IDs request
4587  @param context - sender context which was passed in the request
4588  @param count - number of ids returned in response
4589  @param ids - array of classify table ids
4590 */
4591 define classify_table_ids_reply
4592 {
4596  u32 ids[count];
4597 };
4598 
4599 /** \brief Classify table ids by interface index request
4600  @param client_index - opaque cookie to identify the sender
4601  @param context - sender context, to match reply w/ request
4602  @param sw_if_index - index of the interface
4603 */
4604 define classify_table_by_interface
4605 {
4609 };
4610 
4611 /** \brief Reply for classify table id by interface index request
4612  @param context - sender context which was passed in the request
4613  @param count - number of ids returned in response
4614  @param sw_if_index - index of the interface
4615  @param l2_table_id - l2 classify table index
4616  @param ip4_table_id - ip4 classify table index
4617  @param ip6_table_id - ip6 classify table index
4618 */
4619 define classify_table_by_interface_reply
4620 {
4627 };
4628 
4629 /** \brief Classify table info
4630  @param client_index - opaque cookie to identify the sender
4631  @param context - sender context, to match reply w/ request
4632  @param table_id - classify table index
4633 */
4634 define classify_table_info
4635 {
4639 };
4640 
4641 /** \brief Reply for classify table info request
4642  @param context - sender context which was passed in the request
4643  @param count - number of ids returned in response
4644  @param table_id - classify table index
4645  @param nbuckets - number of buckets when adding a table
4646  @param match_n_vectors - number of match vectors
4647  @param skip_n_vectors - number of skip_n_vectors
4648  @param active_sessions - number of sessions (active entries)
4649  @param next_table_index - index of next table
4650  @param miss_next_index - index of miss table
4651  @param mask[] - match mask
4652 */
4653 define classify_table_info_reply
4654 {
4665  u8 mask[mask_length];
4666 };
4667 
4668 /** \brief Classify sessions dump request
4669  @param client_index - opaque cookie to identify the sender
4670  @param context - sender context, to match reply w/ request
4671  @param table_id - classify table index
4672 */
4673 define classify_session_dump
4674 {
4678 };
4679 
4680 /** \brief Reply for classify table session dump request
4681  @param context - sender context which was passed in the request
4682  @param count - number of ids returned in response
4683  @param table_id - classify table index
4684  @param hit_next_index - hit_next_index of session
4685  @param opaque_index - for add, opaque_index of session
4686  @param advance - advance value of session
4687  @param match[] - match value for session
4688 */
4689 define classify_session_details
4690 {
4698  u8 match[match_length];
4699 };
4700 
4701 /** \brief Configure IPFIX exporter process request
4702  @param client_index - opaque cookie to identify the sender
4703  @param context - sender context, to match reply w/ request
4704  @param collector_address - address of IPFIX collector
4705  @param collector_port - port of IPFIX collector
4706  @param src_address - address of IPFIX exporter
4707  @param vrf_id - VRF / fib table ID
4708  @param path_mtu - Path MTU between exporter and collector
4709  @param template_interval - number of seconds after which to resend template
4710  @param udp_checksum - UDP checksum calculation enable flag
4711 */
4712 define set_ipfix_exporter
4713 {
4716  u8 collector_address[16];
4718  u8 src_address[16];
4723 };
4724 
4725 /** \brief Reply to IPFIX exporter configure request
4726  @param context - sender context which was passed in the request
4727 */
4728 define set_ipfix_exporter_reply
4729 {
4732 };
4733 
4734 /** \brief IPFIX exporter dump request
4735  @param client_index - opaque cookie to identify the sender
4736  @param context - sender context, to match reply w/ request
4737 */
4738 define ipfix_exporter_dump
4739 {
4742 };
4743 
4744 /** \brief Reply to IPFIX exporter dump request
4745  @param context - sender context which was passed in the request
4746  @param collector_address - address of IPFIX collector
4747  @param collector_port - port of IPFIX collector
4748  @param src_address - address of IPFIX exporter
4749  @param fib_index - fib table index
4750  @param path_mtu - Path MTU between exporter and collector
4751  @param template_interval - number of seconds after which to resend template
4752  @param udp_checksum - UDP checksum calculation enable flag
4753 */
4754 define ipfix_exporter_details
4755 {
4757  u8 collector_address[16];
4759  u8 src_address[16];
4764 };
4765 
4766 /** \brief IPFIX classify stream configure request
4767  @param client_index - opaque cookie to identify the sender
4768  @param context - sender context, to match reply w/ request
4769  @param domain_id - domain ID reported in IPFIX messages for classify stream
4770  @param src_port - source port of UDP session for classify stream
4771 */
4772 define set_ipfix_classify_stream {
4777 };
4778 
4779 /** \brief IPFIX classify stream configure response
4780  @param context - sender context, to match reply w/ request
4781  @param retval - return value for request
4782 */
4783 define set_ipfix_classify_stream_reply {
4786 };
4787 
4788 /** \brief IPFIX classify stream dump request
4789  @param client_index - opaque cookie to identify the sender
4790  @param context - sender context, to match reply w/ request
4791 */
4792 define ipfix_classify_stream_dump {
4795 };
4796 
4797 /** \brief Reply to IPFIX classify stream dump request
4798  @param context - sender context, to match reply w/ request
4799  @param domain_id - domain ID reported in IPFIX messages for classify stream
4800  @param src_port - source port of UDP session for classify stream
4801 */
4802 define ipfix_classify_stream_details {
4806 };
4807 
4808 /** \brief IPFIX add or delete classifier table request
4809  @param client_index - opaque cookie to identify the sender
4810  @param context - sender context, to match reply w/ request
4811  @param table_id - classifier table ID
4812  @param ip_version - version of IP used in the classifier table
4813  @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
4814 */
4815 define ipfix_classify_table_add_del {
4822 };
4823 
4824 /** \brief IPFIX add classifier table response
4825  @param context - sender context which was passed in the request
4826 */
4827 define ipfix_classify_table_add_del_reply {
4830 };
4831 
4832 /** \brief IPFIX classify tables dump request
4833  @param client_index - opaque cookie to identify the sender
4834  @param context - sender context, to match reply w/ request
4835 */
4836 define ipfix_classify_table_dump {
4839 };
4840 
4841 /** \brief Reply to IPFIX classify tables dump request
4842  @param context - sender context, to match reply w/ request
4843  @param table_id - classifier table ID
4844  @param ip_version - version of IP used in the classifier table
4845  @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
4846 */
4847 define ipfix_classify_table_details {
4852 };
4853 
4854 /** \brief Set/unset flow classify interface
4855  @param client_index - opaque cookie to identify the sender
4856  @param context - sender context, to match reply w/ request
4857  @param sw_if_index - interface to set/unset flow classify
4858  @param ip4_table_index - ip4 classify table index (~0 for skip)
4859  @param ip6_table_index - ip6 classify table index (~0 for skip)
4860  @param l2_table_index - l2 classify table index (~0 for skip)
4861  @param is_add - Set if non-zero, else unset
4862  Note: User is recommeneded to use just one valid table_index per call.
4863  (ip4_table_index, ip6_table_index, or l2_table_index)
4864 */
4865 define flow_classify_set_interface {
4872 };
4873 
4874 /** \brief Set/unset flow classify interface response
4875  @param context - sender context, to match reply w/ request
4876  @param retval - return value for request
4877 */
4878 define flow_classify_set_interface_reply {
4881 };
4882 
4883 /** \brief Get list of flow classify interfaces and tables
4884  @param client_index - opaque cookie to identify the sender
4885  @param context - sender context, to match reply w/ request
4886  @param type - classify table type
4887 */
4888 define flow_classify_dump {
4892 };
4893 
4894 /** \brief Flow classify operational state response.
4895  @param context - sender context, to match reply w/ request
4896  @param sw_if_index - software interface index
4897  @param table_index - classify table index
4898 */
4899 define flow_classify_details {
4903 };
4904 
4905 /** \brief Query relative index via node names
4906  @param client_index - opaque cookie to identify the sender
4907  @param context - sender context, to match reply w/ request
4908  @param node_name - name of node to find relative index from
4909  @param next_name - next node from node_name to find relative index of
4910 */
4911 define get_next_index
4912 {
4915  u8 node_name[64];
4916  u8 next_name[64];
4917 };
4918 
4919 /** \brief Reply for get next node index
4920  @param context - sender context which was passed in the request
4921  @param retval - return value
4922  @param next_index - index of the next_node
4923 */
4924 define get_next_index_reply
4925 {
4929 };
4930 
4931 /** \brief PacketGenerator create interface request
4932  @param client_index - opaque cookie to identify the sender
4933  @param context - sender context, to match reply w/ request
4934  @param interface_id - interface index
4935 */
4936 define pg_create_interface
4937 {
4941 };
4942 
4943 /** \brief PacketGenerator create interface response
4944  @param context - sender context, to match reply w/ request
4945  @param retval - return value for request
4946 */
4947 define pg_create_interface_reply
4948 {
4952 };
4953 
4954 /** \brief PacketGenerator capture packets on given interface request
4955  @param client_index - opaque cookie to identify the sender
4956  @param context - sender context, to match reply w/ request
4957  @param interface_id - pg interface index
4958  @param is_enabled - 1 if enabling streams, 0 if disabling
4959  @param count - number of packets to be captured
4960  @param pcap_file - pacp file name to store captured packets
4961 */
4963 {
4970  u8 pcap_file_name[pcap_name_length];
4971 };
4972 
4973 /** \brief PacketGenerator capture packets response
4974  @param context - sender context, to match reply w/ request
4975  @param retval - return value for request
4976 */
4977 define pg_capture_reply
4978 {
4981 };
4982 
4983 /** \brief Enable / disable packet generator request
4984  @param client_index - opaque cookie to identify the sender
4985  @param context - sender context, to match reply w/ request
4986  @param is_enabled - 1 if enabling streams, 0 if disabling
4987  @param stream - stream name to be enable/disabled, if not specified handle all streams
4988 */
4990 {
4995  u8 stream_name[stream_name_length];
4996 };
4997 
4998 /** \brief Reply for enable / disable packet generator
4999  @param context - returned sender context, to match reply w/ request
5000  @param retval - return code
5001 */
5002 define pg_enable_disable_reply
5003 {
5006 };
5007 
5008 /** \brief Configure IP source and L4 port-range check
5009  @param client_index - opaque cookie to identify the sender
5010  @param context - sender context, to match reply w/ request
5011  @param is_ip6 - 1 if source address type is IPv6
5012  @param is_add - 1 if add, 0 if delete
5013  @param mask_length - mask length for address entry
5014  @param address - array of address bytes
5015  @param number_of_ranges - length of low_port and high_port arrays (must match)
5016  @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
5017  @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
5018  @param vrf_id - fib table/vrf id to associate the source and port-range check with
5019  @note To specify a single port set low_port and high_port entry the same
5020 */
5021 define ip_source_and_port_range_check_add_del
5022 {
5028  u8 address[16];
5030  u16 low_ports[32];
5031  u16 high_ports[32];
5033 };
5034 
5035 /** \brief Configure IP source and L4 port-range check reply
5036  @param context - returned sender context, to match reply w/ request
5037  @param retval - return code
5038 */
5039 define ip_source_and_port_range_check_add_del_reply
5040 {
5043 };
5044 
5045 /** \brief Set interface source and L4 port-range request
5046  @param client_index - opaque cookie to identify the sender
5047  @param context - sender context, to match reply w/ request
5048  @param interface_id - interface index
5049  @param tcp_vrf_id - VRF associated with source and TCP port-range check
5050  @param udp_vrf_id - VRF associated with source and TCP port-range check
5051 */
5052 define ip_source_and_port_range_check_interface_add_del
5053 {
5062 };
5063 
5064 /** \brief Set interface source and L4 port-range response
5065  @param context - sender context, to match reply w/ request
5066  @param retval - return value for request
5067 */
5068 define ip_source_and_port_range_check_interface_add_del_reply
5069 {
5072 };
5073 
5074 /** \brief Add / del ipsec gre tunnel request
5075  @param client_index - opaque cookie to identify the sender
5076  @param context - sender context, to match reply w/ request
5077  @param local_sa_id - local SA id
5078  @param remote_sa_id - remote SA id
5079  @param is_add - 1 if adding the tunnel, 0 if deleting
5080  @param src_address - tunnel source address
5081  @param dst_address - tunnel destination address
5082 */
5083 define ipsec_gre_add_del_tunnel {
5089  u8 src_address[4];
5090  u8 dst_address[4];
5091 };
5092 
5093 /** \brief Reply for add / del ipsec gre tunnel request
5094  @param context - returned sender context, to match reply w/ request
5095  @param retval - return code
5096  @param sw_if_index - software index of the new ipsec gre tunnel
5097 */
5098 define ipsec_gre_add_del_tunnel_reply {
5102 };
5103 
5104 /** \brief Dump ipsec gre tunnel table
5105  @param client_index - opaque cookie to identify the sender
5106  @param context - sender context, to match reply w/ request
5107  @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels
5108 */
5109 define ipsec_gre_tunnel_dump {
5113 };
5114 
5115 /** \brief mpls gre tunnel operational state response
5116  @param context - returned sender context, to match reply w/ request
5117  @param sw_if_index - software index of the ipsec gre tunnel
5118  @param local_sa_id - local SA id
5119  @param remote_sa_id - remote SA id
5120  @param src_address - tunnel source address
5121  @param dst_address - tunnel destination address
5122 */
5123 define ipsec_gre_tunnel_details {
5128  u8 src_address[4];
5129  u8 dst_address[4];
5130 };
5131 
5132 /** \brief Delete sub interface request
5133  @param client_index - opaque cookie to identify the sender
5134  @param context - sender context, to match reply w/ request
5135  @param sw_if_index - sw index of the interface that was created by create_subif
5136 */
5137 define delete_subif {
5141 };
5142 
5143 /** \brief Delete sub interface response
5144  @param context - sender context, to match reply w/ request
5145  @param retval - return code for the request
5146 */
5147 define delete_subif_reply {
5150 };
5151 
5152 /** \brief DPDK interface HQoS pipe profile set request
5153  @param client_index - opaque cookie to identify the sender
5154  @param context - sender context, to match reply w/ request
5155  @param sw_if_index - the interface
5156  @param subport - subport ID
5157  @param pipe - pipe ID within its subport
5158  @param profile - pipe profile ID
5159 */
5160 define sw_interface_set_dpdk_hqos_pipe {
5167 };
5168 
5169 /** \brief DPDK interface HQoS pipe profile set reply
5170  @param context - sender context, to match reply w/ request
5171  @param retval - request return code
5172 */
5173 define sw_interface_set_dpdk_hqos_pipe_reply {
5176 };
5177 
5178 /** \brief DPDK interface HQoS subport parameters set request
5179  @param client_index - opaque cookie to identify the sender
5180  @param context - sender context, to match reply w/ request
5181  @param sw_if_index - the interface
5182  @param subport - subport ID
5183  @param tb_rate - subport token bucket rate (measured in bytes/second)
5184  @param tb_size - subport token bucket size (measured in credits)
5185  @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second)
5186  @param tc_period - enforcement period for rates (measured in milliseconds)
5187 */
5188 define sw_interface_set_dpdk_hqos_subport {
5195  u32 tc_rate[4];
5197 };
5198 
5199 /** \brief DPDK interface HQoS subport parameters set reply
5200  @param context - sender context, to match reply w/ request
5201  @param retval - request return code
5202 */
5203 define sw_interface_set_dpdk_hqos_subport_reply {
5206 };
5207 
5208 /** \brief DPDK interface HQoS tctbl entry set request
5209  @param client_index - opaque cookie to identify the sender
5210  @param context - sender context, to match reply w/ request
5211  @param sw_if_index - the interface
5212  @param entry - entry index ID
5213  @param tc - traffic class (0 .. 3)
5214  @param queue - traffic class queue (0 .. 3)
5215 */
5216 define sw_interface_set_dpdk_hqos_tctbl {
5223 };
5224 
5225 /** \brief DPDK interface HQoS tctbl entry set reply
5226  @param context - sender context, to match reply w/ request
5227  @param retval - request return code
5228 */
5229 define sw_interface_set_dpdk_hqos_tctbl_reply {
5232 };
5233 
5234 /** \brief L2 interface pbb tag rewrite configure request
5235  @param client_index - opaque cookie to identify the sender
5236  @param context - sender context, to match reply w/ request
5237  @param sw_if_index - interface the operation is applied to
5238  @param vtr_op - Choose from l2_vtr_op_t enum values
5239  @param inner_tag - needed for translate_qinq vtr op only
5240  @param outer_tag - needed for translate_qinq vtr op only
5241  @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op
5242  @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op
5243  @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op
5244  @param i_sid - I-tag service id, needed for any push or translate qinq vtr op
5245 */
5246 define l2_interface_pbb_tag_rewrite
5247 {
5253  u8 b_dmac[6];
5254  u8 b_smac[6];
5257 };
5258 
5259 /** \brief L2 interface pbb tag rewrite response
5260  @param context - sender context, to match reply w/ request
5261  @param retval - return code for the request
5262 */
5263 define l2_interface_pbb_tag_rewrite_reply
5264 {
5267 };
5268 
5269 /** \brief Punt traffic to the host
5270  @param client_index - opaque cookie to identify the sender
5271  @param context - sender context, to match reply w/ request
5272  @param is_add - add punt if non-zero, else delete
5273  @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All
5274  @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported
5275  @param l4_port - TCP/UDP port to be punted
5276 */
5277 define punt {
5284 };
5285 
5286 /** \brief Reply to the punt request
5287  @param context - sender context which was passed in the request
5288  @param retval - return code of punt request
5289 */
5290 define punt_reply
5291 {
5294 };
5295 
void pg_enable_disable(u32 stream_index, int is_enable)
Definition: cli.c:58
u8 crypto_algorithm
Definition: vpe.api:3618
u8 use_extended_sequence_number
Definition: vpe.api:3626
u32 sa_id
Definition: vpe.api:3561
u8 integrity_key_length
Definition: vpe.api:3623
u32 context
Definition: vpe.api:5279
u16 local_port_start
Definition: vpe.api:3556
u8 is_add
Definition: vpe.api:3538
u32 vni
Definition: vpe.api:2543
i32 retval
Definition: vpe.api:2558
u32 context
Definition: vpe.api:2557
u32 loc_num
Definition: vpe.api:2545
u8 policy
Definition: vpe.api:3560
u32 context
Definition: vpe.api:3571
u16 remote_port_stop
Definition: vpe.api:3555
LISP adjacency.
Definition: vpe.api:3008
u32 client_index
Definition: vpe.api:5278
u32 custom_dev_instance
Definition: vpe.api:289
u8 protocol
Definition: vpe.api:3552
i32 retval
Definition: vpe.api:3572
u32 bd_id
Definition: vpe.api:2352
u32 spd_id
Definition: vpe.api:3540
u32 client_index
Definition: vpe.api:2535
u8 is_tunnel
Definition: vpe.api:3628
u8 crypto_key_length
Definition: vpe.api:3619
u32 context
Definition: vpe.api:2351
u32 sad_id
Definition: vpe.api:3612
int i32
Definition: types.h:81
u32 feature_bitmap
Definition: vpe.api:1608
unsigned long u64
Definition: types.h:89
u8 rmt_len
Definition: vpe.api:2541
int l2tpv3_interface_enable_disable(vnet_main_t *vnm, u32 sw_if_index, int enable_disable)
Definition: l2tp.c:600
u8 is_add
Definition: vpe.api:2537
i32 priority
Definition: vpe.api:3541
i32 retval
Definition: vpe.api:3642
u64 mac
Definition: vpe.api:2353
int cop_whitelist_enable_disable(cop_whitelist_enable_disable_args_t *a)
Definition: cop.c:229
u8 l4_protocol
Definition: vpe.api:5282
u8 is_add
Definition: vpe.api:3610
u16 local_port_stop
Definition: vpe.api:3557
clib_error_t * ikev2_set_local_key(vlib_main_t *vm, u8 *file)
Definition: ikev2.c:1996
u8 bvi_mac
Definition: vpe.api:2357
u32 client_index
Definition: vpe.api:3608
u16 remote_port_start
Definition: vpe.api:3554
svmdb_client_t * c
int lisp_add_del_adjacency(lisp_cp_main_t *lcm, gid_address_t *local_eid, gid_address_t *remote_eid, u8 is_add)
Adds adjacency or removes forwarding entry associated to remote mapping.
Definition: control.c:1145
int cop_interface_enable_disable(u32 sw_if_index, int enable_disable)
Definition: cop.c:151
u8 lcl_len
Definition: vpe.api:2542
u32 client_index
Definition: vpe.api:3536
u32 sw_if_index
Definition: vpe.api:2354
unsigned int u32
Definition: types.h:88
clib_error_t * policer_add_del(vlib_main_t *vm, u8 *name, sse2_qos_pol_cfg_params_st *cfg, u32 *policer_index, u8 is_add)
Definition: policer.c:20
u32 spi
Definition: vpe.api:3614
u16 l4_port
Definition: vpe.api:5283
clib_error_t * pg_capture(pg_capture_args_t *a)
Definition: cli.c:81
int dhcp_client_config(vlib_main_t *vm, u32 sw_if_index, u8 *hostname, u32 is_add, u32 client_index, void *event_callback, u32 pid)
Definition: client.c:836
u32 context
Definition: vpe.api:3537
u8 action
Definition: vpe.api:2548
u8 static_mac
Definition: vpe.api:2355
unsigned short u16
Definition: types.h:57
u8 eid_type
Definition: vpe.api:2538
double f64
Definition: types.h:142
unsigned char u8
Definition: types.h:56
u8 integrity_algorithm
Definition: vpe.api:3622
u8 is_tunnel_ipv6
Definition: vpe.api:3629
u32 context
Definition: vpe.api:3609
u32 custom_dev_instance
Definition: vpe.api:257
u32 client_index
Definition: vpe.api:2336
u8 is_outbound
Definition: vpe.api:3542
u8 is_ipv6
Definition: vpe.api:3545
u32 context
Definition: vpe.api:2536
u8 filter_mac
Definition: vpe.api:2356
u32 context
Definition: vpe.api:3641
u8 protocol
Definition: vpe.api:3616
int l2tpv3_set_tunnel_cookies(l2t_main_t *lm, u32 sw_if_index, u64 new_local_cookie, u64 new_remote_cookie)
Definition: l2tp.c:517
u8 is_ip_any
Definition: vpe.api:3546
u32 dp_table
Definition: vpe.api:2544