On Tue, Dec 18, 2007 at 09:09:18PM +0100, Guus Sliepen wrote: > On Tue, Dec 18, 2007 at 06:53:20PM +0100, Guido Guenther wrote: > > > since bonding can be configured via sysfs it's very convenient to > > set the bonding options in /etc/network/interfaces instead of at module > > load time. This is especially handy when you have multiple bonding > > interfaces. This patch adds support for the bond, miimon and primary > > options. More can easily be added, just let me know. I've prefixed all > > the options with bond_ to avoid namespace clashes. > > Please apply, > > Ah, that would be nice! However your email did not contain the patch. > Perhaps you forgot to attach it? It's attached now. -- Guido
commit ce009a7cfc4b67a3a13381d27557297dc5ae43fd Author: Guido Guenther <[EMAIL PROTECTED]> Date: Wed Dec 19 09:36:31 2007 +0100
support bonding options via /etc/network/interfaces diff --git a/debian/README.debian b/debian/README.debian index 1492fd5..7f639a0 100644 --- a/debian/README.debian +++ b/debian/README.debian @@ -18,6 +18,15 @@ iface bond0 inet static The "slaves" option can take a list of network interfaces, the keyword "none" (with obvious results) and the keyword "all" (which selects all interfaces with -"eth" in their name). +"eth" in their name). Additionally you can set bonding options by adding them +to the interface section: + + bond_mode active-backup + bond_primary eth0 + +This would run the bonding device in active backup mode with eth0 as primary. +Supported options are bond_mode, bond_miimon, bond_primary, bond_updelay, +bond_downdelay, bond_arp_ip_target, bond_arp_interval, bond_xmit_hash_policy +and bond_lacp_rate. Guus Sliepen <[EMAIL PROTECTED]>, Fri, 30 Sep 2005 14:33:06 +0200 diff --git a/debian/pre-up b/debian/pre-up index 854010a..44783b4 100644 --- a/debian/pre-up +++ b/debian/pre-up @@ -2,11 +2,25 @@ IFENSLAVE=/sbin/ifenslave IFSTATE=/etc/network/run/ifstate +BOND_PARAMS=/sys/class/net/$IFACE/bonding/ if [ ! -x $IFENSLAVE ] ; then exit 0 fi + +add_master() +{ + if [ ! -r /sys/class/net/bonding_masters ]; then + modprobe bonding >/dev/null 2>&1 || true + fi + + if ! grep -sq "$IFACE[[:space:]]" /sys/class/net/bonding_masters; then + echo +$IFACE > /sys/class/net/bonding_masters + fi +} + + case "$IF_SLAVES" in "") exit 0 @@ -22,7 +36,34 @@ case "$IF_SLAVES" in ;; esac + if [ -n "$INTERFACES" ] ; then + add_master + + if [ "$IF_BOND_MODE" ]; then + echo $IF_BOND_MODE > $BOND_PARAMS/mode + fi + if [ "$IF_BOND_MIIMON" ]; then + echo $IF_BOND_MIIMON > $BOND_PARAMS/miimon + fi + if [ "$IF_BOND_UPDELAY" ]; then + echo $IF_BOND_UPDELAY > $BOND_PARAMS/updelay + fi + if [ "$IF_BOND_DOWNDELAY" ]; then + echo $IF_BOND_DOWNDELAY > $BOND_PARAMS/downdelay + fi + if [ "$IF_BOND_ARP_IP_TARGET" ]; then + echo $IF_BOND_ARP_IP_TARGET > $BOND_PARAMS/arp_ip_target + fi + if [ "$IF_BOND_ARP_INTERVAL" ]; then + echo $IF_BOND_ARP_INTERVAL > $BOND_PARAMS/arp_interval + fi + if [ "$IF_BOND_XMIT_HASH_POLICY" ]; then + echo $IF_BOND_XMIT_HASH_POLICY > $BOND_PARAMS/xmit_hash_policy + fi + if [ "$IF_BOND_LACP_RATE" ]; then + echo $IF_BOND_LACP_RATE > $BOND_PARAMS/lacp_rate + fi ifconfig "$IFACE" up for slave in $INTERFACES ; do if grep -q "^$slave=" $IFSTATE ; then @@ -32,4 +73,7 @@ if [ -n "$INTERFACES" ] ; then $IFENSLAVE "$IFACE" "$slave" fi done + if [ "$IF_BOND_PRIMARY" ]; then + echo $IF_BOND_PRIMARY > $BOND_PARAMS/primary + fi fi