summaryrefslogtreecommitdiffstats
path: root/src/vnet/bonding
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/bonding')
-rw-r--r--src/vnet/bonding/bond.api45
-rw-r--r--src/vnet/bonding/bond_api.c34
2 files changed, 75 insertions, 4 deletions
diff --git a/src/vnet/bonding/bond.api b/src/vnet/bonding/bond.api
index 682298e9084..3a882b4f172 100644
--- a/src/vnet/bonding/bond.api
+++ b/src/vnet/bonding/bond.api
@@ -55,6 +55,7 @@ enum bond_lb_algo
*/
define bond_create
{
+ option deprecated;
u32 client_index;
u32 context;
u32 id [default=0xFFFFFFFF];
@@ -77,6 +78,42 @@ define bond_create_reply
vl_api_interface_index_t sw_if_index;
};
+/** \brief Initialize a new bond interface with the given paramters
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param mode - mode, required (1=round-robin, 2=active-backup, 3=xor, 4=broadcast, 5=lacp)
+ @param lb - load balance, optional (0=l2, 1=l34, 2=l23) valid for xor and lacp modes. Otherwise ignored (default=l2)
+ @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.
+ @param enable_gso - enable gso support (default 0)
+ @param use_custom_mac - if set, mac_address is valid
+ @param mac_address - mac addr to assign to the interface if use_custom_mac is set
+ @param id - if non-~0, specifies a custom interface ID (default=0xFFFFFFFF)
+*/
+define bond_create2
+{
+ u32 client_index;
+ u32 context;
+ vl_api_bond_mode_t mode;
+ vl_api_bond_lb_algo_t lb;
+ bool numa_only;
+ bool enable_gso;
+ bool use_custom_mac;
+ vl_api_mac_address_t mac_address;
+ u32 id [default=0xFFFFFFFF];
+};
+
+/** \brief Reply for bond create2 reply
+ @param context - returned sender context, to match reply w/ request
+ @param retval - return code
+ @param sw_if_index - software index allocated for the new tap interface
+*/
+define bond_create2_reply
+{
+ u32 context;
+ i32 retval;
+ vl_api_interface_index_t sw_if_index;
+};
+
/** \brief Delete bond interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@@ -99,7 +136,7 @@ autoreply define bond_delete
*/
define bond_enslave
{
- option deprecated="20.06";
+ option deprecated;
u32 client_index;
u32 context;
vl_api_interface_index_t sw_if_index;
@@ -153,7 +190,7 @@ define bond_add_member_reply
*/
autoreply define bond_detach_slave
{
- option deprecated="20.06";
+ option deprecated;
u32 client_index;
u32 context;
vl_api_interface_index_t sw_if_index;
@@ -174,7 +211,7 @@ autoreply define bond_detach_member
/** \brief Dump bond interfaces request */
define sw_interface_bond_dump
{
- option deprecated="20.06";
+ option deprecated;
u32 client_index;
u32 context;
};
@@ -240,7 +277,7 @@ define sw_bond_interface_details
*/
define sw_interface_slave_dump
{
- option deprecated="20.06";
+ option deprecated;
u32 client_index;
u32 context;
vl_api_interface_index_t sw_if_index;
diff --git a/src/vnet/bonding/bond_api.c b/src/vnet/bonding/bond_api.c
index 4306e3cba9f..8b8385d8205 100644
--- a/src/vnet/bonding/bond_api.c
+++ b/src/vnet/bonding/bond_api.c
@@ -46,6 +46,7 @@
#define foreach_bond_api_msg \
_(BOND_CREATE, bond_create) \
+_(BOND_CREATE2, bond_create2) \
_(BOND_DELETE, bond_delete) \
_(BOND_ENSLAVE, bond_enslave) \
_(BOND_ADD_MEMBER, bond_add_member) \
@@ -103,6 +104,39 @@ vl_api_bond_create_t_handler (vl_api_bond_create_t * mp)
}
static void
+vl_api_bond_create2_t_handler (vl_api_bond_create2_t * mp)
+{
+ vlib_main_t *vm = vlib_get_main ();
+ vl_api_bond_create2_reply_t *rmp;
+ bond_create_if_args_t _a, *ap = &_a;
+
+ clib_memset (ap, 0, sizeof (*ap));
+
+ ap->id = ntohl (mp->id);
+
+ if (mp->use_custom_mac)
+ {
+ mac_address_decode (mp->mac_address, (mac_address_t *) ap->hw_addr);
+ ap->hw_addr_set = 1;
+ }
+
+ ap->mode = ntohl (mp->mode);
+ ap->lb = ntohl (mp->lb);
+ ap->numa_only = mp->numa_only;
+ ap->gso = mp->enable_gso;
+ bond_create_if (vm, ap);
+
+ int rv = ap->rv;
+
+ /* *INDENT-OFF* */
+ REPLY_MACRO2(VL_API_BOND_CREATE2_REPLY,
+ ({
+ rmp->sw_if_index = ntohl (ap->sw_if_index);
+ }));
+ /* *INDENT-ON* */
+}
+
+static void
vl_api_bond_add_member_t_handler (vl_api_bond_add_member_t * mp)
{
vlib_main_t *vm = vlib_get_main ();
ref='#n354'>354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458