diff options
Diffstat (limited to 'package/base-files/src/etc/network/if-pre-up.d/05-bonding')
| -rwxr-xr-x | package/base-files/src/etc/network/if-pre-up.d/05-bonding | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/package/base-files/src/etc/network/if-pre-up.d/05-bonding b/package/base-files/src/etc/network/if-pre-up.d/05-bonding new file mode 100755 index 000000000..489a2fcad --- /dev/null +++ b/package/base-files/src/etc/network/if-pre-up.d/05-bonding @@ -0,0 +1,37 @@ +#!/bin/sh + +INTERFACES="" +BONDOPTS="" +for var in $(env | grep '^IF_BOND_'); do +	val="${var#*=}" +	opt="${var%%=*}" +	if [ "$opt" == "IF_BOND_PORTS" ]; then +		case "$val" in +		none) +			INTERFACES="" +			;; +		*) +			INTERFACES="$val" +			;; +		esac +		continue +	fi +	opt="$(tr '[A-Z]' '[a-z]' <<< ${opt#IF_BOND_})" +	BONDOPTS+=" $opt" +	[ -n "$val" ] && BONDOPTS+=" $val" +done + +[ -n "$INTERFACES" ] || exit 0 + +ip link add $IFACE type bond ${BONDOPTS} || exit 1 +for IF in $INTERFACES; do +	if ! grep -q $IF /proc/net/dev; then +		echo "Error: interface '$IF' does not exist!" +		ip link del $IFACE +		exit 1 +	fi +	ip link set $IF master $IFACE +	ip link set $IF up +done + +exit 0 | 
