blob: 5f664f33cf68af245e14907a45185822ea6082c0 [file] [log] [blame]
Dave Barachb5e8a772016-12-06 12:04:42 -05001/*
2 * Copyright (c) 2016 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/** \file
17
18 This file defines vpp IP control-plane API messages which are generally
19 called through a shared memory interface.
20*/
21
Marek Gradzki7eaaf742018-05-25 15:50:05 +020022option version = "1.3.0";
Neale Ranns947ea622018-06-07 23:48:20 -070023import "vnet/ip/ip_types.api";
Neale Ranns31ed7442018-02-23 05:29:09 -080024import "vnet/fib/fib_types.api";
Dave Barach0d056e52017-09-28 15:11:16 -040025
Neale Ranns28ab9cc2017-08-14 07:18:42 -070026/** \brief Add / del table request
27 A table can be added multiple times, but need be deleted only once.
28 @param client_index - opaque cookie to identify the sender
29 @param context - sender context, to match reply w/ request
30 @param is_ipv6 - V4 or V6 table
31 @param table_id - table ID associated with the route
32 This table ID will apply to both the unicats
33 and mlticast FIBs
Neale Ranns2297af02017-09-12 09:45:04 -070034 @param name - A client provided name/tag for the table. If this is
35 not set by the client, then VPP will generate something
36 meaningfull.
Neale Ranns28ab9cc2017-08-14 07:18:42 -070037*/
38autoreply define ip_table_add_del
39{
40 u32 client_index;
41 u32 context;
42 u32 table_id;
43 u8 is_ipv6;
44 u8 is_add;
Neale Ranns2297af02017-09-12 09:45:04 -070045 u8 name[64];
Neale Ranns28ab9cc2017-08-14 07:18:42 -070046};
47
Dave Barachb5e8a772016-12-06 12:04:42 -050048/** \brief Dump IP fib table
49 @param client_index - opaque cookie to identify the sender
50*/
51define ip_fib_dump
52{
53 u32 client_index;
54 u32 context;
55};
56
Dave Barachb5e8a772016-12-06 12:04:42 -050057/** \brief IP FIB table response
58 @param table_id - IP fib table id
59 @address_length - mask length
60 @address - ip4 prefix
61 @param count - the number of fib_path in path
62 @param path - array of of fib_path structures
63*/
64manual_endian manual_print define ip_fib_details
65{
66 u32 context;
67 u32 table_id;
Neale Ranns2297af02017-09-12 09:45:04 -070068 u8 table_name[64];
Dave Barachb5e8a772016-12-06 12:04:42 -050069 u8 address_length;
70 u8 address[4];
71 u32 count;
72 vl_api_fib_path_t path[count];
73};
74
75/** \brief Dump IP6 fib table
76 @param client_index - opaque cookie to identify the sender
77*/
78define ip6_fib_dump
79{
80 u32 client_index;
81 u32 context;
82};
83
Neale Ranns2297af02017-09-12 09:45:04 -070084/** \brief IP6 FIB table entry response
Dave Barachb5e8a772016-12-06 12:04:42 -050085 @param table_id - IP6 fib table id
Neale Ranns2297af02017-09-12 09:45:04 -070086 @param address_length - mask length
87 @param address - ip6 prefix
Dave Barachb5e8a772016-12-06 12:04:42 -050088 @param count - the number of fib_path in path
89 @param path - array of of fib_path structures
90*/
91manual_endian manual_print define ip6_fib_details
92{
93 u32 context;
94 u32 table_id;
Neale Ranns2297af02017-09-12 09:45:04 -070095 u8 table_name[64];
Dave Barachb5e8a772016-12-06 12:04:42 -050096 u8 address_length;
97 u8 address[16];
98 u32 count;
99 vl_api_fib_path_t path[count];
100};
101
102/** \brief Dump IP neighboors
103 @param client_index - opaque cookie to identify the sender
104 @param context - sender context, to match reply w/ request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600105 @param sw_if_index - the interface to dump neighboors, ~0 == all
Dave Barachb5e8a772016-12-06 12:04:42 -0500106 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
107*/
108define ip_neighbor_dump
109{
110 u32 client_index;
111 u32 context;
112 u32 sw_if_index;
113 u8 is_ipv6;
114};
115
116/** \brief IP neighboors dump response
117 @param context - sender context which was passed in the request
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600118 @param sw_if_index - The interface used to reach the neighbor
Dave Barachb5e8a772016-12-06 12:04:42 -0500119 @param is_static - [1|0] to indicate if neighbor is statically configured
120 @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4]
121*/
122define ip_neighbor_details {
123 u32 context;
Jon Loeligeraf8dfbf2017-11-08 13:07:39 -0600124 u32 sw_if_index;
Pavel Kotucek8cb07c92017-01-11 10:13:54 +0100125 u8 is_static;
Dave Barachb5e8a772016-12-06 12:04:42 -0500126 u8 is_ipv6;
127 u8 mac_address[6];
128 u8 ip_address[16];
129};
130
131/** \brief IP neighbor add / del request
132 @param client_index - opaque cookie to identify the sender
133 @param context - sender context, to match reply w/ request
Dave Barachb5e8a772016-12-06 12:04:42 -0500134 @param sw_if_index - interface used to reach neighbor
135 @param is_add - 1 to add neighbor, 0 to delete
136 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
Neale Ranns239d3fe2017-03-08 08:56:58 -0800137 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
138 @param is_static - A static neighbor Entry - there are not flushed
139 If the interface goes down.
140 @param is_no_adj_fib - Do not create a corresponding entry in the FIB
141 table for the neighbor.
Dave Barachb5e8a772016-12-06 12:04:42 -0500142 @param mac_address - l2 address of the neighbor
143 @param dst_address - ip4 or ip6 address of the neighbor
144*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400145autoreply define ip_neighbor_add_del
Dave Barachb5e8a772016-12-06 12:04:42 -0500146{
147 u32 client_index;
148 u32 context;
Dave Barachb5e8a772016-12-06 12:04:42 -0500149 u32 sw_if_index;
150 /* 1 = add, 0 = delete */
151 u8 is_add;
152 u8 is_ipv6;
153 u8 is_static;
Neale Ranns239d3fe2017-03-08 08:56:58 -0800154 u8 is_no_adj_fib;
Dave Barachb5e8a772016-12-06 12:04:42 -0500155 u8 mac_address[6];
156 u8 dst_address[16];
157};
158
Dave Barachb5e8a772016-12-06 12:04:42 -0500159/** \brief Set the ip flow hash config for a fib request
160 @param client_index - opaque cookie to identify the sender
161 @param context - sender context, to match reply w/ request
162 @param vrf_id - vrf/fib id
163 @param is_ipv6 - if non-zero the fib is ip6, else ip4
164 @param src - if non-zero include src in flow hash
165 @param dst - if non-zero include dst in flow hash
166 @param sport - if non-zero include sport in flow hash
167 @param dport - if non-zero include dport in flow hash
168 @param proto -if non-zero include proto in flow hash
169 @param reverse - if non-zero include reverse in flow hash
170*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400171autoreply define set_ip_flow_hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500172{
173 u32 client_index;
174 u32 context;
175 u32 vrf_id;
176 u8 is_ipv6;
177 u8 src;
178 u8 dst;
179 u8 sport;
180 u8 dport;
181 u8 proto;
182 u8 reverse;
183};
184
Dave Barachb5e8a772016-12-06 12:04:42 -0500185/** \brief IPv6 router advertisement config request
186 @param client_index - opaque cookie to identify the sender
187 @param context - sender context, to match reply w/ request
188 @param suppress -
189 @param managed -
190 @param other -
191 @param ll_option -
192 @param send_unicast -
193 @param cease -
194 @param is_no -
195 @param default_router -
196 @param max_interval -
197 @param min_interval -
198 @param lifetime -
199 @param initial_count -
200 @param initial_interval -
201*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400202autoreply define sw_interface_ip6nd_ra_config
Dave Barachb5e8a772016-12-06 12:04:42 -0500203{
204 u32 client_index;
205 u32 context;
206 u32 sw_if_index;
207 u8 suppress;
208 u8 managed;
209 u8 other;
210 u8 ll_option;
211 u8 send_unicast;
212 u8 cease;
213 u8 is_no;
214 u8 default_router;
215 u32 max_interval;
216 u32 min_interval;
217 u32 lifetime;
218 u32 initial_count;
219 u32 initial_interval;
220};
221
Dave Barachb5e8a772016-12-06 12:04:42 -0500222/** \brief IPv6 router advertisement prefix config request
223 @param client_index - opaque cookie to identify the sender
224 @param context - sender context, to match reply w/ request
Neale Ranns87df12d2017-02-18 08:16:41 -0800225 @param sw_if_index - The interface the RA prefix information is for
226 @param address[] - The prefix to advertise
227 @param address_length - the prefix length
228 @param use_default - Revert to default settings
229 @param no_advertise - Do not advertise this prefix
230 @param off_link - The prefix is off link (it is not configured on the interface)
231 Configures the L-flag, When set, indicates that this
232 prefix can be used for on-link determination.
233 @param no_autoconfig - Setting for the A-flag. When
234 set indicates that this prefix can be used for
235 stateless address configuration.
236 @param no_onlink - The prefix is not on link. Make sure this is consistent
237 with the off_link parameter else YMMV
238 @param is_no - add/delete
239 @param val_lifetime - The length of time in
240 seconds (relative to the time the packet is sent)
241 that the prefix is valid for the purpose of on-link
242 determination. A value of all one bits
243 (0xffffffff) represents infinity
244 @param pref_lifetime - The length of time in
245 seconds (relative to the time the packet is sent)
246 that addresses generated from the prefix via
247 stateless address autoconfiguration remain
248 preferred [ADDRCONF]. A value of all one bits
249 (0xffffffff) represents infinity.
Dave Barachb5e8a772016-12-06 12:04:42 -0500250*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400251autoreply define sw_interface_ip6nd_ra_prefix
Dave Barachb5e8a772016-12-06 12:04:42 -0500252{
253 u32 client_index;
254 u32 context;
255 u32 sw_if_index;
256 u8 address[16];
257 u8 address_length;
258 u8 use_default;
259 u8 no_advertise;
260 u8 off_link;
261 u8 no_autoconfig;
262 u8 no_onlink;
263 u8 is_no;
264 u32 val_lifetime;
265 u32 pref_lifetime;
266};
267
Neale Ranns3f844d02017-02-18 00:03:54 -0800268/** \brief IPv6 ND proxy config
269 @param client_index - opaque cookie to identify the sender
270 @param context - sender context, to match reply w/ request
271 @param sw_if_index - The interface the host is on
272 @param address - The address of the host for which to proxy for
273 @param is_add - Adding or deleting
274*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400275autoreply define ip6nd_proxy_add_del
Neale Ranns3f844d02017-02-18 00:03:54 -0800276{
277 u32 client_index;
278 u32 context;
279 u32 sw_if_index;
280 u8 is_del;
281 u8 address[16];
282};
283
Neale Ranns3f844d02017-02-18 00:03:54 -0800284/** \brief IPv6 ND proxy details returned after request
285 @param context - sender context, to match reply w/ request
286 @param retval - return code for the request
287*/
288define ip6nd_proxy_details
289{
Neale Ranns3f844d02017-02-18 00:03:54 -0800290 u32 context;
291 u32 sw_if_index;
292 u8 address[16];
293};
294
295/** \brief IPv6 ND proxy dump request
296 @param context - sender context, to match reply w/ request
297 @param retval - return code for the request
298 @param sw_if_index - The interface the host is on
299 @param address - The address of the host for which to proxy for
300*/
301define ip6nd_proxy_dump
302{
303 u32 client_index;
304 u32 context;
305};
306
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100307/** \brief Start / stop sending router solicitation
308 @param client_index - opaque cookie to identify the sender
309 @param context - sender context, to match reply w/ request
310 @param irt - initial retransmission time
311 @param mrt - maximum retransmission time
312 @param mrc - maximum retransmission count
313 @param mrd - maximum retransmission duration
314 @param sw_if_index - software interface index of interface
315 for sending router solicitation
316 @param stop - if non-zero then stop sending router solicitation,
317 otherwise start sending router solicitation
318*/
319autoreply define ip6nd_send_router_solicitation
320{
321 u32 client_index;
322 u32 context;
323 u32 irt;
324 u32 mrt;
325 u32 mrc;
326 u32 mrd;
327 u32 sw_if_index;
328 u8 stop;
329};
330
Dave Barachb5e8a772016-12-06 12:04:42 -0500331/** \brief IPv6 interface enable / disable request
332 @param client_index - opaque cookie to identify the sender
333 @param context - sender context, to match reply w/ request
334 @param sw_if_index - interface used to reach neighbor
335 @param enable - if non-zero enable ip6 on interface, else disable
336*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400337autoreply define sw_interface_ip6_enable_disable
Dave Barachb5e8a772016-12-06 12:04:42 -0500338{
339 u32 client_index;
340 u32 context;
341 u32 sw_if_index;
342 u8 enable; /* set to true if enable */
343};
344
Dave Barachb5e8a772016-12-06 12:04:42 -0500345/** \brief IPv6 set link local address on interface request
346 @param client_index - opaque cookie to identify the sender
347 @param context - sender context, to match reply w/ request
348 @param sw_if_index - interface to set link local on
349 @param address[] - the new link local address
Dave Barachb5e8a772016-12-06 12:04:42 -0500350*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400351autoreply define sw_interface_ip6_set_link_local_address
Dave Barachb5e8a772016-12-06 12:04:42 -0500352{
353 u32 client_index;
354 u32 context;
355 u32 sw_if_index;
356 u8 address[16];
Dave Barachb5e8a772016-12-06 12:04:42 -0500357};
358
Dave Barachb5e8a772016-12-06 12:04:42 -0500359/** \brief Add / del route request
360 @param client_index - opaque cookie to identify the sender
361 @param context - sender context, to match reply w/ request
362 @param sw_if_index - software index of the new vlan's parent interface
363 @param vrf_id - fib table /vrf associated with the route
364 @param lookup_in_vrf -
365 @param classify_table_index -
Dave Barachb5e8a772016-12-06 12:04:42 -0500366 @param is_add - 1 if adding the route, 0 if deleting
367 @param is_drop - Drop the packet
368 @param is_unreach - Drop the packet and rate limit send ICMP unreachable
369 @param is_prohibit - Drop the packet and rate limit send ICMP prohibited
370 @param is_ipv6 - 0 if an ip4 route, else ip6
Neale Ranns810086d2017-11-05 16:26:46 -0800371 @param is_local - The route will result in packets sent to VPP IP stack
372 @param is_udp_encap - The path describes a UDP-o-IP encapsulation.
Dave Barachb5e8a772016-12-06 12:04:42 -0500373 @param is_classify -
374 @param is_multipath - Set to 1 if this is a multipath route, else 0
Neale Rannsf068c3e2018-01-03 04:18:48 -0800375 @param is_dvr - Does the route resolve via a DVR interface.
Neale Ranns054c03a2017-10-13 05:15:07 -0700376 @param is_source_lookup - The the path is a deaggregate path (i.e. a lookup
377 in another table) is the lookup on the packet's
378 source address or destination.
Neale Ranns810086d2017-11-05 16:26:46 -0800379 @param next_hop_weight - Weight for Unequal cost multi-path
380 @param next_hop_preference - Path that are up that have the best preference are
381 are used for forwarding. lower value is better.
382 @param next_hop_id - Used when the path resolves via an object that has a unique
383 identifier.
Dave Barachb5e8a772016-12-06 12:04:42 -0500384 @param dst_address_length -
385 @param dst_address[16] -
386 @param next_hop_address[16] -
387 @param next_hop_n_out_labels - the number of labels in the label stack
388 @param next_hop_out_label_stack - the next-hop output label stack, outer most first
389 @param next_hop_via_label - The next-hop is a resolved via a local label
390*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400391autoreply define ip_add_del_route
Dave Barachb5e8a772016-12-06 12:04:42 -0500392{
393 u32 client_index;
394 u32 context;
395 u32 next_hop_sw_if_index;
396 u32 table_id;
397 u32 classify_table_index;
398 u32 next_hop_table_id;
Neale Ranns810086d2017-11-05 16:26:46 -0800399 u32 next_hop_id;
Dave Barachb5e8a772016-12-06 12:04:42 -0500400 u8 is_add;
401 u8 is_drop;
402 u8 is_unreach;
403 u8 is_prohibit;
404 u8 is_ipv6;
405 u8 is_local;
406 u8 is_classify;
407 u8 is_multipath;
408 u8 is_resolve_host;
409 u8 is_resolve_attached;
Neale Rannsf068c3e2018-01-03 04:18:48 -0800410 u8 is_dvr;
Neale Ranns054c03a2017-10-13 05:15:07 -0700411 u8 is_source_lookup;
Neale Ranns810086d2017-11-05 16:26:46 -0800412 u8 is_udp_encap;
Dave Barachb5e8a772016-12-06 12:04:42 -0500413 u8 next_hop_weight;
Neale Ranns57b58602017-07-15 07:37:25 -0700414 u8 next_hop_preference;
Neale Ranns810086d2017-11-05 16:26:46 -0800415 u8 next_hop_proto;
Dave Barachb5e8a772016-12-06 12:04:42 -0500416 u8 dst_address_length;
417 u8 dst_address[16];
418 u8 next_hop_address[16];
419 u8 next_hop_n_out_labels;
420 u32 next_hop_via_label;
Neale Ranns31ed7442018-02-23 05:29:09 -0800421 vl_api_fib_mpls_label_t next_hop_out_label_stack[next_hop_n_out_labels];
Dave Barachb5e8a772016-12-06 12:04:42 -0500422};
423
Neale Ranns32e1c012016-11-22 17:07:28 +0000424/** \brief Add / del route request
425 @param client_index - opaque cookie to identify the sender
426 @param context - sender context, to match reply w/ request
427 @param sw_if_index - software index of the new vlan's parent interface
428 @param vrf_id - fib table /vrf associated with the route
Neale Rannsd792d9c2017-10-21 10:53:20 -0700429 @param next_hop_afi - Use dpo_proto_t
Neale Ranns32e1c012016-11-22 17:07:28 +0000430 FIXME
431*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400432autoreply define ip_mroute_add_del
Neale Ranns32e1c012016-11-22 17:07:28 +0000433{
434 u32 client_index;
435 u32 context;
436 u32 next_hop_sw_if_index;
437 u32 table_id;
438 u32 entry_flags;
439 u32 itf_flags;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800440 u32 rpf_id;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700441 u32 bier_imp;
Neale Ranns32e1c012016-11-22 17:07:28 +0000442 u16 grp_address_length;
Neale Rannsd792d9c2017-10-21 10:53:20 -0700443 u8 next_hop_afi;
Neale Ranns32e1c012016-11-22 17:07:28 +0000444 u8 is_add;
445 u8 is_ipv6;
446 u8 is_local;
447 u8 grp_address[16];
448 u8 src_address[16];
Neale Rannse821ab12017-06-01 07:45:05 -0700449 u8 nh_address[16];
Neale Ranns32e1c012016-11-22 17:07:28 +0000450};
451
Neale Ranns5a8123b2017-01-26 01:18:23 -0800452/** \brief Dump IP multicast fib table
453 @param client_index - opaque cookie to identify the sender
454*/
455define ip_mfib_dump
456{
457 u32 client_index;
458 u32 context;
459};
460
461/** \brief IP Multicast FIB table response
462 @param table_id - IP fib table id
463 @address_length - mask length
464 @grp_address - Group address/prefix
465 @src_address - Source address
466 @param count - the number of fib_path in path
467 @param path - array of of fib_path structures
468*/
469manual_endian manual_print define ip_mfib_details
470{
471 u32 context;
472 u32 table_id;
Neale Ranns0f26c5a2017-03-01 15:12:11 -0800473 u32 entry_flags;
474 u32 rpf_id;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800475 u8 address_length;
476 u8 grp_address[4];
477 u8 src_address[4];
478 u32 count;
479 vl_api_fib_path_t path[count];
480};
481
482/** \brief Dump IP6 multicast fib table
483 @param client_index - opaque cookie to identify the sender
484*/
485define ip6_mfib_dump
486{
487 u32 client_index;
488 u32 context;
489};
490
491/** \brief IP6 Multicast FIB table response
492 @param table_id - IP fib table id
493 @address_length - mask length
494 @grp_address - Group address/prefix
495 @src_address - Source address
496 @param count - the number of fib_path in path
497 @param path - array of of fib_path structures
498*/
499manual_endian manual_print define ip6_mfib_details
500{
501 u32 context;
502 u32 table_id;
503 u8 address_length;
504 u8 grp_address[16];
505 u8 src_address[16];
506 u32 count;
507 vl_api_fib_path_t path[count];
508};
509
Dave Barachb5e8a772016-12-06 12:04:42 -0500510define ip_address_details
511{
Dave Barachb5e8a772016-12-06 12:04:42 -0500512 u32 context;
513 u8 ip[16];
514 u8 prefix_length;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600515 u32 sw_if_index;
516 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500517};
518
519define ip_address_dump
520{
521 u32 client_index;
522 u32 context;
523 u32 sw_if_index;
524 u8 is_ipv6;
525};
526
Neale Ranns9e2f9152018-05-18 02:27:10 -0700527/** \brief IP unnumbered configurations
528 @param sw_if_index The interface that has unnumbered configuration
529 @param ip_sw_if_index The IP interface that it is unnnumbered to
530*/
531define ip_unnumbered_details
532{
Neale Ranns9e2f9152018-05-18 02:27:10 -0700533 u32 context;
534 u32 sw_if_index;
535 u32 ip_sw_if_index;
536};
537
538/** \brief Dump IP unnumbered configurations
539 @param sw_if_index ~0 for all interfaces, else the interface desired
540*/
541define ip_unnumbered_dump
542{
543 u32 client_index;
544 u32 context;
545 u32 sw_if_index;
546};
547
Dave Barachb5e8a772016-12-06 12:04:42 -0500548define ip_details
549{
Dave Barachb5e8a772016-12-06 12:04:42 -0500550 u32 context;
Ondrej Fabryb11f9032018-08-14 12:39:40 +0200551 u32 sw_if_index;
Jon Loeliger466f0d42017-02-09 12:17:50 -0600552 u8 is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500553};
554
555define ip_dump
556{
557 u32 client_index;
558 u32 context;
559 u8 is_ipv6;
560};
561
Neale Ranns32e1c012016-11-22 17:07:28 +0000562define mfib_signal_dump
563{
564 u32 client_index;
565 u32 context;
566};
567
568define mfib_signal_details
569{
Neale Ranns32e1c012016-11-22 17:07:28 +0000570 u32 context;
571 u32 sw_if_index;
572 u32 table_id;
573 u16 grp_address_len;
574 u8 grp_address[16];
575 u8 src_address[16];
576 u16 ip_packet_len;
577 u8 ip_packet_data[256];
578};
Dave Barachb5e8a772016-12-06 12:04:42 -0500579
Neale Rannsd91c1db2017-07-31 02:30:50 -0700580/** \brief IP punt policer
581 @param client_index - opaque cookie to identify the sender
582 @param context - sender context, to match reply w/ request
583 @param is_add - 1 to add neighbor, 0 to delete
584 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
585 @param policer_index - Index of policer to use
586*/
587autoreply define ip_punt_police
588{
589 u32 client_index;
590 u32 context;
591 u32 policer_index;
592 u8 is_add;
593 u8 is_ip6;
594};
595
596/** \brief IP punt redirect
597 @param client_index - opaque cookie to identify the sender
598 @param context - sender context, to match reply w/ request
599 @param is_add - 1 to add neighbor, 0 to delete
600 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
601 @param tx_sw_if_index - the TX interface to which traffic shoulde be
602 redirected.
603 @param nh - The next-hop to redirect the traffic to.
604*/
605autoreply define ip_punt_redirect
606{
607 u32 client_index;
608 u32 context;
609 u32 rx_sw_if_index;
610 u32 tx_sw_if_index;
611 u8 is_add;
612 u8 is_ip6;
613 u8 nh[16];
614};
615
Florin Coras595992c2017-11-06 17:17:08 -0800616autoreply define ip_container_proxy_add_del
617{
618 u32 client_index;
619 u32 context;
620 u8 ip[16];
621 u8 is_ip4;
622 u8 plen;
623 u32 sw_if_index;
624 u8 is_add;
625};
626
Neale Rannsb8d44812017-11-10 06:53:54 -0800627/** \brief Configure IP source and L4 port-range check
628 @param client_index - opaque cookie to identify the sender
629 @param context - sender context, to match reply w/ request
630 @param is_ip6 - 1 if source address type is IPv6
631 @param is_add - 1 if add, 0 if delete
632 @param mask_length - mask length for address entry
633 @param address - array of address bytes
634 @param number_of_ranges - length of low_port and high_port arrays (must match)
635 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
636 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
637 @param vrf_id - fib table/vrf id to associate the source and port-range check with
638 @note To specify a single port set low_port and high_port entry the same
639*/
640autoreply define ip_source_and_port_range_check_add_del
641{
642 u32 client_index;
643 u32 context;
644 u8 is_ipv6;
645 u8 is_add;
646 u8 mask_length;
647 u8 address[16];
648 u8 number_of_ranges;
649 u16 low_ports[32];
650 u16 high_ports[32];
651 u32 vrf_id;
652};
653
654/** \brief Set interface source and L4 port-range request
655 @param client_index - opaque cookie to identify the sender
656 @param context - sender context, to match reply w/ request
657 @param interface_id - interface index
658 @param tcp_vrf_id - VRF associated with source and TCP port-range check
659 @param udp_vrf_id - VRF associated with source and TCP port-range check
660*/
661autoreply define ip_source_and_port_range_check_interface_add_del
662{
663 u32 client_index;
664 u32 context;
665 u8 is_add;
666 u32 sw_if_index;
667 u32 tcp_in_vrf_id;
668 u32 tcp_out_vrf_id;
669 u32 udp_in_vrf_id;
670 u32 udp_out_vrf_id;
671};
672
John Lo7f358b32018-04-28 01:19:24 -0400673/** \brief Enable/disable periodic IP neighbor scan
674 @param client_index - opaque cookie to identify the sender
675 @param context - sender context, to match reply w/ request
676 @param mode - 0: disable, 1: IPv4, 2: IPv6, 3: both IPv4/v6
677 @param scan_interval - neighbor scan interval in minutes, 0: default to 1
678 @param max_proc_time - max processing time per run in usec, 0: default to 20
679 @param max_update - max neighbor probe/delete per run, 0: default to 10
680 @param scan_int_delay - delay in msec to resume scan if exceed max proc
681 time or update, 0: default to 1
682 @param stale_threshold - threshold in minutes for neighbor deletion,
683 0: default to 4*scan_interval
684*/
685autoreply define ip_scan_neighbor_enable_disable
686{
687 u32 client_index;
688 u32 context;
689 u8 mode;
690 u8 scan_interval;
691 u8 max_proc_time;
692 u8 max_update;
693 u8 scan_int_delay;
694 u8 stale_threshold;
695};
696
John Loc7b43042018-04-13 16:46:22 -0400697/** \brief IP probe neighbor address on an interface by sending an
698 ARP request (for IP4) or ICMP6 Neighbor Solicitation (for IP6)
699 @param client_index - opaque cookie to identify the sender
700 @param context - sender context, to match reply w/ request
701 @param sw_if_index - interface index
702 @param dst_address - target IP address to send IP addr resolution request
703 @param is_ipv6 - [1|0] to indicate if address family is IPv[6|4]
704*/
705autoreply define ip_probe_neighbor
706{
707 u32 client_index;
708 u32 context;
709 u32 sw_if_index;
710 u8 dst_address[16];
711 u8 is_ipv6;
712};
713
714/** \brief Register for IP4 ARP resolution event on receing ARP reply or
715 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800716 @param client_index - opaque cookie to identify the sender
717 @param context - sender context, to match reply w/ request
718 @param enable_disable - 1 => register for events, 0 => cancel registration
719 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400720 @param address - exact IP4 address of interested arp resolution event, or
721 0 to get MAC/IP info from ARP requests in BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800722*/
723autoreply define want_ip4_arp_events
724{
725 u32 client_index;
726 u32 context;
727 u8 enable_disable;
728 u32 pid;
729 u32 address;
730};
731
John Loc7b43042018-04-13 16:46:22 -0400732/** \brief Tell client about an IP4 ARP resolution event or
733 MAC/IP info from ARP requests in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800734 @param client_index - opaque cookie to identify the sender
735 @param address - the exact ip4 address of interest
736 @param pid - client pid registered to receive notification
737 @param sw_if_index - interface which received ARP packet
738 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400739 @param mac_ip - 0: ARP resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800740*/
741define ip4_arp_event
742{
743 u32 client_index;
744 u32 address;
745 u32 pid;
746 u32 sw_if_index;
747 u8 new_mac[6];
748 u8 mac_ip;
749};
750
Marek Gradzki51e59682018-03-06 10:05:44 +0100751service {
752 rpc want_ip4_arp_events returns want_ip4_arp_events_reply
753 events ip4_arp_event;
754};
755
John Loc7b43042018-04-13 16:46:22 -0400756/** \brief Register for IP6 ND resolution event on recieving NA reply
757 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800758 @param client_index - opaque cookie to identify the sender
759 @param context - sender context, to match reply w/ request
760 @param enable_disable - 1 => register for events, 0 => cancel registration
761 @param pid - sender's pid
John Loc7b43042018-04-13 16:46:22 -0400762 @param address - the exact IP6 address of interested ND resolution event, or
763 0 to get MAC/IP info from ICMP6 NS in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800764*/
765autoreply define want_ip6_nd_events
766{
767 u32 client_index;
768 u32 context;
769 u8 enable_disable;
770 u32 pid;
771 u8 address[16];
772};
773
John Loc7b43042018-04-13 16:46:22 -0400774/** \brief Tell client about an IP6 ND resolution or
775 MAC/IP info from ICMP6 Neighbor Solicitation in L2 BDs.
Neale Rannsb8d44812017-11-10 06:53:54 -0800776 @param client_index - opaque cookie to identify the sender
777 @param pid - client pid registered to receive notification
778 @param sw_if_index - interface which received ARP packet
779 @param address - the exact ip6 address of interest
780 @param new_mac - the new mac address
John Loc7b43042018-04-13 16:46:22 -0400781 @param mac_ip - 0: ND resolution event, 1: MAC/IP info from L2 BDs
Neale Rannsb8d44812017-11-10 06:53:54 -0800782*/
783define ip6_nd_event
784{
785 u32 client_index;
786 u32 pid;
787 u32 sw_if_index;
788 u8 address[16];
789 u8 new_mac[6];
790 u8 mac_ip;
791};
792
Marek Gradzki51e59682018-03-06 10:05:44 +0100793service {
Juraj Sloboda4b9669d2018-01-15 10:39:21 +0100794 rpc want_ip6_ra_events returns want_ip6_ra_events_reply
795 events ip6_ra_event;
796};
797
798/** \brief Register for ip6 router advertisement events
799 @param client_index - opaque cookie to identify the sender
800 @param context - sender context, to match reply w/ request
801 @param enable_disable - 1 => register for events, 0 => cancel registration
802 @param pid - sender's pid
803*/
804autoreply define want_ip6_ra_events
805{
806 u32 client_index;
807 u32 context;
808 u8 enable_disable;
809 u32 pid;
810};
811
812/** \brief Struct representing RA prefix info
813 @param dst_address - RA prefix info destination address
814 @param dst_address_length - RA prefix info destination address length
815 @param flags - RA prefix info flags
816 @param valid_time - RA prefix info valid time
817 @param preferred_time - RA prefix info preferred time
818*/
819typeonly define ip6_ra_prefix_info
820{
821 u8 dst_address[16];
822 u8 dst_address_length;
823 u8 flags;
824 u32 valid_time;
825 u32 preferred_time;
826};
827
828/** \brief Tell client about a router advertisement event
829 @param client_index - opaque cookie to identify the sender
830 @param pid - client pid registered to receive notification
831 @param current_hop_limit - RA current hop limit
832 @param flags - RA flags
833 @param router_lifetime_in_sec - RA lifetime in seconds
834 @param neighbor_reachable_time_in_msec - RA neighbor reachable time in msec
835 @param time_in_msec_between_retransmitted_neighbor_solicitations -
836 time in msec between retransmitted neighbor solicitations
837 @param n_prefixes -
838 @param prefixes -
839*/
840define ip6_ra_event
841{
842 u32 client_index;
843 u32 pid;
844 u32 sw_if_index;
845 u8 router_address[16];
846 u8 current_hop_limit;
847 u8 flags;
848 u16 router_lifetime_in_sec;
849 u32 neighbor_reachable_time_in_msec;
850 u32 time_in_msec_between_retransmitted_neighbor_solicitations;
851 u32 n_prefixes;
852 vl_api_ip6_ra_prefix_info_t prefixes[n_prefixes];
853};
854
855service {
Marek Gradzki51e59682018-03-06 10:05:44 +0100856 rpc want_ip6_nd_events returns want_ip6_nd_events_reply
857 events ip6_nd_event;
858};
859
Neale Ranns0053de62018-05-22 08:40:52 -0700860/** \brief Proxy ARP configuration type
Neale Rannsb8d44812017-11-10 06:53:54 -0800861 @param vrf_id - VRF / Fib table ID
Neale Rannsb8d44812017-11-10 06:53:54 -0800862 @param low_address[4] - Low address of the Proxy ARP range
863 @param hi_address[4] - High address of the Proxy ARP range
864*/
Neale Ranns0053de62018-05-22 08:40:52 -0700865typeonly define proxy_arp
Neale Rannsb8d44812017-11-10 06:53:54 -0800866{
Neale Rannsb8d44812017-11-10 06:53:54 -0800867 u32 vrf_id;
Neale Rannsb8d44812017-11-10 06:53:54 -0800868 u8 low_address[4];
869 u8 hi_address[4];
870};
871
872/** \brief Proxy ARP add / del request
873 @param client_index - opaque cookie to identify the sender
874 @param context - sender context, to match reply w/ request
Neale Ranns0053de62018-05-22 08:40:52 -0700875 @param is_add - 1 if adding the Proxy ARP range, 0 if deleting
876 @param proxy - Proxy configuration
877*/
878autoreply define proxy_arp_add_del
879{
880 u32 client_index;
881 u32 context;
882 u8 is_add;
883 vl_api_proxy_arp_t proxy;
884};
885
886/** \brief Proxy ARP dump request
887 */
888define proxy_arp_dump
889{
890 u32 client_index;
891 u32 context;
892};
893
894/** \brief Proxy ARP dump details reply
895 * @param proxy - Same data as used to configure
896 */
897define proxy_arp_details
898{
899 u32 context;
900 vl_api_proxy_arp_t proxy;
901};
902
903/** \brief Proxy ARP add / del interface request
904 @param client_index - opaque cookie to identify the sender
905 @param context - sender context, to match reply w/ request
Neale Rannsb8d44812017-11-10 06:53:54 -0800906 @param sw_if_index - Which interface to enable / disable Proxy Arp on
907 @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable
908*/
909autoreply define proxy_arp_intfc_enable_disable
910{
911 u32 client_index;
912 u32 context;
913 u32 sw_if_index;
914 /* 1 = on, 0 = off */
915 u8 enable_disable;
916};
917
Neale Ranns0053de62018-05-22 08:40:52 -0700918/** \brief Proxy ARP interface dump request
919 */
920define proxy_arp_intfc_dump
921{
922 u32 client_index;
923 u32 context;
924};
925
926/** \brief Proxy ARP interface dump details reply
927 * @param sw_if_index The interface on which ARP proxy is enabled.
928 */
929define proxy_arp_intfc_details
930{
931 u32 context;
932 u32 sw_if_index;
933};
934
Neale Rannsb8d44812017-11-10 06:53:54 -0800935/** \brief Reset fib table request
936 @param client_index - opaque cookie to identify the sender
937 @param context - sender context, to match reply w/ request
938 @param vrf_id - vrf/table id of the fib table to reset
939 @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4
940*/
941autoreply define reset_fib
942{
943 u32 client_index;
944 u32 context;
945 u32 vrf_id;
946 u8 is_ipv6;
947};
948
949/** \brief Set max allowed ARP or ip6 neighbor entries request
950 @param client_index - opaque cookie to identify the sender
951 @param context - sender context, to match reply w/ request
952 @param is_ipv6 - neighbor limit if non-zero, else ARP limit
953 @param arp_neighbor_limit - the new limit, defaults are ~ 50k
954*/
955autoreply define set_arp_neighbor_limit
956{
957 u32 client_index;
958 u32 context;
959 u8 is_ipv6;
960 u32 arp_neighbor_limit;
961};
962
963/** \brief IOAM enable : Enable in-band OAM
964 @param id - profile id
965 @param seqno - To enable Seqno Processing
966 @param analyse - Enabling analysis of iOAM at decap node
967 @param pow_enable - Proof of Work enabled or not flag
968 @param trace_enable - iOAM Trace enabled or not flag
969*/
970autoreply define ioam_enable
971{
972 u32 client_index;
973 u32 context;
974 u16 id;
975 u8 seqno;
976 u8 analyse;
977 u8 pot_enable;
978 u8 trace_enable;
979 u32 node_id;
980};
981
982/** \brief iOAM disable
983 @param client_index - opaque cookie to identify the sender
984 @param context - sender context, to match reply w/ request
985 @param index - MAP Domain index
986*/
987autoreply define ioam_disable
988{
989 u32 client_index;
990 u32 context;
991 u16 id;
992};
993
Klement Sekera75e7d132017-09-20 08:26:30 +0200994autoreply define ip_reassembly_set
995{
996 u32 client_index;
997 u32 context;
998 u32 timeout_ms;
999 u32 max_reassemblies;
1000 u32 expire_walk_interval_ms;
1001 u8 is_ip6;
1002};
1003
1004define ip_reassembly_get
1005{
1006 u32 client_index;
1007 u32 context;
1008 u8 is_ip6;
1009};
1010
1011define ip_reassembly_get_reply
1012{
Klement Sekera75e7d132017-09-20 08:26:30 +02001013 u32 context;
1014 i32 retval;
1015 u32 timeout_ms;
1016 u32 max_reassemblies;
1017 u32 expire_walk_interval_ms;
1018 u8 is_ip6;
1019};
1020
Klement Sekera4c533132018-02-22 11:41:12 +01001021/** \brief Enable/disable reassembly feature
1022 @param client_index - opaque cookie to identify the sender
1023 @param context - sender context, to match reply w/ request
1024 @param sw_if_index - interface to enable/disable feature on
1025 @param enable_ip4 - enable ip4 reassembly if non-zero, disable if 0
1026 @param enable_ip6 - enable ip6 reassembly if non-zero, disable if 0
1027*/
1028autoreply define ip_reassembly_enable_disable
1029{
1030 u32 client_index;
1031 u32 context;
1032 u32 sw_if_index;
1033 u8 enable_ip4;
1034 u8 enable_ip6;
1035};
1036
Dave Barachb5e8a772016-12-06 12:04:42 -05001037/*
1038 * Local Variables:
1039 * eval: (c-set-style "gnu")
1040 * End:
1041 */