if (sif)
{
sif->port_enabled = flags & VNET_SW_INTERFACE_FLAG_ADMIN_UP;
+ if (sif->lacp_enabled)
+ return 0;
+
if (sif->port_enabled == 0)
{
- if (sif->lacp_enabled == 0)
- {
- bond_disable_collecting_distributing (vm, sif);
- }
+ bond_disable_collecting_distributing (vm, sif);
}
else
{
- if (sif->lacp_enabled == 0)
- {
- bond_enable_collecting_distributing (vm, sif);
- }
+ vnet_main_t *vnm = vnet_get_main ();
+ vnet_hw_interface_t *hw =
+ vnet_get_sup_hw_interface (vnm, sw_if_index);
+
+ if (hw->flags & VNET_HW_INTERFACE_FLAG_LINK_UP)
+ bond_enable_collecting_distributing (vm, sif);
}
}
sif = bond_get_slave_by_sw_if_index (sw->sw_if_index);
if (sif)
{
+ if (sif->lacp_enabled)
+ return 0;
+
if (!(flags & VNET_HW_INTERFACE_FLAG_LINK_UP))
{
- if (sif->lacp_enabled == 0)
- {
- bond_disable_collecting_distributing (vm, sif);
- }
+ bond_disable_collecting_distributing (vm, sif);
}
- else
+ else if (sif->port_enabled)
{
- if (sif->lacp_enabled == 0)
- {
- bond_enable_collecting_distributing (vm, sif);
- }
+ bond_enable_collecting_distributing (vm, sif);
}
}