diff --git a/docs/examples/bonding b/docs/examples/bonding index 3ad5de2..e428aee 100644 --- a/docs/examples/bonding +++ b/docs/examples/bonding @@ -4,3 +4,4 @@ Connection=bond BindsToInterfaces=(eth0 eth2) IP=static Address="10.0.0.1/8" +#Mode=balance-rr diff --git a/docs/netctl.profile.5.txt b/docs/netctl.profile.5.txt index 9956c24..c4982fc 100644 --- a/docs/netctl.profile.5.txt +++ b/docs/netctl.profile.5.txt @@ -303,8 +303,12 @@ of the `wireless' type: OPTIONS FOR `bond' CONNECTIONS ------------------------------ The interfaces of 'BindsToInterfaces' are bound together in the -interface named by 'Interface'. All *ip options* are understood for -connections of the `bond' type. +interface named by 'Interface'. Next to the *ip options*, the following +is understood for connections of the `bond' type: + +'Mode=':: + The bonding policy. See the kernel documentation on bonding for + details. OPTIONS FOR `bridge' CONNECTIONS diff --git a/src/lib/connections/bond b/src/lib/connections/bond index 7e4112f..64b0285 100644 --- a/src/lib/connections/bond +++ b/src/lib/connections/bond @@ -9,11 +9,10 @@ bond_up() { if is_interface "$Interface"; then report_error "Interface '$Interface' already exists" return 1 - else - interface_add bond "$Interface" fi - bring_interface_up "$Interface" + interface_add bond "$Interface" "" ${Mode:+mode "$Mode"} + bring_interface_up "$Interface" for slave in "${BindsToInterfaces[@]}"; do ip link set dev "$slave" master "$Interface" done