my $ovs_bond_modes = {
'active-backup' => 1,
- 'balance-tcp' => 1,
'balance-slb' => 1,
+ 'lacp-balance-slb' => 1,
+ 'lacp-balance-tcp' => 1,
};
#sub get_bond_modes {
$d->{type} = $d->{ovs_type};
# translate: ovs_options => bond_mode
$d->{'bond_mode'} = &$extract_ovs_option($d, 'bond_mode');
+ my $lacp = &$extract_ovs_option($d, 'lacp');
+ if ($lacp && $lacp eq 'active') {
+ if ($d->{'bond_mode'} eq 'balance-slb') {
+ $d->{'bond_mode'} = 'lacp-balance-slb';
+ }
+ }
+ # Note: balance-tcp needs lacp
+ if ($d->{'bond_mode'} eq 'balance-tcp') {
+ $d->{'bond_mode'} = 'lacp-balance-tcp';
+ }
} else {
$d->{type} = 'unknown';
}
$ovs_bond_modes->{$d->{bond_mode}} ||
die "OVS does not support bond mode '$d->{bond_mode}\n";
- &$set_ovs_option($d, bond_mode => $d->{bond_mode});
+ if ($d->{bond_mode} eq 'lacp-balance-slb') {
+ &$set_ovs_option($d, lacp => 'active');
+ &$set_ovs_option($d, bond_mode => 'balance-slb');
+ } elsif ($d->{bond_mode} eq 'lacp-balance-tcp') {
+ &$set_ovs_option($d, lacp => 'active');
+ &$set_ovs_option($d, bond_mode => 'balance-tcp');
+ } else {
+ &$set_ovs_option($d, lacp => undef);
+ &$set_ovs_option($d, bond_mode => $d->{bond_mode});
+ }
$done->{bond_mode} = 1;
$raw .= "\tovs_bonds $d->{ovs_bonds}\n" if $d->{ovs_bonds};