blob: 4d28332a639fb81c49c30997d370b64438cba696 [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
Steven Luongf49734d2021-07-26 13:38:05 -070017option version = "3.2.3";
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
Nathan Skrzypczakfd0b3992021-02-04 16:11:18 +010043/** \brief Set interface promiscuous mode
44 @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 flags on
47 @param promisc_on - promiscuous mode is on ?
48*/
49autoreply define sw_interface_set_promisc
50{
51 u32 client_index;
52 u32 context;
53 vl_api_interface_index_t sw_if_index;
54 bool promisc_on;
55};
56
Ole Troand7231612018-06-07 10:17:57 +020057/** \brief Set interface physical MTU
Matus Fabiand162f3d2016-12-05 01:05:35 -080058 @param client_index - opaque cookie to identify the sender
59 @param context - sender context, to match reply w/ request
60 @param sw_if_index - index of the interface to set MTU on
61 @param mtu - MTU
62*/
Ole Troand7231612018-06-07 10:17:57 +020063autoreply define hw_interface_set_mtu
Matus Fabiand162f3d2016-12-05 01:05:35 -080064{
65 u32 client_index;
66 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +010067 vl_api_interface_index_t sw_if_index;
Matus Fabiand162f3d2016-12-05 01:05:35 -080068 u16 mtu;
69};
70
Ole Troand7231612018-06-07 10:17:57 +020071/** \brief Set interface L3 MTU */
72autoreply define sw_interface_set_mtu
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 u32 mtu[4]; /* vl_api_mtu_proto_t 0 - L3, 1 - IP4, 2 - IP6, 3 - MPLS */
Ole Troand7231612018-06-07 10:17:57 +020078};
79
Neale Ranns1855b8e2018-07-11 10:31:26 -070080/** \brief Set IP4 directed broadcast
81 The directed broadcast enabled a packet sent to the interface's
82 subnet address will be broadcast on the interface
83 @param sw_if_index
84 @param enable
85*/
86autoreply define sw_interface_set_ip_directed_broadcast
87{
88 u32 client_index;
89 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +010090 vl_api_interface_index_t sw_if_index;
91 bool enable;
Neale Ranns1855b8e2018-07-11 10:31:26 -070092};
93
Neale Rannsa07bd702017-08-07 07:53:49 -070094/** \brief Interface Event generated by want_interface_events
Neale Rannsd292ab12017-08-15 12:29:48 -070095 @param client_index - opaque cookie to identify the sender
96 @param pid - client pid registered to receive notification
Neale Rannsa07bd702017-08-07 07:53:49 -070097 @param sw_if_index - index of the interface of the event
Jakub Grajciar053204a2019-03-18 13:17:53 +010098 @param flags - interface_status flags
Neale Rannsa07bd702017-08-07 07:53:49 -070099 @param deleted - interface was deleted
100*/
101define sw_interface_event
102{
Neale Rannsd292ab12017-08-15 12:29:48 -0700103 u32 client_index;
104 u32 pid;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100105 vl_api_interface_index_t sw_if_index;
106 vl_api_if_status_flags_t flags;
107 bool deleted;
Neale Rannsa07bd702017-08-07 07:53:49 -0700108};
109
Dave Barach6d963c22016-12-05 09:50:05 -0500110/** \brief Register for interface events
111 @param client_index - opaque cookie to identify the sender
112 @param context - sender context, to match reply w/ request
113 @param enable_disable - 1 => register for events, 0 => cancel registration
114 @param pid - sender's pid
115*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400116autoreply define want_interface_events
Dave Barach6d963c22016-12-05 09:50:05 -0500117{
118 u32 client_index;
119 u32 context;
120 u32 enable_disable;
121 u32 pid;
122};
123
Jakub Grajciar053204a2019-03-18 13:17:53 +0100124/** \brief Interface details structure (fix this)
Dave Barach6d963c22016-12-05 09:50:05 -0500125 @param sw_if_index - index of the interface
Vratko Polak4a724062019-04-17 20:02:56 +0200126 @param sup_sw_if_index - index of parent interface if any, else same as sw_if_index
Paul Vinciguerra9a29f792019-04-30 20:44:25 -0700127 @param l2_address - the interface's l2 address
Jakub Grajciar053204a2019-03-18 13:17:53 +0100128 @param flags - interface_status flags
129 @param type - interface type
Dave Barach6d963c22016-12-05 09:50:05 -0500130 @param link_duplex - 1 if half duplex, 2 if full duplex
Damjan Marion5100aa92018-11-08 15:30:16 +0100131 @param link_speed - value in kbps
Paul Vinciguerrabdc0e6b2018-09-22 05:32:50 -0700132 @param link_MTU - max. transmission unit
Jakub Grajciar053204a2019-03-18 13:17:53 +0100133 @param sub_id - A number 0-N to uniquely identify this subif on super if
Dave Barach6d963c22016-12-05 09:50:05 -0500134 @param sub_number_of_tags - Number of tags (0 - 2)
135 @param sub_outer_vlan_id
136 @param sub_inner_vlan_id
Jakub Grajciar053204a2019-03-18 13:17:53 +0100137 @param sub_if_flags - sub interface flags
Dave Barach6d963c22016-12-05 09:50:05 -0500138 @param vtr_op - vlan tag rewrite operation
139 @param vtr_push_dot1q
140 @param vtr_tag1
141 @param vtr_tag2
Pavel Kotucek65e84572017-01-16 17:01:56 +0100142 @param pbb_outer_tag - translate pbb s-tag
143 @param pbb_b_dmac[6] - B-tag remote mac address
144 @param pbb_b_smac[6] - B-tag local mac address
145 @param pbb_b_vlanid - B-tag vlanid
146 @param pbb_i_sid - I-tag service id
Jakub Grajciar053204a2019-03-18 13:17:53 +0100147 @param interface_name - name of the interface
Mohsin Kazmide312c22019-09-27 13:44:28 +0200148 @param interface_dev_type - device type of the interface
Jakub Grajciar053204a2019-03-18 13:17:53 +0100149 @param tag - an ascii tag
Dave Barach6d963c22016-12-05 09:50:05 -0500150*/
151define sw_interface_details
152{
153 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100154 vl_api_interface_index_t sw_if_index;
Dave Barach6d963c22016-12-05 09:50:05 -0500155
156 /* index of sup interface (e.g. hw interface).
157 equal to sw_if_index for super hw interface. */
158 u32 sup_sw_if_index;
159
160 /* Layer 2 address, if applicable */
Jakub Grajciar053204a2019-03-18 13:17:53 +0100161 vl_api_mac_address_t l2_address;
Dave Barach6d963c22016-12-05 09:50:05 -0500162
Jakub Grajciar053204a2019-03-18 13:17:53 +0100163 vl_api_if_status_flags_t flags;
Ole Trøan3b0d7e42019-03-15 16:14:41 +0000164
Jakub Grajciar053204a2019-03-18 13:17:53 +0100165 vl_api_if_type_t type;
Dave Barach6d963c22016-12-05 09:50:05 -0500166
167 /* 1 = half duplex, 2 = full duplex */
Jakub Grajciar053204a2019-03-18 13:17:53 +0100168 vl_api_link_duplex_t link_duplex;
Dave Barach6d963c22016-12-05 09:50:05 -0500169
Damjan Marion5100aa92018-11-08 15:30:16 +0100170 /* link speed in kbps */
171 u32 link_speed;
Dave Barach6d963c22016-12-05 09:50:05 -0500172
173 /* MTU */
Damjan Marionfe7d4a22018-04-13 19:43:39 +0200174 u16 link_mtu;
Dave Barach6d963c22016-12-05 09:50:05 -0500175
Ole Troand7231612018-06-07 10:17:57 +0200176 /* Per protocol MTUs */
Jakub Grajciar053204a2019-03-18 13:17:53 +0100177 u32 mtu[4]; /* vl_api_mtu_proto_t 0 - L3, 1 - IP4, 2 - IP6, 3 - MPLS */
Ole Troand7231612018-06-07 10:17:57 +0200178
Dave Barach6d963c22016-12-05 09:50:05 -0500179 /* Subinterface ID. A number 0-N to uniquely identify this subinterface under the super interface */
180 u32 sub_id;
181
Dave Barach6d963c22016-12-05 09:50:05 -0500182 /* Number of tags 0-2 */
183 u8 sub_number_of_tags;
184 u16 sub_outer_vlan_id;
185 u16 sub_inner_vlan_id;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100186
187 vl_api_sub_if_flags_t sub_if_flags;
Dave Barach6d963c22016-12-05 09:50:05 -0500188
189 /* vlan tag rewrite state */
190 u32 vtr_op;
191 u32 vtr_push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad
192 u32 vtr_tag1; // first pushed tag
193 u32 vtr_tag2; // second pushed tag
Vratko Polak4a724062019-04-17 20:02:56 +0200194
Pavel Kotucek65e84572017-01-16 17:01:56 +0100195 /* pbb tag rewrite info */
196 u16 outer_tag;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100197 vl_api_mac_address_t b_dmac;
198 vl_api_mac_address_t b_smac;
Pavel Kotucek65e84572017-01-16 17:01:56 +0100199 u16 b_vlanid;
200 u32 i_sid;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100201
202 /* Interface name */
Ole Troane5ff5a32019-08-23 22:55:18 +0200203 string interface_name[64];
Mohsin Kazmide312c22019-09-27 13:44:28 +0200204 string interface_dev_type[64];
Ole Troane5ff5a32019-08-23 22:55:18 +0200205 string tag[64];
Dave Barach6d963c22016-12-05 09:50:05 -0500206};
207
Paul Vinciguerrabb2c7b52019-03-14 09:47:29 -0700208/** \brief Request all or filtered subset of sw_interface_details
209 @param client_index - opaque cookie to identify the sender
210 @param context - sender context, to match reply w/ request
Vratko Polakb8591ac2019-04-23 12:26:44 +0200211 @param sw_if_index - index of the interface to dump info on, 0 or ~0 if on all
212 TODO: Support selecting only index==0 when CSIT is ready.
Paul Vinciguerrabb2c7b52019-03-14 09:47:29 -0700213 @param name_filter_valid - 1 if requesting a filtered subset of records else 0
Vratko Polakb8591ac2019-04-23 12:26:44 +0200214 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 -0700215 @param name_filter - interface name substring filter. Eg. loop1 returns [loop1, loop10]
216*/
Dave Barach6d963c22016-12-05 09:50:05 -0500217define sw_interface_dump
218{
219 u32 client_index;
220 u32 context;
Ole Troan418ebb72019-11-19 04:38:20 +0100221 vl_api_interface_index_t sw_if_index [default=0xFFFFFFFF];
Jakub Grajciar053204a2019-03-18 13:17:53 +0100222 bool name_filter_valid;
Ole Troane5ff5a32019-08-23 22:55:18 +0200223 string name_filter[];
Dave Barach6d963c22016-12-05 09:50:05 -0500224};
225
226/** \brief Set or delete one or all ip addresses on a specified interface
227 @param client_index - opaque cookie to identify the sender
228 @param context - sender context, to match reply w/ request
Jakub Grajciar053204a2019-03-18 13:17:53 +0100229 @param sw_if_index - index of the interface to add/del addresses
Dave Barach6d963c22016-12-05 09:50:05 -0500230 @param is_add - add address if non-zero, else delete
Dave Barach6d963c22016-12-05 09:50:05 -0500231 @param del_all - if non-zero delete all addresses on the interface
Jakub Grajciar053204a2019-03-18 13:17:53 +0100232 @param prefix - address + a prefix length for the implied connected route
Dave Barach6d963c22016-12-05 09:50:05 -0500233*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400234autoreply define sw_interface_add_del_address
Dave Barach6d963c22016-12-05 09:50:05 -0500235{
236 u32 client_index;
237 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100238 vl_api_interface_index_t sw_if_index;
239 bool is_add;
240
241 bool del_all;
Ole Troan75761b92019-09-11 17:49:08 +0200242 vl_api_address_with_prefix_t prefix;
Dave Barach6d963c22016-12-05 09:50:05 -0500243};
244
Neale Ranns59f71132020-04-08 12:19:38 +0000245/** \brief IP interface address replace begin
246
247 The use-case is that, for some unspecified reason, the control plane
248 has a different set of interface addresses than VPP
249 currently has. The CP would thus like to 'replace' VPP's set
250 only by specifying what the new set shall be, i.e. it is not
251 going to delete anything that already eixts, rather, is wants any
252 unspecified interface addresses to be deleted implicitly.
253 The CP declares the start of this procedure with this replace_begin
254 API Call, and when it has populated all addresses it wants, it calls
255 the below replace_end API. From this point on it is of course free
256 to add and delete interface addresses as usual.
257 The underlying mechanism by which VPP implements this replace is
258 intentionally left unspecified.
259
260 @param client_index - opaque cookie to identify the sender
261 @param context - sender context, to match reply w/ request
262*/
263autoreply define sw_interface_address_replace_begin
264{
265 u32 client_index;
266 u32 context;
267};
268
269/** \brief IP interface address replace end
270
271 see ip_interface_address_replace_begin description.
272
273 @param client_index - opaque cookie to identify the sender
274 @param context - sender context, to match reply w/ request
275*/
276autoreply define sw_interface_address_replace_end
277{
278 u32 client_index;
279 u32 context;
280};
281
Dave Barach6d963c22016-12-05 09:50:05 -0500282/** \brief Associate the specified interface with a fib table
283 @param client_index - opaque cookie to identify the sender
284 @param context - sender context, to match reply w/ request
285 @param sw_if_index - index of the interface
286 @param is_ipv6 - if non-zero ipv6, else ipv4
jackiechen19850ad4a432019-05-09 16:57:16 +0800287 @param vrf_id - fib table/vrf id to associate the interface with
Dave Barach6d963c22016-12-05 09:50:05 -0500288*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400289autoreply define sw_interface_set_table
Dave Barach6d963c22016-12-05 09:50:05 -0500290{
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;
Dave Barach6d963c22016-12-05 09:50:05 -0500295 u32 vrf_id;
296};
297
Juraj Slobodadfc19232016-12-05 13:20:37 +0100298/** \brief Get VRF id assigned to interface
299 @param client_index - opaque cookie to identify the sender
300 @param context - sender context, to match reply w/ request
301 @param sw_if_index - index of the interface
302*/
303define sw_interface_get_table
304{
305 u32 client_index;
306 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100307 vl_api_interface_index_t sw_if_index;
308 bool is_ipv6;
Juraj Slobodadfc19232016-12-05 13:20:37 +0100309};
310
311/** \brief Reply to get_sw_interface_vrf
312 @param context - sender context which was passed in the request
313 @param vrf_id - VRF id assigned to the interface
314*/
315define sw_interface_get_table_reply
316{
317 u32 context;
318 i32 retval;
319 u32 vrf_id;
320};
321
Dave Barach6d963c22016-12-05 09:50:05 -0500322/** \brief Set unnumbered interface add / del request
323 @param client_index - opaque cookie to identify the sender
324 @param context - sender context, to match reply w/ request
325 @param sw_if_index - interface with an IP address
326 @param unnumbered_sw_if_index - interface which will use the address
327 @param is_add - if non-zero set the association, else unset it
328*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400329autoreply define sw_interface_set_unnumbered
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; /* use this intfc address */
334 vl_api_interface_index_t unnumbered_sw_if_index; /* on this interface */
335 bool is_add;
Dave Barach6d963c22016-12-05 09:50:05 -0500336};
337
Dave Barach6d963c22016-12-05 09:50:05 -0500338/** \brief Clear interface statistics
339 @param client_index - opaque cookie to identify the sender
340 @param context - sender context, to match reply w/ request
341 @param sw_if_index - index of the interface to clear statistics
342*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400343autoreply define sw_interface_clear_stats
Dave Barach6d963c22016-12-05 09:50:05 -0500344{
345 u32 client_index;
346 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100347 vl_api_interface_index_t sw_if_index;
Dave Barach6d963c22016-12-05 09:50:05 -0500348};
349
Dave Barach6d963c22016-12-05 09:50:05 -0500350/** \brief Set / clear software interface tag
351 @param client_index - opaque cookie to identify the sender
352 @param context - sender context, to match reply w/ request
353 @param sw_if_index - the interface
354 @param add_del - 1 = add, 0 = delete
355 @param tag - an ascii tag
356*/
Jakub Grajciar053204a2019-03-18 13:17:53 +0100357autoreply define sw_interface_tag_add_del
Dave Barach6d963c22016-12-05 09:50:05 -0500358{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100359 u32 client_index;
360 u32 context;
361 bool is_add;
362 vl_api_interface_index_t sw_if_index;
Ole Troane5ff5a32019-08-23 22:55:18 +0200363 string tag[64];
Dave Barach6d963c22016-12-05 09:50:05 -0500364};
365
Matthew Smithe0792fd2019-07-12 11:48:24 -0500366/** \brief Add or delete a secondary MAC address on an interface
367 @param client_index - opaque cookie to identify the sender
368 @param context - sender context, to match reply w/ request
369 @param sw_if_index - the interface whose MAC will be set
370 @param mac_addr - the new MAC address
371 @param is_add - 0 to delete, != 0 to add
372*/
373autoreply define sw_interface_add_del_mac_address
374{
375 u32 client_index;
376 u32 context;
377 u32 sw_if_index;
378 vl_api_mac_address_t addr;
379 u8 is_add;
380};
381
Jon Loeliger10c273b2017-03-30 08:39:33 -0500382/** \brief Set an 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 set
386 @param mac_addr - the new MAC address
387*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400388autoreply define sw_interface_set_mac_address
Jon Loeliger10c273b2017-03-30 08:39:33 -0500389{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100390 u32 client_index;
391 u32 context;
392 vl_api_interface_index_t sw_if_index;
393 vl_api_mac_address_t mac_address;
Jon Loeliger10c273b2017-03-30 08:39:33 -0500394};
395
Juraj Slobodac0374232018-02-01 15:18:49 +0100396/** \brief Get interface's MAC address
397 @param client_index - opaque cookie to identify the sender
398 @param context - sender context, to match reply w/ request
399 @param sw_if_index - the interface whose MAC will be returned
400*/
401define sw_interface_get_mac_address
402{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100403 u32 client_index;
404 u32 context;
405 vl_api_interface_index_t sw_if_index;
Juraj Slobodac0374232018-02-01 15:18:49 +0100406};
407
408/** \brief Reply for get interface's MAC address request
409 @param context - returned sender context, to match reply w/ request
410 @param retval - return code
411 @param mac_addr - returned interface's MAC address
412*/
413define sw_interface_get_mac_address_reply
414{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100415 u32 context;
416 i32 retval;
417 vl_api_mac_address_t mac_address;
Juraj Slobodac0374232018-02-01 15:18:49 +0100418};
419
Stevenad8015b2017-10-29 22:10:46 -0700420/** \brief Set an interface's rx-mode
421 @param client_index - opaque cookie to identify the sender
422 @param context - sender context, to match reply w/ request
423 @param sw_if_index - the interface whose rx-mode will be set
424 @param queue_id_valid - 1 = the queue_id field is valid. 0 means all
425 queue_id's
426 @param queue_id - the queue number whose rx-mode will be set. Only valid
427 if queue_id_valid is 1
428 @param mode - polling=1, interrupt=2, adaptive=3
429*/
430autoreply define sw_interface_set_rx_mode
431{
Jakub Grajciar053204a2019-03-18 13:17:53 +0100432 u32 client_index;
433 u32 context;
434 vl_api_interface_index_t sw_if_index;
435 bool queue_id_valid;
436 u32 queue_id;
437 vl_api_rx_mode_t mode;
Stevenad8015b2017-10-29 22:10:46 -0700438};
439
Mohsin Kazmi54f7c512018-08-23 18:28:11 +0200440/** \brief Set an interface's rx-placement
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200441 Rx-Queue placement on specific thread is operational for only hardware
442 interface. It will not set queue - thread placement for sub-interfaces,
443 p2p and pipe interfaces.
Mohsin Kazmi54f7c512018-08-23 18:28:11 +0200444 @param client_index - opaque cookie to identify the sender
445 @param context - sender context, to match reply w/ request
446 @param sw_if_index - the interface whose rx-placement will be set
447 @param queue_id - the queue number whose rx-placement will be set.
448 @param worker_id - the worker number whom rx-placement will be at.
449 @param is_main - flag to set rx-placement to main thread
450*/
451autoreply define sw_interface_set_rx_placement
452{
453 u32 client_index;
454 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100455 vl_api_interface_index_t sw_if_index;
Mohsin Kazmi54f7c512018-08-23 18:28:11 +0200456 u32 queue_id;
457 u32 worker_id;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100458 bool is_main;
Mohsin Kazmi54f7c512018-08-23 18:28:11 +0200459};
460
Mohsin Kazmi0d05c0d2021-11-09 17:44:10 +0000461/** \brief Set an interface's tx-placement
462 Tx-Queue placement on specific thread is operational for only hardware
463 interface. It will not set queue - thread placement for sub-interfaces,
464 p2p and pipe interfaces.
465 @param client_index - opaque cookie to identify the sender
466 @param context - sender context, to match reply w/ request
467 @param sw_if_index - the interface whose tx-placement will be set
468 @param queue_id - the queue number whose tx-placement will be set.
469 @param array_size - the size of the thread indexes array
470 @param threads - the thread indexes of main and worker(s) threads
471 whom tx-placement will be at.
472*/
473autoendian autoreply define sw_interface_set_tx_placement
474{
475 u32 client_index;
476 u32 context;
477 vl_api_interface_index_t sw_if_index;
478 u32 queue_id;
479 u32 array_size;
480 u32 threads[array_size];
481 option vat_help = "<interface | sw_if_index <index>> queue <n> [threads <list> | mask <hex>]";
482};
483
Steven Luongf49734d2021-07-26 13:38:05 -0700484/** \brief Set custom interface name
485 Set custom interface name for the interface.
486 @param client_index - opaque cookie to identify the sender
487 @param context - sender context, to match reply w/ request
488 @param sw_if_index - the interface whose name will be set
489 @param name - the custom interface name to be set
490k
491*/
492autoreply define sw_interface_set_interface_name
493{
494 u32 client_index;
495 u32 context;
496 vl_api_interface_index_t sw_if_index;
497 string name[64];
498};
499
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200500/** \brief dump the rx queue placement of interface(s)
501 @param sw_if_index - optional interface index for which queue placement to
502 be requested. sw_if_index = ~0 will dump placement information for all
503 interfaces. It will not dump information related to sub-interfaces, p2p
504 and pipe interfaces.
505*/
506define sw_interface_rx_placement_dump
507{
508 u32 client_index;
509 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100510 vl_api_interface_index_t sw_if_index;
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200511};
512
513/** \brief show the interface's queue - thread placement
514 This api is used to display the interface and queue worker
515 thread placement. One message per rx-queue per interface will
516 be sent to client.
517 Each message will contain information about rx-queue id of an
518 interface, interface index, thread on which this rx-queue is
519 placed and mode of rx-queue.
520 @param client_index - opaque cookie to identify the sender
521 @param context - sender context, to match reply w/ request
522 @param sw_if_index - the interface whose rx-placement will be dumped
523 @param queue_id - the queue id
524 @param worker_id - the worker id on which queue_id is placed,
525 worker_id = 0 means main thread.
526 @param mode - polling=1, interrupt=2, adaptive=3
527*/
528define sw_interface_rx_placement_details
529{
530 u32 client_index;
531 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100532 vl_api_interface_index_t sw_if_index;
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200533 u32 queue_id;
534 u32 worker_id;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100535 vl_api_rx_mode_t mode;
Mohsin Kazmif0b42f42018-09-10 18:11:00 +0200536};
537
Mohsin Kazmi0d05c0d2021-11-09 17:44:10 +0000538service {
539 rpc sw_interface_tx_placement_get returns sw_interface_tx_placement_get_reply
540 stream sw_interface_tx_placement_details;
541};
542
543/** \brief get the tx queue placement of interface(s)
544 @param cursor - optional, it allows client to continue a dump
545 @param sw_if_index - optional interface index for which queue placement to
546 be requested. sw_if_index = ~0 will get the placement information for all
547 interfaces. It will not get information related to sub-interfaces, p2p
548 and pipe interfaces.
549*/
550autoendian define sw_interface_tx_placement_get
551{
552 u32 client_index;
553 u32 context;
554 u32 cursor;
555 vl_api_interface_index_t sw_if_index;
556 option vat_help = "[interface | sw_if_index <index>]";
557};
558
559autoendian define sw_interface_tx_placement_get_reply
560{
561 u32 context;
562 i32 retval;
563 u32 cursor;
564};
565
566/** \brief show the interface's queue - thread placement
567 This api is used to display the interface and queue worker
568 thread placement. One message per tx-queue per interface will
569 be sent to client.
570 Each message will contain information about tx-queue id of an
571 interface, interface index, thread on which this tx-queue is
572 placed and mode of tx-queue.
573 @param client_index - opaque cookie to identify the sender
574 @param context - sender context, to match reply w/ request
575 @param sw_if_index - the interface whose tx-placement will be dumped
576 @param queue_id - the queue id
577 @param shared - the queue is shared on other threads
578 @param array_size - the size of the threads array
579 @param threads - the main and worker(s) thread index(es) whom tx-placement are at.
580*/
581autoendian define sw_interface_tx_placement_details
582{
583 u32 client_index;
584 u32 context;
585 vl_api_interface_index_t sw_if_index;
586 u32 queue_id;
587 u8 shared;
588 u32 array_size;
589 u32 threads[array_size];
590};
591
Neale Rannsb8d44812017-11-10 06:53:54 -0800592/* Gross kludge, DGMS */
593autoreply define interface_name_renumber
594{
595 u32 client_index;
596 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100597 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800598 u32 new_show_dev_instance;
599};
600
601define create_subif
602{
603 u32 client_index;
604 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100605 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800606 u32 sub_id;
607
Jakub Grajciar053204a2019-03-18 13:17:53 +0100608 vl_api_sub_if_flags_t sub_if_flags;
Neale Rannsb8d44812017-11-10 06:53:54 -0800609 u16 outer_vlan_id;
610 u16 inner_vlan_id;
611};
612
613define create_subif_reply
614{
615 u32 context;
616 i32 retval;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100617 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800618};
619
620/** \brief Create a new subinterface with the given vlan id
621 @param client_index - opaque cookie to identify the sender
622 @param context - sender context, to match reply w/ request
623 @param sw_if_index - software index of the new vlan's parent interface
624 @param vlan_id - vlan tag of the new interface
625*/
626define create_vlan_subif
627{
628 u32 client_index;
629 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100630 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800631 u32 vlan_id;
632};
633
634/** \brief Reply for the vlan subinterface create request
635 @param context - returned sender context, to match reply w/ request
636 @param retval - return code
637 @param sw_if_index - software index allocated for the new subinterface
638*/
639define create_vlan_subif_reply
640{
641 u32 context;
642 i32 retval;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100643 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800644};
645
646/** \brief Delete sub interface request
647 @param client_index - opaque cookie to identify the sender
648 @param context - sender context, to match reply w/ request
649 @param sw_if_index - sw index of the interface that was created by create_subif
650*/
651autoreply define delete_subif {
652 u32 client_index;
653 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100654 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800655};
656
657/** \brief Create loopback interface request
658 @param client_index - opaque cookie to identify the sender
659 @param context - sender context, to match reply w/ request
660 @param mac_address - mac addr to assign to the interface if none-zero
661*/
662define create_loopback
663{
664 u32 client_index;
665 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100666 vl_api_mac_address_t mac_address;
Neale Rannsb8d44812017-11-10 06:53:54 -0800667};
668
669/** \brief Create loopback interface response
670 @param context - sender context, to match reply w/ request
671 @param sw_if_index - sw index of the interface that was created
672 @param retval - return code for the request
673*/
674define create_loopback_reply
675{
676 u32 context;
677 i32 retval;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100678 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800679};
680
681/** \brief Create loopback interface instance request
682 @param client_index - opaque cookie to identify the sender
683 @param context - sender context, to match reply w/ request
684 @param mac_address - mac addr to assign to the interface if none-zero
685 @param is_specified - if non-0, a specific user_instance is being requested
686 @param user_instance - requested instance, ~0 => dynamically allocate
687*/
688define create_loopback_instance
689{
690 u32 client_index;
691 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100692 vl_api_mac_address_t mac_address;
693 bool is_specified;
Neale Rannsb8d44812017-11-10 06:53:54 -0800694 u32 user_instance;
695};
696
697/** \brief Create loopback interface instance response
698 @param context - sender context, to match reply w/ request
699 @param sw_if_index - sw index of the interface that was created
700 @param retval - return code for the request
701*/
702define create_loopback_instance_reply
703{
704 u32 context;
705 i32 retval;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100706 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800707};
708
709/** \brief Delete loopback interface request
710 @param client_index - opaque cookie to identify the sender
711 @param context - sender context, to match reply w/ request
712 @param sw_if_index - sw index of the interface that was created
713*/
714autoreply define delete_loopback
715{
716 u32 client_index;
717 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100718 vl_api_interface_index_t sw_if_index;
Neale Rannsb8d44812017-11-10 06:53:54 -0800719};
720
Neale Ranns6f4a6be2018-03-16 16:26:21 -0700721/** \brief Enable or disable detailed interface stats
722 @param client_index - opaque cookie to identify the sender
723 @param context - sender context, to match reply w/ request
Neale Ranns0cae3f72018-03-21 09:44:01 -0400724 @param sw_if_index - The interface to collect detail stats on. ~0 implies
725 all interfaces.
Neale Ranns6f4a6be2018-03-16 16:26:21 -0700726 @param enable_disable - set to 1 to enable, 0 to disable detailed stats
727*/
728autoreply define collect_detailed_interface_stats
729{
730 u32 client_index;
731 u32 context;
Jakub Grajciar053204a2019-03-18 13:17:53 +0100732 vl_api_interface_index_t sw_if_index;
733 bool enable_disable;
Neale Ranns6f4a6be2018-03-16 16:26:21 -0700734};
735
Maxime Peimddc16cf2023-01-13 08:04:55 +0000736/** \brief pcap_trace_on
737 @param client_index - opaque cookie to identify the sender
738 @param context - sender context, to match reply w/ request
739 @param capture_rx - capture received packets
740 @param capture_tx - capture transmitted packets
741 @param capture_drop - capture dropped packets
742 @param filter - is a filter is being used on this capture
743 @param preallocate_data - preallocate the data buffer
744 @param free_data - free the data buffer
745 @param max_packets - depth of local buffer
746 @param max_bytes_per_packet - maximum number of bytes to capture
747 for each packet
748 @param sw_if_index - specify a given interface, or 0 for any
749 @param error - filter packets based on a specific error.
750 @param filename - output filename, will be placed in /tmp
751*/
752autoreply define pcap_trace_on
753{
754 u32 client_index;
755 u32 context;
756 bool capture_rx;
757 bool capture_tx;
758 bool capture_drop;
759 bool filter;
760 bool preallocate_data;
761 bool free_data;
762 u32 max_packets [default=1000];
763 u32 max_bytes_per_packet [default=512];
764 vl_api_interface_index_t sw_if_index;
765 string error[128];
766 string filename[64];
767
768 option vat_help = "pcap_trace_on [capture_rx] [capture_tx] [capture_drop] [max_packets <nn>] [sw_if_index <sw_if_index>|0 for any] [error <node>.<error>] [filename <name>] [max_bytes_per_packet <nnnn>] [filter] [preallocate_data] [free_data]";
769};
770
771autoreply define pcap_trace_off
772{
773 u32 client_index;
774 u32 context;
775};
776
Dave Barach6d963c22016-12-05 09:50:05 -0500777/*
778 * Local Variables:
779 * eval: (c-set-style "gnu")
780 * End:
781 */