aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net/bonding.sh17
1 files changed, 13 insertions, 4 deletions
diff --git a/net/bonding.sh b/net/bonding.sh
index 67b0d9ba..7ea75085 100644
--- a/net/bonding.sh
+++ b/net/bonding.sh
@@ -5,6 +5,11 @@ bonding_depend()
{
before interface macchanger
program /sbin/ifconfig /bin/ifconfig
+ # If you do not have sysfs, you MUST have this binary instead for ioctl
+ # Also you will loose some functionality that cannot be done via sysfs:
+ if [ ! -d /sys/class/net ]; then
+ program /sbin/ifenslave
+ fi
}
_config_vars="$_config_vars slaves"
@@ -38,6 +43,10 @@ bonding_pre_start()
fi
fi
+ if [ ! -d /sys/class/net ]; then
+ ewarn "sysfs is not available! You will be unable to create new bonds, or change dynamic parameters!"
+ fi
+
# We can create the interface name we like now, but this
# requires sysfs
if ! _exists && [ -d /sys/class/net ]; then
@@ -55,7 +64,7 @@ bonding_pre_start()
# Configure the bond mode, then we can reloop to ensure we configure
# All other options
- for x in /sys/class/net/"${IFACE}"/bonding/mode; do
+ [ -d /sys/class/net ] && for x in /sys/class/net/"${IFACE}"/bonding/mode; do
[ -f "${x}" ] || continue
n=${x##*/}
eval s=\$${n}_${IFVAR}
@@ -66,7 +75,7 @@ bonding_pre_start()
fi
done
# Nice and dynamic for remaining options:)
- for x in /sys/class/net/"${IFACE}"/bonding/*; do
+ [ -d /sys/class/net ] && for x in /sys/class/net/"${IFACE}"/bonding/*; do
[ -f "${x}" ] || continue
n=${x##*/}
eval s=\$${n}_${IFVAR}
@@ -154,7 +163,7 @@ bonding_pre_start()
fi
done
else
- /sbin/ifenslave "${IFACE}" ${slaves} >/dev/null
+ ifenslave "${IFACE}" ${slaves} >/dev/null
fi
eend $?
@@ -187,7 +196,7 @@ bonding_stop()
echo -"${s}" > /sys/class/net/"${IFACE}"/bonding/slaves
done
else
- /sbin/ifenslave -d "${IFACE}" ${slaves}
+ ifenslave -d "${IFACE}" ${slaves}
fi
# reset all slaves