blob: c262cd69fcf4e8dfcd2fbded86c6812f6898cbd3 [file] [log] [blame]
Ole Troan53fffa12018-11-13 12:36:56 +01001/* Hey Emacs use -*- mode: C -*- */
2/*
3 * Copyright (c) 2018 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
Jon Loeliger9485d992019-11-08 15:05:23 -060017option version = "3.2.2";
Dave Barach0d056e52017-09-28 15:11:16 -040018
Ole Troan53fffa12018-11-13 12:36:56 +010019import "vnet/interface_types.api";
Jakub Grajciar053204a2019-03-18 13:17:53 +010020import "vnet/ethernet/ethernet_types.api";
21import "vnet/ip/ip_types.api";
Ole Troan53fffa12018-11-13 12:36:56 +010022
Marek Gradzki51e59682018-03-06 10:05:44 +010023service {
24 rpc want_interface_events returns want_interface_events_reply
25 events sw_interface_event;
26};
27
Dave Barachaff70772016-10-31 11:59:07 -040028/** \brief Set flags on the interface
29 @param client_index - opaque cookie to identify the sender
30 @param context - sender context, to match reply w/ request
31 @param sw_if_index - index of the interface to set flags on
Jakub Grajciar053204a2019-03-18 13:17:53 +010032 @param flags - interface_status flags
33 (only IF_STATUS_API_FLAG_ADMIN_UP used in config)
Dave Barachaff70772016-10-31 11:59:07 -040034*/
Dave Barach11b8dbf2017-04-24 10:46:54 -040035autoreply define sw_interface_set_flags
Dave Barachaff70772016-10-31 11:59:07 -040036{
37 u32 client_index;
38 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +010039 vl_api_interface_index_t sw_if_index;
40 vl_api_if_status_flags_t flags;
Dave Barachaff70772016-10-31 11:59:07 -040041};
42
Ole Troand7231612018-06-07 10:17:57 +020043/** \brief Set interface physical MTU
Matus Fabiand162f3d2016-12-05 01:05:35 -080044 @param client_index - opaque cookie to identify the sender
45 @param context - sender context, to match reply w/ request
46 @param sw_if_index - index of the interface to set MTU on
47 @param mtu - MTU
48*/
Ole Troand7231612018-06-07 10:17:57 +020049autoreply define hw_interface_set_mtu
Matus Fabiand162f3d2016-12-05 01:05:35 -080050{
51 u32 client_index;
52 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +010053 vl_api_interface_index_t sw_if_index;
Matus Fabiand162f3d2016-12-05 01:05:35 -080054 u16 mtu;
55};
56
Ole Troand7231612018-06-07 10:17:57 +020057/** \brief Set interface L3 MTU */
58autoreply define sw_interface_set_mtu
59{
60 u32 client_index;
61 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +010062 vl_api_interface_index_t sw_if_index;
63 u32 mtu[4]; /* vl_api_mtu_proto_t 0 - L3, 1 - IP4, 2 - IP6, 3 - MPLS */
Ole Troand7231612018-06-07 10:17:57 +020064};
65
Neale Ranns1855b8e2018-07-11 10:31:26 -070066/** \brief Set IP4 directed broadcast
67 The directed broadcast enabled a packet sent to the interface's
68 subnet address will be broadcast on the interface
69 @param sw_if_index
70 @param enable
71*/
72autoreply define sw_interface_set_ip_directed_broadcast
73{
74 u32 client_index;
75 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +010076 vl_api_interface_index_t sw_if_index;
77 bool enable;
Neale Ranns1855b8e2018-07-11 10:31:26 -070078};
79
Neale Rannsa07bd702017-08-07 07:53:49 -070080/** \brief Interface Event generated by want_interface_events
Neale Rannsd292ab12017-08-15 12:29:48 -070081 @param client_index - opaque cookie to identify the sender
82 @param pid - client pid registered to receive notification
Neale Rannsa07bd702017-08-07 07:53:49 -070083 @param sw_if_index - index of the interface of the event
Jakub Grajciar053204a2019-03-18 13:17:53 +010084 @param flags - interface_status flags
Neale Rannsa07bd702017-08-07 07:53:49 -070085 @param deleted - interface was deleted
86*/
87define sw_interface_event
88{
Neale Rannsd292ab12017-08-15 12:29:48 -070089 u32 client_index;
90 u32 pid;
Jakub Grajciar053204a2019-03-18 13:17:53 +010091 vl_api_interface_index_t sw_if_index;
92 vl_api_if_status_flags_t flags;
93 bool deleted;
Neale Rannsa07bd702017-08-07 07:53:49 -070094};
95
Dave Barach6d963c22016-12-05 09:50:05 -050096/** \brief Register for interface events
97 @param client_index - opaque cookie to identify the sender
98 @param context - sender context, to match reply w/ request
99 @param enable_disable - 1 => register for events, 0 => cancel registration
100 @param pid - sender's pid
101*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400102autoreply define want_interface_events
Dave Barach6d963c22016-12-05 09:50:05 -0500103{
104 u32 client_index;
105 u32 context;
106 u32 enable_disable;
107 u32 pid;
108};
109
Jakub Grajciar053204a2019-03-18 13:17:53 +0100110/** \brief Interface details structure (fix this)
Dave Barach6d963c22016-12-05 09:50:05 -0500111 @param sw_if_index - index of the interface
Vratko Polak4a724062019-04-17 20:02:56 +0200112 @param sup_sw_if_index - index of parent interface if any, else same as sw_if_index
Paul Vinciguerra9a29f792019-04-30 20:44:25 -0700113 @param l2_address - the interface's l2 address
Jakub Grajciar053204a2019-03-18 13:17:53 +0100114 @param flags - interface_status flags
115 @param type - interface type
Dave Barach6d963c22016-12-05 09:50:05 -0500116 @param link_duplex - 1 if half duplex, 2 if full duplex
Damjan Marion5100aa92018-11-08 15:30:16 +0100117 @param link_speed - value in kbps
Paul Vinciguerrabdc0e6b2018-09-22 05:32:50 -0700118 @param link_MTU - max. transmission unit
Jakub Grajciar053204a2019-03-18 13:17:53 +0100119 @param sub_id - A number 0-N to uniquely identify this subif on super if
Dave Barach6d963c22016-12-05 09:50:05 -0500120 @param sub_number_of_tags - Number of tags (0 - 2)
121 @param sub_outer_vlan_id
122 @param sub_inner_vlan_id
Jakub Grajciar053204a2019-03-18 13:17:53 +0100123 @param sub_if_flags - sub interface flags
Dave Barach6d963c22016-12-05 09:50:05 -0500124 @param vtr_op - vlan tag rewrite operation
125 @param vtr_push_dot1q
126 @param vtr_tag1
127 @param vtr_tag2
Pavel Kotucek65e84572017-01-16 17:01:56 +0100128 @param pbb_outer_tag - translate pbb s-tag
129 @param pbb_b_dmac[6] - B-tag remote mac address
130 @param pbb_b_smac[6] - B-tag local mac address
131 @param pbb_b_vlanid - B-tag vlanid
132 @param pbb_i_sid - I-tag service id
Jakub Grajciar053204a2019-03-18 13:17:53 +0100133 @param interface_name - name of the interface
Mohsin Kazmide312c22019-09-27 13:44:28 +0200134 @param interface_dev_type - device type of the interface
Jakub Grajciar053204a2019-03-18 13:17:53 +0100135 @param tag - an ascii tag
Dave Barach6d963c22016-12-05 09:50:05 -0500136*/
137define sw_interface_details
138{
139 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100140 vl_api_interface_index_t sw_if_index;
Dave Barach6d963c22016-12-05 09:50:05 -0500141
142 /* index of sup interface (e.g. hw interface).
143 equal to sw_if_index for super hw interface. */
144 u32 sup_sw_if_index;
145
146 /* Layer 2 address, if applicable */
Jakub Grajciar053204a2019-03-18 13:17:53 +0100147 vl_api_mac_address_t l2_address;
Dave Barach6d963c22016-12-05 09:50:05 -0500148
Jakub Grajciar053204a2019-03-18 13:17:53 +0100149 vl_api_if_status_flags_t flags;
Ole Trøan3b0d7e42019-03-15 16:14:41 +0000150
Jakub Grajciar053204a2019-03-18 13:17:53 +0100151 vl_api_if_type_t type;
Dave Barach6d963c22016-12-05 09:50:05 -0500152
153 /* 1 = half duplex, 2 = full duplex */
Jakub Grajciar053204a2019-03-18 13:17:53 +0100154 vl_api_link_duplex_t link_duplex;
Dave Barach6d963c22016-12-05 09:50:05 -0500155
Damjan Marion5100aa92018-11-08 15:30:16 +0100156 /* link speed in kbps */
157 u32 link_speed;
Dave Barach6d963c22016-12-05 09:50:05 -0500158
159 /* MTU */
Damjan Marionfe7d4a22018-04-13 19:43:39 +0200160 u16 link_mtu;
Dave Barach6d963c22016-12-05 09:50:05 -0500161
Ole Troand7231612018-06-07 10:17:57 +0200162 /* Per protocol MTUs */
Jakub Grajciar053204a2019-03-18 13:17:53 +0100163 u32 mtu[4]; /* vl_api_mtu_proto_t 0 - L3, 1 - IP4, 2 - IP6, 3 - MPLS */
Ole Troand7231612018-06-07 10:17:57 +0200164
Dave Barach6d963c22016-12-05 09:50:05 -0500165 /* Subinterface ID. A number 0-N to uniquely identify this subinterface under the super interface */
166 u32 sub_id;
167
Dave Barach6d963c22016-12-05 09:50:05 -0500168 /* Number of tags 0-2 */
169 u8 sub_number_of_tags;
170 u16 sub_outer_vlan_id;
171 u16 sub_inner_vlan_id;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100172
173 vl_api_sub_if_flags_t sub_if_flags;
Dave Barach6d963c22016-12-05 09:50:05 -0500174
175 /* vlan tag rewrite state */
176 u32 vtr_op;
177 u32 vtr_push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
178 u32 vtr_tag1; // first pushed tag
179 u32 vtr_tag2; // second pushed tag
Vratko Polak4a724062019-04-17 20:02:56 +0200180
Pavel Kotucek65e84572017-01-16 17:01:56 +0100181 /* pbb tag rewrite info */
182 u16 outer_tag;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100183 vl_api_mac_address_t b_dmac;
184 vl_api_mac_address_t b_smac;
Pavel Kotucek65e84572017-01-16 17:01:56 +0100185 u16 b_vlanid;
186 u32 i_sid;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100187
188 /* Interface name */
Ole Troane5ff5a32019-08-23 22:55:18 +0200189 string interface_name[64];
Mohsin Kazmide312c22019-09-27 13:44:28 +0200190 string interface_dev_type[64];
Ole Troane5ff5a32019-08-23 22:55:18 +0200191 string tag[64];
Dave Barach6d963c22016-12-05 09:50:05 -0500192};
193
Paul Vinciguerrabb2c7b52019-03-14 09:47:29 -0700194/** \brief Request all or filtered subset of sw_interface_details
195 @param client_index - opaque cookie to identify the sender
196 @param context - sender context, to match reply w/ request
Vratko Polakb8591ac2019-04-23 12:26:44 +0200197 @param sw_if_index - index of the interface to dump info on, 0 or ~0 if on all
198 TODO: Support selecting only index==0 when CSIT is ready.
Paul Vinciguerrabb2c7b52019-03-14 09:47:29 -0700199 @param name_filter_valid - 1 if requesting a filtered subset of records else 0
Vratko Polakb8591ac2019-04-23 12:26:44 +0200200 if name filter is set as valid, sw_if_index value is ignored and all interfaces are examined
Paul Vinciguerrabb2c7b52019-03-14 09:47:29 -0700201 @param name_filter - interface name substring filter. Eg. loop1 returns [loop1, loop10]
202*/
Dave Barach6d963c22016-12-05 09:50:05 -0500203define sw_interface_dump
204{
205 u32 client_index;
206 u32 context;
Ole Troan418ebb72019-11-19 04:38:20 +0100207 vl_api_interface_index_t sw_if_index [default=0xFFFFFFFF];
Jakub Grajciar053204a2019-03-18 13:17:53 +0100208 bool name_filter_valid;
Ole Troane5ff5a32019-08-23 22:55:18 +0200209 string name_filter[];
Dave Barach6d963c22016-12-05 09:50:05 -0500210};
211
212/** \brief Set or delete one or all ip addresses on a specified interface
213 @param client_index - opaque cookie to identify the sender
214 @param context - sender context, to match reply w/ request
Jakub Grajciar053204a2019-03-18 13:17:53 +0100215 @param sw_if_index - index of the interface to add/del addresses
Dave Barach6d963c22016-12-05 09:50:05 -0500216 @param is_add - add address if non-zero, else delete
Dave Barach6d963c22016-12-05 09:50:05 -0500217 @param del_all - if non-zero delete all addresses on the interface
Jakub Grajciar053204a2019-03-18 13:17:53 +0100218 @param prefix - address + a prefix length for the implied connected route
Dave Barach6d963c22016-12-05 09:50:05 -0500219*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400220autoreply define sw_interface_add_del_address
Dave Barach6d963c22016-12-05 09:50:05 -0500221{
222 u32 client_index;
223 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100224 vl_api_interface_index_t sw_if_index;
225 bool is_add;
226
227 bool del_all;
Ole Troan75761b92019-09-11 17:49:08 +0200228 vl_api_address_with_prefix_t prefix;
Dave Barach6d963c22016-12-05 09:50:05 -0500229};
230
Neale Ranns59f71132020-04-08 12:19:38 +0000231/** \brief IP interface address replace begin
232
233 The use-case is that, for some unspecified reason, the control plane
234 has a different set of interface addresses than VPP
235 currently has. The CP would thus like to 'replace' VPP's set
236 only by specifying what the new set shall be, i.e. it is not
237 going to delete anything that already eixts, rather, is wants any
238 unspecified interface addresses to be deleted implicitly.
239 The CP declares the start of this procedure with this replace_begin
240 API Call, and when it has populated all addresses it wants, it calls
241 the below replace_end API. From this point on it is of course free
242 to add and delete interface addresses as usual.
243 The underlying mechanism by which VPP implements this replace is
244 intentionally left unspecified.
245
246 @param client_index - opaque cookie to identify the sender
247 @param context - sender context, to match reply w/ request
248*/
249autoreply define sw_interface_address_replace_begin
250{
251 u32 client_index;
252 u32 context;
253};
254
255/** \brief IP interface address replace end
256
257 see ip_interface_address_replace_begin description.
258
259 @param client_index - opaque cookie to identify the sender
260 @param context - sender context, to match reply w/ request
261*/
262autoreply define sw_interface_address_replace_end
263{
264 u32 client_index;
265 u32 context;
266};
267
Dave Barach6d963c22016-12-05 09:50:05 -0500268/** \brief Associate the specified interface with a fib table
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 - index of the interface
272 @param is_ipv6 - if non-zero ipv6, else ipv4
jackiechen19850ad4a432019-05-09 16:57:16 +0800273 @param vrf_id - fib table/vrf id to associate the interface with
Dave Barach6d963c22016-12-05 09:50:05 -0500274*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400275autoreply define sw_interface_set_table
Dave Barach6d963c22016-12-05 09:50:05 -0500276{
277 u32 client_index;
278 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100279 vl_api_interface_index_t sw_if_index;
280 bool is_ipv6;
Dave Barach6d963c22016-12-05 09:50:05 -0500281 u32 vrf_id;
282};
283
Juraj Slobodadfc19232016-12-05 13:20:37 +0100284/** \brief Get VRF id assigned to interface
285 @param client_index - opaque cookie to identify the sender
286 @param context - sender context, to match reply w/ request
287 @param sw_if_index - index of the interface
288*/
289define sw_interface_get_table
290{
291 u32 client_index;
292 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100293 vl_api_interface_index_t sw_if_index;
294 bool is_ipv6;
Juraj Slobodadfc19232016-12-05 13:20:37 +0100295};
296
297/** \brief Reply to get_sw_interface_vrf
298 @param context - sender context which was passed in the request
299 @param vrf_id - VRF id assigned to the interface
300*/
301define sw_interface_get_table_reply
302{
303 u32 context;
304 i32 retval;
305 u32 vrf_id;
306};
307
Dave Barach6d963c22016-12-05 09:50:05 -0500308/** \brief Set unnumbered interface add / del request
309 @param client_index - opaque cookie to identify the sender
310 @param context - sender context, to match reply w/ request
311 @param sw_if_index - interface with an IP address
312 @param unnumbered_sw_if_index - interface which will use the address
313 @param is_add - if non-zero set the association, else unset it
314*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400315autoreply define sw_interface_set_unnumbered
Dave Barach6d963c22016-12-05 09:50:05 -0500316{
317 u32 client_index;
318 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100319 vl_api_interface_index_t sw_if_index; /* use this intfc address */
320 vl_api_interface_index_t unnumbered_sw_if_index; /* on this interface */
321 bool is_add;
Dave Barach6d963c22016-12-05 09:50:05 -0500322};
323
Dave Barach6d963c22016-12-05 09:50:05 -0500324/** \brief Clear interface statistics
325 @param client_index - opaque cookie to identify the sender
326 @param context - sender context, to match reply w/ request
327 @param sw_if_index - index of the interface to clear statistics
328*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400329autoreply define sw_interface_clear_stats
Dave Barach6d963c22016-12-05 09:50:05 -0500330{
331 u32 client_index;
332 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100333 vl_api_interface_index_t sw_if_index;
Dave Barach6d963c22016-12-05 09:50:05 -0500334};
335
Dave Barach6d963c22016-12-05 09:50:05 -0500336/** \brief Set / clear software interface tag
337 @param client_index - opaque cookie to identify the sender
338 @param context - sender context, to match reply w/ request
339 @param sw_if_index - the interface
340 @param add_del - 1 = add, 0 = delete
341 @param tag - an ascii tag
342*/
Jakub Grajciar053204a2019-03-18 13:17:53 +0100343autoreply define sw_interface_tag_add_del
Dave Barach6d963c22016-12-05 09:50:05 -0500344{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100345 u32 client_index;
346 u32 context;
347 bool is_add;
348 vl_api_interface_index_t sw_if_index;
Ole Troane5ff5a32019-08-23 22:55:18 +0200349 string tag[64];
Dave Barach6d963c22016-12-05 09:50:05 -0500350};
351
Matthew Smithe0792fd2019-07-12 11:48:24 -0500352/** \brief Add or delete a secondary MAC address on an interface
353 @param client_index - opaque cookie to identify the sender
354 @param context - sender context, to match reply w/ request
355 @param sw_if_index - the interface whose MAC will be set
356 @param mac_addr - the new MAC address
357 @param is_add - 0 to delete, != 0 to add
358*/
359autoreply define sw_interface_add_del_mac_address
360{
361 u32 client_index;
362 u32 context;
363 u32 sw_if_index;
364 vl_api_mac_address_t addr;
365 u8 is_add;
366};
367
Jon Loeliger10c273b2017-03-30 08:39:33 -0500368/** \brief Set an interface's MAC address
369 @param client_index - opaque cookie to identify the sender
370 @param context - sender context, to match reply w/ request
371 @param sw_if_index - the interface whose MAC will be set
372 @param mac_addr - the new MAC address
373*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400374autoreply define sw_interface_set_mac_address
Jon Loeliger10c273b2017-03-30 08:39:33 -0500375{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100376 u32 client_index;
377 u32 context;
378 vl_api_interface_index_t sw_if_index;
379 vl_api_mac_address_t mac_address;
Jon Loeliger10c273b2017-03-30 08:39:33 -0500380};
381
Juraj Slobodac0374232018-02-01 15:18:49 +0100382/** \brief Get interface's MAC address
383 @param client_index - opaque cookie to identify the sender
384 @param context - sender context, to match reply w/ request
385 @param sw_if_index - the interface whose MAC will be returned
386*/
387define sw_interface_get_mac_address
388{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100389 u32 client_index;
390 u32 context;
391 vl_api_interface_index_t sw_if_index;
Juraj Slobodac0374232018-02-01 15:18:49 +0100392};
393
394/** \brief Reply for get interface's MAC address request
395 @param context - returned sender context, to match reply w/ request
396 @param retval - return code
397 @param mac_addr - returned interface's MAC address
398*/
399define sw_interface_get_mac_address_reply
400{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100401 u32 context;
402 i32 retval;
403 vl_api_mac_address_t mac_address;
Juraj Slobodac0374232018-02-01 15:18:49 +0100404};
405
Stevenad8015b2017-10-29 22:10:46 -0700406/** \brief Set an interface's rx-mode
407 @param client_index - opaque cookie to identify the sender
408 @param context - sender context, to match reply w/ request
409 @param sw_if_index - the interface whose rx-mode will be set
410 @param queue_id_valid - 1 = the queue_id field is valid. 0 means all
411 queue_id's
412 @param queue_id - the queue number whose rx-mode will be set. Only valid
413 if queue_id_valid is 1
414 @param mode - polling=1, interrupt=2, adaptive=3
415*/
416autoreply define sw_interface_set_rx_mode
417{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100418 u32 client_index;
419 u32 context;
420 vl_api_interface_index_t sw_if_index;
421 bool queue_id_valid;
422 u32 queue_id;
423 vl_api_rx_mode_t mode;
Stevenad8015b2017-10-29 22:10:46 -0700424};
425
Mohsin Kazmi54f7c512018-08-23 18:28:11 +0200426/** \brief Set an interface's rx-placement
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200427 Rx-Queue placement on specific thread is operational for only hardware
428 interface. It will not set queue - thread placement for sub-interfaces,
429 p2p and pipe interfaces.
Mohsin Kazmi54f7c512018-08-23 18:28:11 +0200430 @param client_index - opaque cookie to identify the sender
431 @param context - sender context, to match reply w/ request
432 @param sw_if_index - the interface whose rx-placement will be set
433 @param queue_id - the queue number whose rx-placement will be set.
434 @param worker_id - the worker number whom rx-placement will be at.
435 @param is_main - flag to set rx-placement to main thread
436*/
437autoreply define sw_interface_set_rx_placement
438{
439 u32 client_index;
440 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100441 vl_api_interface_index_t sw_if_index;
Mohsin Kazmi54f7c512018-08-23 18:28:11 +0200442 u32 queue_id;
443 u32 worker_id;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100444 bool is_main;
Mohsin Kazmi54f7c512018-08-23 18:28:11 +0200445};
446
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200447/** \brief dump the rx queue placement of interface(s)
448 @param sw_if_index - optional interface index for which queue placement to
449 be requested. sw_if_index = ~0 will dump placement information for all
450 interfaces. It will not dump information related to sub-interfaces, p2p
451 and pipe interfaces.
452*/
453define sw_interface_rx_placement_dump
454{
455 u32 client_index;
456 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100457 vl_api_interface_index_t sw_if_index;
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200458};
459
460/** \brief show the interface's queue - thread placement
461 This api is used to display the interface and queue worker
462 thread placement. One message per rx-queue per interface will
463 be sent to client.
464 Each message will contain information about rx-queue id of an
465 interface, interface index, thread on which this rx-queue is
466 placed and mode of rx-queue.
467 @param client_index - opaque cookie to identify the sender
468 @param context - sender context, to match reply w/ request
469 @param sw_if_index - the interface whose rx-placement will be dumped
470 @param queue_id - the queue id
471 @param worker_id - the worker id on which queue_id is placed,
472 worker_id = 0 means main thread.
473 @param mode - polling=1, interrupt=2, adaptive=3
474*/
475define sw_interface_rx_placement_details
476{
477 u32 client_index;
478 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100479 vl_api_interface_index_t sw_if_index;
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200480 u32 queue_id;
481 u32 worker_id;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100482 vl_api_rx_mode_t mode;
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200483};
484
Neale Rannsb8d44812017-11-10 06:53:54 -0800485/* Gross kludge, DGMS */
486autoreply define interface_name_renumber
487{
488 u32 client_index;
489 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100490 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800491 u32 new_show_dev_instance;
492};
493
494define create_subif
495{
496 u32 client_index;
497 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100498 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800499 u32 sub_id;
500
Jakub Grajciar053204a2019-03-18 13:17:53 +0100501 vl_api_sub_if_flags_t sub_if_flags;
Neale Rannsb8d44812017-11-10 06:53:54 -0800502 u16 outer_vlan_id;
503 u16 inner_vlan_id;
504};
505
506define create_subif_reply
507{
508 u32 context;
509 i32 retval;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100510 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800511};
512
513/** \brief Create a new subinterface with the given vlan id
514 @param client_index - opaque cookie to identify the sender
515 @param context - sender context, to match reply w/ request
516 @param sw_if_index - software index of the new vlan's parent interface
517 @param vlan_id - vlan tag of the new interface
518*/
519define create_vlan_subif
520{
521 u32 client_index;
522 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100523 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800524 u32 vlan_id;
525};
526
527/** \brief Reply for the vlan subinterface create request
528 @param context - returned sender context, to match reply w/ request
529 @param retval - return code
530 @param sw_if_index - software index allocated for the new subinterface
531*/
532define create_vlan_subif_reply
533{
534 u32 context;
535 i32 retval;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100536 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800537};
538
539/** \brief Delete sub interface request
540 @param client_index - opaque cookie to identify the sender
541 @param context - sender context, to match reply w/ request
542 @param sw_if_index - sw index of the interface that was created by create_subif
543*/
544autoreply define delete_subif {
545 u32 client_index;
546 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100547 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800548};
549
550/** \brief Create loopback interface request
551 @param client_index - opaque cookie to identify the sender
552 @param context - sender context, to match reply w/ request
553 @param mac_address - mac addr to assign to the interface if none-zero
554*/
555define create_loopback
556{
557 u32 client_index;
558 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100559 vl_api_mac_address_t mac_address;
Neale Rannsb8d44812017-11-10 06:53:54 -0800560};
561
562/** \brief Create loopback interface response
563 @param context - sender context, to match reply w/ request
564 @param sw_if_index - sw index of the interface that was created
565 @param retval - return code for the request
566*/
567define create_loopback_reply
568{
569 u32 context;
570 i32 retval;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100571 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800572};
573
574/** \brief Create loopback interface instance request
575 @param client_index - opaque cookie to identify the sender
576 @param context - sender context, to match reply w/ request
577 @param mac_address - mac addr to assign to the interface if none-zero
578 @param is_specified - if non-0, a specific user_instance is being requested
579 @param user_instance - requested instance, ~0 => dynamically allocate
580*/
581define create_loopback_instance
582{
583 u32 client_index;
584 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100585 vl_api_mac_address_t mac_address;
586 bool is_specified;
Neale Rannsb8d44812017-11-10 06:53:54 -0800587 u32 user_instance;
588};
589
590/** \brief Create loopback interface instance response
591 @param context - sender context, to match reply w/ request
592 @param sw_if_index - sw index of the interface that was created
593 @param retval - return code for the request
594*/
595define create_loopback_instance_reply
596{
597 u32 context;
598 i32 retval;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100599 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800600};
601
602/** \brief Delete loopback interface request
603 @param client_index - opaque cookie to identify the sender
604 @param context - sender context, to match reply w/ request
605 @param sw_if_index - sw index of the interface that was created
606*/
607autoreply define delete_loopback
608{
609 u32 client_index;
610 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100611 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800612};
613
Neale Ranns6f4a6be2018-03-16 16:26:21 -0700614/** \brief Enable or disable detailed interface stats
615 @param client_index - opaque cookie to identify the sender
616 @param context - sender context, to match reply w/ request
Neale Ranns0cae3f72018-03-21 09:44:01 -0400617 @param sw_if_index - The interface to collect detail stats on. ~0 implies
618 all interfaces.
Neale Ranns6f4a6be2018-03-16 16:26:21 -0700619 @param enable_disable - set to 1 to enable, 0 to disable detailed stats
620*/
621autoreply define collect_detailed_interface_stats
622{
623 u32 client_index;
624 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100625 vl_api_interface_index_t sw_if_index;
626 bool enable_disable;
Neale Ranns6f4a6be2018-03-16 16:26:21 -0700627};
628
Dave Barach6d963c22016-12-05 09:50:05 -0500629/*
630 * Local Variables:
631 * eval: (c-set-style "gnu")
632 * End:
633 */