blob: 3072e3e7c63d8f773993ca903d032224c6b393b9 [file] [log] [blame]
Neale Ranns008dbe12018-09-07 09:32:36 -07001/* Hey Emacs use -*- mode: C -*- */
Dave Barachb5e8a772016-12-06 12:04:42 -05002/*
Neale Ranns008dbe12018-09-07 09:32:36 -07003 * Copyright (c) 2018 Cisco and/or its affiliates.
Dave Barachb5e8a772016-12-06 12:04:42 -05004 * 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 vpp IP control-plane API messages which are generally
Jakub Grajciar58989a32019-10-08 14:05:18 +020020 called through a shared memory interface.
Dave Barachb5e8a772016-12-06 12:04:42 -050021*/
22
Neale Ranns3d5f08a2021-01-22 16:12:38 +000023option version = "3.0.3";
Neale Ranns097fa662018-05-01 05:17:55 -070024
Jakub Grajciar58989a32019-10-08 14:05:18 +020025import "vnet/interface_types.api";
Neale Ranns31ed7442018-02-23 05:29:09 -080026import "vnet/fib/fib_types.api";
Neale Rannsde5b08f2018-08-29 06:37:18 -070027import "vnet/ethernet/ethernet_types.api";
Neale Ranns097fa662018-05-01 05:17:55 -070028import "vnet/mfib/mfib_types.api";
Ole Troan668605f2019-12-09 16:08:27 +010029import "vnet/interface_types.api";
Dave Barach0d056e52017-09-28 15:11:16 -040030
Neale Ranns097fa662018-05-01 05:17:55 -070031/** \brief An IP table
Neale Ranns28ab9cc2017-08-14 07:18:42 -070032 @param is_ipv6 - V4 or V6 table
33 @param table_id - table ID associated with the route
Paul Vinciguerrac0e94412020-04-28 01:12:04 -040034 This table ID will apply to both the unicast
35 and multicast FIBs
Neale Ranns2297af02017-09-12 09:45:04 -070036 @param name - A client provided name/tag for the table. If this is
37 not set by the client, then VPP will generate something
Paul Vinciguerrac0e94412020-04-28 01:12:04 -040038 meaningful.
Neale Ranns28ab9cc2017-08-14 07:18:42 -070039*/
Paul Vinciguerrae7174822019-08-07 00:05:59 -040040typedef ip_table
Neale Ranns097fa662018-05-01 05:17:55 -070041{
42 u32 table_id;
Ole Troan668605f2019-12-09 16:08:27 +010043 bool is_ip6;
44 string name[64];
Neale Ranns097fa662018-05-01 05:17:55 -070045};
46
47/** \brief Add / del table request
48 A table can be added multiple times, but need be deleted only once.
49 @param client_index - opaque cookie to identify the sender
50 @param context - sender context, to match reply w/ request
51*/
Neale Ranns28ab9cc2017-08-14 07:18:42 -070052autoreply define ip_table_add_del
53{
54 u32 client_index;
55 u32 context;
Jakub Grajciar58989a32019-10-08 14:05:18 +020056 bool is_add [default=true];
Neale Ranns097fa662018-05-01 05:17:55 -070057 vl_api_ip_table_t table;
Neale Ranns28ab9cc2017-08-14 07:18:42 -070058};
59
Neale Ranns097fa662018-05-01 05:17:55 -070060/** \brief Dump IP all fib tables
Dave Barachb5e8a772016-12-06 12:04:42 -050061 @param client_index - opaque cookie to identify the sender
Neale Ranns097fa662018-05-01 05:17:55 -070062 @param context - sender context, to match reply w/ request
Dave Barachb5e8a772016-12-06 12:04:42 -050063*/
Neale Ranns097fa662018-05-01 05:17:55 -070064define ip_table_dump
Dave Barachb5e8a772016-12-06 12:04:42 -050065{
66 u32 client_index;
67 u32 context;
68};
69
Neale Ranns9db6ada2019-11-08 12:42:31 +000070/** \brief IP table replace being
71
72 The use-case is that, for some unspecified reason, the control plane
73 has a very different set of entries it wants in the table than VPP
74 currently has. The CP would thus like to 'replace' VPP's current table
75 only by specifying what the new set of entries shall be, i.e. it is not
Paul Vinciguerrac0e94412020-04-28 01:12:04 -040076 going to delete anything that already exists.
77 the CP declares the start of this procedure with this begin_replace
Neale Ranns9db6ada2019-11-08 12:42:31 +000078 API Call, and when it has populated all the entries it wants, it calls
Paul Vinciguerrac0e94412020-04-28 01:12:04 -040079 the below end_replace API. From this point on it is of course free
Neale Ranns9db6ada2019-11-08 12:42:31 +000080 to add and delete entries as usual.
81 The underlying mechanism by which VPP implements this replace is
82 purposefully left unspecified.
83
84 @param client_index - opaque cookie to identify the sender
85 @param context - sender context, to match reply w/ request
86 @param table - The table to resync
87*/
88autoreply define ip_table_replace_begin
89{
90 u32 client_index;
91 u32 context;
92 vl_api_ip_table_t table;
93};
94
95/** \brief IP table replace end
96
97 see replace start/
98
99 @param client_index - opaque cookie to identify the sender
100 @param context - sender context, to match reply w/ request
101 @param table - The table that has converged
102*/
103autoreply define ip_table_replace_end
104{
105 u32 client_index;
106 u32 context;
107 vl_api_ip_table_t table;
108};
109
110/** \brief IP table flush
111 Flush a table of all routes
112 @param client_index - opaque cookie to identify the sender
113 @param context - sender context, to match reply w/ request
114 @param table - The table to flush
115*/
116autoreply define ip_table_flush
117{
118 u32 client_index;
119 u32 context;
120 vl_api_ip_table_t table;
121};
122
Dave Barachb5e8a772016-12-06 12:04:42 -0500123/** \brief IP FIB table response
Neale Ranns097fa662018-05-01 05:17:55 -0700124 @param context - sender context
125 @param table - description of the table
Dave Barachb5e8a772016-12-06 12:04:42 -0500126*/
Ole Troandf87f802020-11-18 19:17:48 +0100127define ip_table_details
Dave Barachb5e8a772016-12-06 12:04:42 -0500128{
129 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700130 vl_api_ip_table_t table;
Dave Barachb5e8a772016-12-06 12:04:42 -0500131};
132
Neale Ranns097fa662018-05-01 05:17:55 -0700133/** \brief An IP route
134 @param table_id The IP table the route is in
135 @param stats_index The index of the route in the stats segment
136 @param prefix the prefix for the route
137 @param n_paths The number of paths the route has
138 @param paths The paths of the route
Dave Barachb5e8a772016-12-06 12:04:42 -0500139*/
Paul Vinciguerrae7174822019-08-07 00:05:59 -0400140typedef ip_route
Neale Ranns097fa662018-05-01 05:17:55 -0700141{
142 u32 table_id;
143 u32 stats_index;
144 vl_api_prefix_t prefix;
145 u8 n_paths;
146 vl_api_fib_path_t paths[n_paths];
147};
148
149/** \brief Add / del route request
150 @param client_index - opaque cookie to identify the sender
151 @param context - sender context, to match reply w/ request
152 @param is_multipath - Set to 1 if these paths will be added/removed
153 to/from the existing set, or 0 to replace
154 the existing set.
155 is_add=0 & is_multipath=0 implies delete all paths
156 @param is_add - Are the paths being added or removed
157*/
158define ip_route_add_del
Dave Barachb5e8a772016-12-06 12:04:42 -0500159{
160 u32 client_index;
161 u32 context;
Jakub Grajciar58989a32019-10-08 14:05:18 +0200162 bool is_add [default=true];
Ole Troan668605f2019-12-09 16:08:27 +0100163 bool is_multipath;
Neale Ranns097fa662018-05-01 05:17:55 -0700164 vl_api_ip_route_t route;
Dave Barachb5e8a772016-12-06 12:04:42 -0500165};
Neale Ranns097fa662018-05-01 05:17:55 -0700166define ip_route_add_del_reply
Dave Barachb5e8a772016-12-06 12:04:42 -0500167{
168 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700169 i32 retval;
Neale Ranns008dbe12018-09-07 09:32:36 -0700170 u32 stats_index;
Neale Ranns097fa662018-05-01 05:17:55 -0700171};
172
173/** \brief Dump IP routes from a table
174 @param client_index - opaque cookie to identify the sender
175 @param table - The table from which to dump routes (ony ID an AF are needed)
176*/
177define ip_route_dump
178{
179 u32 client_index;
180 u32 context;
181 vl_api_ip_table_t table;
182};
183
184/** \brief IP FIB table entry response
185 @param route The route entry in the table
186*/
Ole Troandf87f802020-11-18 19:17:48 +0100187define ip_route_details
Neale Ranns097fa662018-05-01 05:17:55 -0700188{
189 u32 context;
190 vl_api_ip_route_t route;
Dave Barachb5e8a772016-12-06 12:04:42 -0500191};
192
Christian Hoppsf5d38e02020-05-04 10:28:03 -0400193/** \brief Lookup IP route from a table
194 @param client_index - opaque cookie to identify the sender
195 @param table_id - The IP table to look the route up in
196 @param exact - 0 for normal route lookup, 1 for exact match only
197 @param prefix - The prefix (or host) for route lookup.
198*/
199define ip_route_lookup
200{
201 u32 client_index;
202 u32 context;
203 u32 table_id;
204 u8 exact;
205 vl_api_prefix_t prefix;
206};
207
208/** \brief IP FIB table lookup response
209 @param retval - return code of the lookup
210 @param route - The route entry in the table if found
211*/
212define ip_route_lookup_reply
213{
214 u32 context;
215 i32 retval;
216 vl_api_ip_route_t route;
217};
218
Dave Barachb5e8a772016-12-06 12:04:42 -0500219/** \brief Set the ip flow hash config for a fib request
220 @param client_index - opaque cookie to identify the sender
221 @param context - sender context, to match reply w/ request
222 @param vrf_id - vrf/fib id
223 @param is_ipv6 - if non-zero the fib is ip6, else ip4
224 @param src - if non-zero include src in flow hash
225 @param dst - if non-zero include dst in flow hash
226 @param sport - if non-zero include sport in flow hash
227 @param dport - if non-zero include dport in flow hash
228 @param proto -if non-zero include proto in flow hash
229 @param reverse - if non-zero include reverse in flow hash
Mohsin Kazmi2af0e3a2018-11-20 11:11:12 +0100230 @param symmetric - if non-zero include symmetry in flow hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500231*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400232autoreply define set_ip_flow_hash
Dave Barachb5e8a772016-12-06 12:04:42 -0500233{
Ahmed Abdelsalamf2984bb2020-11-20 18:56:09 +0000234 option deprecated;
Dave Barachb5e8a772016-12-06 12:04:42 -0500235 u32 client_index;
236 u32 context;
237 u32 vrf_id;
Ole Troan668605f2019-12-09 16:08:27 +0100238 bool is_ipv6;
Jakub Grajciar58989a32019-10-08 14:05:18 +0200239 bool src;
240 bool dst;
241 bool sport;
242 bool dport;
243 bool proto;
244 bool reverse;
245 bool symmetric;
Dave Barachb5e8a772016-12-06 12:04:42 -0500246};
247
Ahmed Abdelsalamf2984bb2020-11-20 18:56:09 +0000248/**
249 @brief flow hash settings for an IP table
250 @param src - include src in flow hash
251 @param dst - include dst in flow hash
252 @param sport - include sport in flow hash
253 @param dport - include dport in flow hash
254 @param proto - include proto in flow hash
255 @param reverse - include reverse in flow hash
256 @param symmetric - include symmetry in flow hash
257 @param flowlabel - include flowlabel in flow hash
258*/
259enumflag ip_flow_hash_config
260{
261 IP_API_FLOW_HASH_SRC_IP = 0x01,
262 IP_API_FLOW_HASH_DST_IP = 0x02,
263 IP_API_FLOW_HASH_SRC_PORT = 0x04,
264 IP_API_FLOW_HASH_DST_PORT = 0x08,
265 IP_API_FLOW_HASH_PROTO = 0x10,
266 IP_API_FLOW_HASH_REVERSE = 0x20,
267 IP_API_FLOW_HASH_SYMETRIC = 0x40,
268 IP_API_FLOW_HASH_FLOW_LABEL = 0x80,
269};
270
271autoreply define set_ip_flow_hash_v2
272{
273 u32 client_index;
274 u32 context;
275 u32 table_id;
276 vl_api_address_family_t af;
277 vl_api_ip_flow_hash_config_t flow_hash_config;
278};
279
Neale Ranns3d5f08a2021-01-22 16:12:38 +0000280/** \brief Set the ip flow hash router ID
281 @param client_index - opaque cookie to identify the sender
282 @param context - sender context, to match reply w/ request
283 @param router_id - The ID of the router. Mixed into the hash.
284 Used to prevent polarisation across a network,
285 since each router is assumed to have a different ID
286*/
287autoreply define set_ip_flow_hash_router_id
288{
289 u32 client_index;
290 u32 context;
291 u32 router_id;
292};
293
Dave Barachb5e8a772016-12-06 12:04:42 -0500294/** \brief IPv6 interface enable / disable request
295 @param client_index - opaque cookie to identify the sender
296 @param context - sender context, to match reply w/ request
297 @param sw_if_index - interface used to reach neighbor
298 @param enable - if non-zero enable ip6 on interface, else disable
299*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400300autoreply define sw_interface_ip6_enable_disable
Dave Barachb5e8a772016-12-06 12:04:42 -0500301{
302 u32 client_index;
303 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100304 vl_api_interface_index_t sw_if_index;
305 bool enable; /* set to true if enable */
Dave Barachb5e8a772016-12-06 12:04:42 -0500306};
307
Neale Ranns097fa662018-05-01 05:17:55 -0700308/** \brief Dump IP multicast fib table
309 @param client_index - opaque cookie to identify the sender
310*/
311define ip_mtable_dump
Neale Ranns008dbe12018-09-07 09:32:36 -0700312{
Neale Ranns097fa662018-05-01 05:17:55 -0700313 u32 client_index;
Neale Ranns008dbe12018-09-07 09:32:36 -0700314 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700315};
316define ip_mtable_details
317{
318 u32 client_index;
319 u32 context;
320 vl_api_ip_table_t table;
Neale Ranns008dbe12018-09-07 09:32:36 -0700321};
322
Neale Ranns32e1c012016-11-22 17:07:28 +0000323/** \brief Add / del route request
Ian Wells412ecd32018-10-04 12:31:11 -0700324
325 Adds a route, consisting both of the MFIB entry to match packets
326 (which may already exist) and a path to send those packets down.
327 Routes can be entered repeatedly to add multiple paths. Deletions are
328 per-path.
329
Neale Ranns32e1c012016-11-22 17:07:28 +0000330 @param client_index - opaque cookie to identify the sender
331 @param context - sender context, to match reply w/ request
Ian Wells412ecd32018-10-04 12:31:11 -0700332 @param table_id - fib table /vrf associated with the route
333 @param is_add - true if adding a route; false if deleting one
334 @param is_ipv6 - true iff all the addresses are v6
335 @param entry_flags - see fib_entry_flag_t
336 @param itf_flags - see mfib_entry_flags_t
337 @param next_hop_afi - see dpo_proto_t; the type of destination description
338 @param src_address - the source of the packet
339 @param grp_address - the group the packet is destined to
340 @param nh_address - the nexthop to forward the packet to
341 @param next_hop_sw_if_index - interface to emit packet on
342
343 BIER AFIs use the BIER imposition ID. v4 and v6 AFIs use either the
344 interface or the nexthop address.
345
346 Note that if the route is source-specific (S is supplied, not all 0s),
347 the prefix match is treated as exact (prefixlen /32 or /128).
348
349 FIXME not complete yet
Neale Ranns32e1c012016-11-22 17:07:28 +0000350*/
Neale Ranns097fa662018-05-01 05:17:55 -0700351typedef ip_mroute
352{
353 u32 table_id;
Neale Ranns990f6942020-10-20 07:20:17 +0000354 vl_api_mfib_entry_flags_t entry_flags;
Neale Ranns097fa662018-05-01 05:17:55 -0700355 u32 rpf_id;
356 vl_api_mprefix_t prefix;
357 u8 n_paths;
358 vl_api_mfib_path_t paths[n_paths];
359};
360
Neale Ranns28c142e2018-09-07 09:37:07 -0700361define ip_mroute_add_del
Neale Ranns32e1c012016-11-22 17:07:28 +0000362{
363 u32 client_index;
364 u32 context;
Jakub Grajciar58989a32019-10-08 14:05:18 +0200365 bool is_add [default=true];
Ole Troan668605f2019-12-09 16:08:27 +0100366 bool is_multipath;
Neale Ranns097fa662018-05-01 05:17:55 -0700367 vl_api_ip_mroute_t route;
Neale Ranns32e1c012016-11-22 17:07:28 +0000368};
Neale Ranns28c142e2018-09-07 09:37:07 -0700369define ip_mroute_add_del_reply
370{
371 u32 context;
372 i32 retval;
373 u32 stats_index;
374};
375
Neale Ranns5a8123b2017-01-26 01:18:23 -0800376/** \brief Dump IP multicast fib table
Neale Ranns097fa662018-05-01 05:17:55 -0700377 @param table - The table from which to dump routes (ony ID an AF are needed)
Neale Ranns5a8123b2017-01-26 01:18:23 -0800378*/
Neale Ranns097fa662018-05-01 05:17:55 -0700379define ip_mroute_dump
Neale Ranns5a8123b2017-01-26 01:18:23 -0800380{
381 u32 client_index;
382 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700383 vl_api_ip_table_t table;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800384};
385
Neale Ranns097fa662018-05-01 05:17:55 -0700386/** \brief IP Multicast Route Details
387 @param route - Details of the route
Neale Ranns5a8123b2017-01-26 01:18:23 -0800388*/
Ole Troandf87f802020-11-18 19:17:48 +0100389define ip_mroute_details
Neale Ranns5a8123b2017-01-26 01:18:23 -0800390{
391 u32 context;
Neale Ranns097fa662018-05-01 05:17:55 -0700392 vl_api_ip_mroute_t route;
Neale Ranns5a8123b2017-01-26 01:18:23 -0800393};
394
Dave Barachb5e8a772016-12-06 12:04:42 -0500395define ip_address_details
396{
Dave Barachb5e8a772016-12-06 12:04:42 -0500397 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100398 vl_api_interface_index_t sw_if_index;
Ole Troan75761b92019-09-11 17:49:08 +0200399 vl_api_address_with_prefix_t prefix;
Dave Barachb5e8a772016-12-06 12:04:42 -0500400};
401
402define ip_address_dump
403{
404 u32 client_index;
405 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100406 vl_api_interface_index_t sw_if_index;
407 bool is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500408};
409
Neale Ranns9e2f9152018-05-18 02:27:10 -0700410/** \brief IP unnumbered configurations
411 @param sw_if_index The interface that has unnumbered configuration
Paul Vinciguerrac0e94412020-04-28 01:12:04 -0400412 @param ip_sw_if_index The IP interface that it is unnumbered to
Neale Ranns9e2f9152018-05-18 02:27:10 -0700413*/
414define ip_unnumbered_details
415{
Neale Ranns9e2f9152018-05-18 02:27:10 -0700416 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100417 vl_api_interface_index_t sw_if_index;
418 vl_api_interface_index_t ip_sw_if_index;
Neale Ranns9e2f9152018-05-18 02:27:10 -0700419};
420
421/** \brief Dump IP unnumbered configurations
422 @param sw_if_index ~0 for all interfaces, else the interface desired
423*/
424define ip_unnumbered_dump
425{
426 u32 client_index;
427 u32 context;
Paul Vinciguerrac0e94412020-04-28 01:12:04 -0400428 vl_api_interface_index_t sw_if_index [default=0xffffffff];
Neale Ranns9e2f9152018-05-18 02:27:10 -0700429};
430
Dave Barachb5e8a772016-12-06 12:04:42 -0500431define ip_details
432{
Dave Barachb5e8a772016-12-06 12:04:42 -0500433 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100434 vl_api_interface_index_t sw_if_index;
435 bool is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500436};
437
438define ip_dump
439{
440 u32 client_index;
441 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100442 bool is_ipv6;
Dave Barachb5e8a772016-12-06 12:04:42 -0500443};
444
Neale Ranns32e1c012016-11-22 17:07:28 +0000445define mfib_signal_dump
446{
447 u32 client_index;
448 u32 context;
449};
450
451define mfib_signal_details
452{
Neale Ranns32e1c012016-11-22 17:07:28 +0000453 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100454 vl_api_interface_index_t sw_if_index;
Neale Ranns32e1c012016-11-22 17:07:28 +0000455 u32 table_id;
Neale Ranns097fa662018-05-01 05:17:55 -0700456 vl_api_mprefix_t prefix;
Neale Ranns32e1c012016-11-22 17:07:28 +0000457 u16 ip_packet_len;
458 u8 ip_packet_data[256];
459};
Dave Barachb5e8a772016-12-06 12:04:42 -0500460
Neale Rannsd91c1db2017-07-31 02:30:50 -0700461/** \brief IP punt policer
462 @param client_index - opaque cookie to identify the sender
463 @param context - sender context, to match reply w/ request
464 @param is_add - 1 to add neighbor, 0 to delete
465 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
466 @param policer_index - Index of policer to use
467*/
468autoreply define ip_punt_police
469{
470 u32 client_index;
471 u32 context;
472 u32 policer_index;
Jakub Grajciar58989a32019-10-08 14:05:18 +0200473 bool is_add [default=true];
Ole Troan668605f2019-12-09 16:08:27 +0100474 bool is_ip6;
Neale Rannsd91c1db2017-07-31 02:30:50 -0700475};
476
Pavel Kotucek609e1212018-11-27 09:59:44 +0100477/** \brief Punt redirect type
Neale Ranns47527b22018-11-16 00:53:53 -0800478 @param rx_sw_if_index - specify the original RX interface of traffic
479 that should be redirected. ~0 means any interface.
Paul Vinciguerrac0e94412020-04-28 01:12:04 -0400480 @param tx_sw_if_index - the TX interface to which traffic should be
Neale Rannsd91c1db2017-07-31 02:30:50 -0700481 redirected.
Pavel Kotucek609e1212018-11-27 09:59:44 +0100482 @param nh - the next-hop to redirect the traffic to.
483 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
484*/
Paul Vinciguerrae7174822019-08-07 00:05:59 -0400485typedef punt_redirect
Pavel Kotucek609e1212018-11-27 09:59:44 +0100486{
Ole Troan668605f2019-12-09 16:08:27 +0100487 vl_api_interface_index_t rx_sw_if_index;
488 vl_api_interface_index_t tx_sw_if_index;
Pavel Kotucek609e1212018-11-27 09:59:44 +0100489 vl_api_address_t nh;
490};
491
492/** \brief IP punt redirect
493 @param client_index - opaque cookie to identify the sender
494 @param context - sender context, to match reply w/ request
495 @param punt - punt definition
496 @param is_add - 1 to add neighbor, 0 to delete
Neale Rannsd91c1db2017-07-31 02:30:50 -0700497*/
498autoreply define ip_punt_redirect
499{
500 u32 client_index;
501 u32 context;
Pavel Kotucek609e1212018-11-27 09:59:44 +0100502 vl_api_punt_redirect_t punt;
Jakub Grajciar58989a32019-10-08 14:05:18 +0200503 bool is_add [default=true];
Pavel Kotucek609e1212018-11-27 09:59:44 +0100504};
505
506define ip_punt_redirect_dump
507{
508 u32 client_index;
509 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100510 vl_api_interface_index_t sw_if_index;
511 bool is_ipv6;
Pavel Kotucek609e1212018-11-27 09:59:44 +0100512};
513
514define ip_punt_redirect_details
515{
516 u32 context;
517 vl_api_punt_redirect_t punt;
Neale Rannsd91c1db2017-07-31 02:30:50 -0700518};
519
Florin Coras595992c2017-11-06 17:17:08 -0800520autoreply define ip_container_proxy_add_del
521{
522 u32 client_index;
523 u32 context;
Neale Ranns37029302018-08-10 05:30:06 -0700524 vl_api_prefix_t pfx;
Ole Troan668605f2019-12-09 16:08:27 +0100525 vl_api_interface_index_t sw_if_index;
Jakub Grajciar58989a32019-10-08 14:05:18 +0200526 bool is_add [default=true];
Florin Coras595992c2017-11-06 17:17:08 -0800527};
528
Matus Fabian75b9f452018-10-02 23:27:21 -0700529define ip_container_proxy_dump
530{
531 u32 client_index;
532 u32 context;
533};
534
535define ip_container_proxy_details
536{
537 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100538 vl_api_interface_index_t sw_if_index;
Matus Fabian75b9f452018-10-02 23:27:21 -0700539 vl_api_prefix_t prefix;
540};
541
Neale Rannsb8d44812017-11-10 06:53:54 -0800542/** \brief Configure IP source and L4 port-range check
543 @param client_index - opaque cookie to identify the sender
544 @param context - sender context, to match reply w/ request
545 @param is_ip6 - 1 if source address type is IPv6
546 @param is_add - 1 if add, 0 if delete
Neale Ranns37029302018-08-10 05:30:06 -0700547 @param ip - prefix to match
Neale Rannsb8d44812017-11-10 06:53:54 -0800548 @param number_of_ranges - length of low_port and high_port arrays (must match)
549 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
550 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
551 @param vrf_id - fib table/vrf id to associate the source and port-range check with
552 @note To specify a single port set low_port and high_port entry the same
553*/
554autoreply define ip_source_and_port_range_check_add_del
555{
556 u32 client_index;
557 u32 context;
Jakub Grajciar58989a32019-10-08 14:05:18 +0200558 bool is_add [default=true];
Neale Ranns37029302018-08-10 05:30:06 -0700559 vl_api_prefix_t prefix;
Neale Rannsb8d44812017-11-10 06:53:54 -0800560 u8 number_of_ranges;
561 u16 low_ports[32];
562 u16 high_ports[32];
563 u32 vrf_id;
564};
565
566/** \brief Set interface source and L4 port-range request
567 @param client_index - opaque cookie to identify the sender
568 @param context - sender context, to match reply w/ request
569 @param interface_id - interface index
570 @param tcp_vrf_id - VRF associated with source and TCP port-range check
571 @param udp_vrf_id - VRF associated with source and TCP port-range check
572*/
573autoreply define ip_source_and_port_range_check_interface_add_del
574{
575 u32 client_index;
576 u32 context;
Jakub Grajciar58989a32019-10-08 14:05:18 +0200577 bool is_add [default=true];
Ole Troan668605f2019-12-09 16:08:27 +0100578 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800579 u32 tcp_in_vrf_id;
580 u32 tcp_out_vrf_id;
581 u32 udp_in_vrf_id;
582 u32 udp_out_vrf_id;
583};
584
Neale Rannscbe25aa2019-09-30 10:53:31 +0000585/** \brief IPv6 set link local address on interface request
John Lo7f358b32018-04-28 01:19:24 -0400586 @param client_index - opaque cookie to identify the sender
587 @param context - sender context, to match reply w/ request
Neale Rannscbe25aa2019-09-30 10:53:31 +0000588 @param sw_if_index - interface to set link local on
589 @param ip - the new link local address
John Lo7f358b32018-04-28 01:19:24 -0400590*/
Neale Rannscbe25aa2019-09-30 10:53:31 +0000591autoreply define sw_interface_ip6_set_link_local_address
Neale Rannsb8d44812017-11-10 06:53:54 -0800592{
593 u32 client_index;
594 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100595 vl_api_interface_index_t sw_if_index;
Neale Rannscbe25aa2019-09-30 10:53:31 +0000596 vl_api_ip6_address_t ip;
Neale Rannsb8d44812017-11-10 06:53:54 -0800597};
598
BenoƮt Ganne58a19152021-01-18 19:24:34 +0100599/** \brief IPv6 get link local address on interface request
600 @param client_index - opaque cookie to identify the sender
601 @param context - sender context, to match reply w/ request
602 @param sw_if_index - interface to set link local on
603*/
604define sw_interface_ip6_get_link_local_address
605{
606 u32 client_index;
607 u32 context;
608 vl_api_interface_index_t sw_if_index;
609};
610
611/** \brief IPv6 link local address detail
612 @param context - sender context, to match reply w/ request
613 @param ip - the link local address
614*/
615define sw_interface_ip6_get_link_local_address_reply
616{
617 u32 context;
618 i32 retval;
619 vl_api_ip6_address_t ip;
620};
621
Neale Rannsb8d44812017-11-10 06:53:54 -0800622/** \brief IOAM enable : Enable in-band OAM
623 @param id - profile id
624 @param seqno - To enable Seqno Processing
Jakub Grajciar58989a32019-10-08 14:05:18 +0200625 @param analyse - Enabling analysis of iOAM at decap node
626 @param pow_enable - Proof of Work enabled or not flag
Neale Rannsb8d44812017-11-10 06:53:54 -0800627 @param trace_enable - iOAM Trace enabled or not flag
628*/
629autoreply define ioam_enable
630{
631 u32 client_index;
632 u32 context;
633 u16 id;
Jakub Grajciar58989a32019-10-08 14:05:18 +0200634 bool seqno;
635 bool analyse;
636 bool pot_enable;
637 bool trace_enable;
Neale Rannsb8d44812017-11-10 06:53:54 -0800638 u32 node_id;
639};
640
641/** \brief iOAM disable
642 @param client_index - opaque cookie to identify the sender
643 @param context - sender context, to match reply w/ request
644 @param index - MAP Domain index
645*/
646autoreply define ioam_disable
647{
648 u32 client_index;
649 u32 context;
650 u16 id;
651};
652
Klement Sekerade34c352019-06-25 11:19:22 +0000653enum ip_reass_type
654{
655 IP_REASS_TYPE_FULL = 0,
656 IP_REASS_TYPE_SHALLOW_VIRTUAL = 0x1,
657};
658
Klement Sekera75e7d132017-09-20 08:26:30 +0200659autoreply define ip_reassembly_set
660{
661 u32 client_index;
662 u32 context;
663 u32 timeout_ms;
664 u32 max_reassemblies;
Klement Sekera3a343d42019-05-16 14:35:46 +0200665 u32 max_reassembly_length;
Klement Sekera75e7d132017-09-20 08:26:30 +0200666 u32 expire_walk_interval_ms;
Ole Troan668605f2019-12-09 16:08:27 +0100667 bool is_ip6;
Klement Sekerade34c352019-06-25 11:19:22 +0000668 vl_api_ip_reass_type_t type;
Klement Sekera75e7d132017-09-20 08:26:30 +0200669};
670
671define ip_reassembly_get
672{
673 u32 client_index;
674 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100675 bool is_ip6;
Klement Sekerade34c352019-06-25 11:19:22 +0000676 vl_api_ip_reass_type_t type;
Klement Sekera75e7d132017-09-20 08:26:30 +0200677};
678
679define ip_reassembly_get_reply
680{
Klement Sekera75e7d132017-09-20 08:26:30 +0200681 u32 context;
682 i32 retval;
683 u32 timeout_ms;
684 u32 max_reassemblies;
Klement Sekera3a343d42019-05-16 14:35:46 +0200685 u32 max_reassembly_length;
Klement Sekera75e7d132017-09-20 08:26:30 +0200686 u32 expire_walk_interval_ms;
Ole Troan668605f2019-12-09 16:08:27 +0100687 bool is_ip6;
Klement Sekera75e7d132017-09-20 08:26:30 +0200688};
689
Klement Sekera4c533132018-02-22 11:41:12 +0100690/** \brief Enable/disable reassembly feature
691 @param client_index - opaque cookie to identify the sender
692 @param context - sender context, to match reply w/ request
693 @param sw_if_index - interface to enable/disable feature on
694 @param enable_ip4 - enable ip4 reassembly if non-zero, disable if 0
695 @param enable_ip6 - enable ip6 reassembly if non-zero, disable if 0
696*/
697autoreply define ip_reassembly_enable_disable
698{
699 u32 client_index;
700 u32 context;
Ole Troan668605f2019-12-09 16:08:27 +0100701 vl_api_interface_index_t sw_if_index;
702 bool enable_ip4;
703 bool enable_ip6;
Klement Sekerade34c352019-06-25 11:19:22 +0000704 vl_api_ip_reass_type_t type;
Klement Sekera4c533132018-02-22 11:41:12 +0100705};
706
Dave Barachb5e8a772016-12-06 12:04:42 -0500707/*
708 * Local Variables:
709 * eval: (c-set-style "gnu")
710 * End:
711 */