2 * Copyright (c) 2017 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
18 This file defines vpe control-plane API messages for
19 the bonding device driver
22 option version = "2.0.0";
24 import "vnet/interface_types.api";
25 import "vnet/ethernet/ethernet_types.api";
29 BOND_API_MODE_ROUND_ROBIN = 1,
30 BOND_API_MODE_ACTIVE_BACKUP = 2,
31 BOND_API_MODE_XOR = 3,
32 BOND_API_MODE_BROADCAST = 4,
33 BOND_API_MODE_LACP = 5,
38 BOND_API_LB_ALGO_L2 = 0,
39 BOND_API_LB_ALGO_L34 = 1,
40 BOND_API_LB_ALGO_L23 = 2,
41 BOND_API_LB_ALGO_RR = 3,
42 BOND_API_LB_ALGO_BC = 4,
43 BOND_API_LB_ALGO_AB = 5,
46 /** \brief Initialize a new bond interface with the given paramters
47 @param client_index - opaque cookie to identify the sender
48 @param context - sender context, to match reply w/ request
49 @param id - if non-~0, specifies a custom interface ID
50 @param use_custom_mac - if set, mac_address is valid
51 @param mac_address - mac addr to assign to the interface if use_custom_mac is set
52 @param mode - mode, required (1=round-robin, 2=active-backup, 3=xor, 4=broadcastcast, 5=lacp)
53 @param lb - load balance, optional (0=l2, 1=l34, 2=l23) valid for xor and lacp modes. Otherwise ignored
54 @param numa_only - if numa_only is set, pkts will be transmitted by LAG members on local numa node only if have at least one, otherwise it works as usual.
62 vl_api_mac_address_t mac_address;
63 vl_api_bond_mode_t mode;
64 vl_api_bond_lb_algo_t lb;
68 /** \brief Reply for bond create reply
69 @param context - returned sender context, to match reply w/ request
70 @param retval - return code
71 @param sw_if_index - software index allocated for the new tap interface
73 define bond_create_reply
77 vl_api_interface_index_t sw_if_index;
80 /** \brief Delete bond interface
81 @param client_index - opaque cookie to identify the sender
82 @param context - sender context, to match reply w/ request
83 @param sw_if_index - interface index of slave interface
85 autoreply define bond_delete
89 vl_api_interface_index_t sw_if_index;
92 /** \brief Initialize a new bond interface with the given paramters
93 @param client_index - opaque cookie to identify the sender
94 @param context - sender context, to match reply w/ request
95 @param sw_if_index - slave sw_if_index
96 @param bond_sw_if_index - bond sw_if_index
97 @param is_passive - interface does not initiate the lacp protocol, remote must be active speaker
98 @param is_long_timeout - 90 seconds vs default 3 seconds neighbor timeout
104 vl_api_interface_index_t sw_if_index;
105 vl_api_interface_index_t bond_sw_if_index;
107 bool is_long_timeout;
110 /** \brief Reply for bond enslave reply
111 @param context - returned sender context, to match reply w/ request
112 @param retval - return code
114 define bond_enslave_reply
120 /** \brief bond detach slave
121 @param client_index - opaque cookie to identify the sender
122 @param context - sender context, to match reply w/ request
123 @param sw_if_index - interface index of slave interface
125 autoreply define bond_detach_slave
129 vl_api_interface_index_t sw_if_index;
132 /** \brief Dump bond interfaces request */
133 define sw_interface_bond_dump
139 /** \brief Reply for bond dump request
140 @param sw_if_index - software index of bond interface
141 @param id - ID of interface
142 @param mode - bonding mode
143 @param lb - load balance algo
144 @param numa_only - enable local numa TX for lacp mode
145 @param active_slaves - active slaves count
146 @param slaves - config slave count
147 @param interface_name - name of interface
149 define sw_interface_bond_details
152 vl_api_interface_index_t sw_if_index;
154 vl_api_bond_mode_t mode;
155 vl_api_bond_lb_algo_t lb;
159 string interface_name[64];
162 /** \brief bond slave dump
163 @param client_index - opaque cookie to identify the sender
164 @param context - sender context, to match reply w/ request
165 @param sw_if_index - interface index of bond interface
167 define sw_interface_slave_dump
171 vl_api_interface_index_t sw_if_index;
174 /** \brief Reply for slave dump request
175 @param sw_if_index - software index of slave interface
176 @param interface_name - name of interface
177 @param is_passve - interface does not initiate the lacp protocol, remote must be active speaker
178 @param is_long_timeout - 90 seconds vs default 3 seconds neighbor timeout
179 @param is_local_numa - the slave interface is local numa
180 @param weight - the weight for the slave interface (active-backup mode only)
182 define sw_interface_slave_details
185 vl_api_interface_index_t sw_if_index;
186 string interface_name[64];
188 bool is_long_timeout;
193 /** \brief Interface set bond weight
194 @param client_index - opaque cookie to identify the sender
195 @param context - sender context, to match reply w/ request
196 @param sw_if_index - slave interface for which to set the weight
197 @param weight - weight value to be set for the slave interface
199 autoreply define sw_interface_set_bond_weight
203 vl_api_interface_index_t sw_if_index;
209 * eval: (c-set-style "gnu")