X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fbonding%2Fbond.api;h=682298e9084b18deeb9e89bbbe04961f6858da76;hb=4c4223edf;hp=e779453b091f0a2defeea4b98884a7422a1fad7a;hpb=ad9d528314a049971b1fb9a42562b00e07cf93f4;p=vpp.git diff --git a/src/vnet/bonding/bond.api b/src/vnet/bonding/bond.api index e779453b091..682298e9084 100644 --- a/src/vnet/bonding/bond.api +++ b/src/vnet/bonding/bond.api @@ -19,7 +19,29 @@ the bonding device driver */ -option version = "1.0.0"; +option version = "2.1.0"; + +import "vnet/interface_types.api"; +import "vnet/ethernet/ethernet_types.api"; + +enum bond_mode +{ + BOND_API_MODE_ROUND_ROBIN = 1, + BOND_API_MODE_ACTIVE_BACKUP = 2, + BOND_API_MODE_XOR = 3, + BOND_API_MODE_BROADCAST = 4, + BOND_API_MODE_LACP = 5, +}; + +enum bond_lb_algo +{ + BOND_API_LB_ALGO_L2 = 0, + BOND_API_LB_ALGO_L34 = 1, + BOND_API_LB_ALGO_L23 = 2, + BOND_API_LB_ALGO_RR = 3, + BOND_API_LB_ALGO_BC = 4, + BOND_API_LB_ALGO_AB = 5, +}; /** \brief Initialize a new bond interface with the given paramters @param client_index - opaque cookie to identify the sender @@ -27,18 +49,20 @@ option version = "1.0.0"; @param id - if non-~0, specifies a custom interface ID @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 mode - mode, required (1=round-robin, 2=active-backup, 3=xor, 4=broadcastcast, 5=lacp) + @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 + @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. */ define bond_create { u32 client_index; u32 context; - u32 id; - u8 use_custom_mac; - u8 mac_address[6]; - u8 mode; - u8 lb; + u32 id [default=0xFFFFFFFF]; + bool use_custom_mac; + vl_api_mac_address_t mac_address; + vl_api_bond_mode_t mode; + vl_api_bond_lb_algo_t lb; + bool numa_only; }; /** \brief Reply for bond create reply @@ -50,19 +74,19 @@ define bond_create_reply { u32 context; i32 retval; - u32 sw_if_index; + 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 - @param sw_if_index - interface index of slave interface + @param sw_if_index - interface index of member interface */ autoreply define bond_delete { u32 client_index; u32 context; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; }; /** \brief Initialize a new bond interface with the given paramters @@ -75,12 +99,13 @@ autoreply define bond_delete */ define bond_enslave { + option deprecated="20.06"; u32 client_index; u32 context; - u32 sw_if_index; - u32 bond_sw_if_index; - u8 is_passive; - u8 is_long_timeout; + vl_api_interface_index_t sw_if_index; + vl_api_interface_index_t bond_sw_if_index; + bool is_passive; + bool is_long_timeout; }; /** \brief Reply for bond enslave reply @@ -93,21 +118,63 @@ define bond_enslave_reply i32 retval; }; +/** \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 sw_if_index - member sw_if_index + @param bond_sw_if_index - bond sw_if_index + @param is_passive - interface does not initiate the lacp protocol, remote must be active speaker + @param is_long_timeout - 90 seconds vs default 3 seconds neighbor timeout +*/ +define bond_add_member +{ + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index; + vl_api_interface_index_t bond_sw_if_index; + bool is_passive; + bool is_long_timeout; +}; + +/** \brief Reply for bond add_member reply + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define bond_add_member_reply +{ + u32 context; + i32 retval; +}; + /** \brief bond detach slave @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param sw_if_index - interface index of slave interface + @param sw_if_index - interface index of member interface */ autoreply define bond_detach_slave +{ + option deprecated="20.06"; + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index; +}; + +/** \brief bond detach member + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - interface index of member interface +*/ +autoreply define bond_detach_member { u32 client_index; u32 context; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; }; /** \brief Dump bond interfaces request */ define sw_interface_bond_dump { + option deprecated="20.06"; u32 client_index; u32 context; }; @@ -118,19 +185,52 @@ define sw_interface_bond_dump @param interface_name - name of interface @param mode - bonding mode @param lb - load balance algo - @param active_slaves - active slaves count - @param slaves - config slave count + @param numa_only - enable local numa TX for lacp mode + @param active_slaves - active member count + @param slaves - config member count */ define sw_interface_bond_details { u32 context; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; u32 id; - u8 interface_name[64]; - u8 mode; - u8 lb; + vl_api_bond_mode_t mode; + vl_api_bond_lb_algo_t lb; + bool numa_only; u32 active_slaves; u32 slaves; + string interface_name[64]; +}; + +/** \brief Dump bond interfaces request */ +define sw_bond_interface_dump +{ + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index [default=0xffffffff]; +}; + +/** \brief Reply for bond dump request + @param sw_if_index - software index of bond interface + @param id - ID of interface + @param mode - bonding mode + @param lb - load balance algo + @param numa_only - enable local numa TX for lacp mode + @param active_members - active members count + @param members - config member count + @param interface_name - name of interface +*/ +define sw_bond_interface_details +{ + u32 context; + vl_api_interface_index_t sw_if_index; + u32 id; + vl_api_bond_mode_t mode; + vl_api_bond_lb_algo_t lb; + bool numa_only; + u32 active_members; + u32 members; + string interface_name[64]; }; /** \brief bond slave dump @@ -140,9 +240,10 @@ define sw_interface_bond_details */ define sw_interface_slave_dump { + option deprecated="20.06"; u32 client_index; u32 context; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; }; /** \brief Reply for slave dump request @@ -150,14 +251,63 @@ define sw_interface_slave_dump @param interface_name - name of interface @param is_passve - interface does not initiate the lacp protocol, remote must be active speaker @param is_long_timeout - 90 seconds vs default 3 seconds neighbor timeout + @param is_local_numa - the slave interface is local numa + @param weight - the weight for the slave interface (active-backup mode only) */ define sw_interface_slave_details { u32 context; - u32 sw_if_index; - u8 interface_name[64]; - u8 is_passive; - u8 is_long_timeout; + vl_api_interface_index_t sw_if_index; + string interface_name[64]; + bool is_passive; + bool is_long_timeout; + bool is_local_numa; + u32 weight; +}; + +/** \brief bond member dump + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - interface index of bond interface +*/ +define sw_member_interface_dump +{ + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index; +}; + +/** \brief Reply for member dump request + @param sw_if_index - software index of member interface + @param interface_name - name of interface + @param is_passve - interface does not initiate the lacp protocol, remote must be active speaker + @param is_long_timeout - 90 seconds vs default 3 seconds neighbor timeout + @param is_local_numa - the member interface is local numa + @param weight - the weight for the member interface (active-backup mode only) +*/ +define sw_member_interface_details +{ + u32 context; + vl_api_interface_index_t sw_if_index; + string interface_name[64]; + bool is_passive; + bool is_long_timeout; + bool is_local_numa; + u32 weight; +}; + +/** \brief Interface set bond weight + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - member interface for which to set the weight + @param weight - weight value to be set for the member interface +*/ +autoreply define sw_interface_set_bond_weight +{ + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index; + u32 weight; }; /*