diff options
Diffstat (limited to 'package/base-files/src/etc')
3 files changed, 61 insertions, 2 deletions
diff --git a/package/base-files/src/etc/network/if-post-down.d/04-bonding b/package/base-files/src/etc/network/if-post-down.d/04-bonding new file mode 100755 index 000000000..0b9c9f362 --- /dev/null +++ b/package/base-files/src/etc/network/if-post-down.d/04-bonding @@ -0,0 +1,20 @@ +#!/bin/sh + +case "$IF_BOND_PORTS" in +"") +	exit 0 +	;; +none) +	INTERFACES="" +	;; +*) +	INTERFACES="$IF_BOND_PORTS" +	;; +esac + +for IF in $INTERFACES; do +	ip link set $IF nomaster +	ip link set $IF down +done +ip link del $IFACE +exit 0 diff --git a/package/base-files/src/etc/network/if-pre-up.d/04-wireless b/package/base-files/src/etc/network/if-pre-up.d/04-wireless index fa68058bf..ef070c5bc 100755 --- a/package/base-files/src/etc/network/if-pre-up.d/04-wireless +++ b/package/base-files/src/etc/network/if-pre-up.d/04-wireless @@ -81,6 +81,8 @@ case "$IF_WIRELESS_MODE" in  			cat /etc/hostapd.conf.post >> /tmp/hostapd.conf  		;;  	sta) +		# need to wait for wlan drivers to settle down +		sleep 1  		ip link set up dev ${IFACE}  		[ $IF_WIRELESS_EXTENSION -eq 1 ] && {  			[ -x /usr/sbin/iwconfig ] || { @@ -96,9 +98,9 @@ case "$IF_WIRELESS_MODE" in  			}  			driver=nl80211  			[ $sec -eq 2 ] && { -				iw dev ${IFACE} connect $IF_WIRELESS_SSID key d:0:$IF_WIRELESS_PASSPHRASE +				iw dev ${IFACE} connect "$IF_WIRELESS_SSID" key d:0:$IF_WIRELESS_PASSPHRASE  			} || { -				iw dev ${IFACE} connect $IF_WIRELESS_SSID +				iw dev ${IFACE} connect "$IF_WIRELESS_SSID" 2>/dev/null  			}  		}  		[ $wpa2 -eq 1 ] && { 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  | 
