diff options
| -rwxr-xr-x | package/base-files/default/lib/network/config.sh | 17 | ||||
| -rwxr-xr-x | package/base-files/default/sbin/ifup | 7 | ||||
| -rw-r--r-- | package/broadcom-wl/files/lib/wifi/broadcom.sh | 12 | 
3 files changed, 28 insertions, 8 deletions
| diff --git a/package/base-files/default/lib/network/config.sh b/package/base-files/default/lib/network/config.sh index 18f794a31..a66c92bc0 100755 --- a/package/base-files/default/lib/network/config.sh +++ b/package/base-files/default/lib/network/config.sh @@ -70,6 +70,11 @@ setup_interface() {  	proto="${3:-$(config_get "$config" proto)}"  	config_get iftype "$config" type +	ifconfig "$iface" 2>/dev/null >/dev/null && { +		# make sure the interface is removed from any existing bridge +		unbridge "$iface" +	} +  	# Setup VLAN interfaces  	add_vlan "$iface" @@ -141,3 +146,15 @@ setup_interface() {  	esac  } +unbridge() { +	local dev="$1" +	local brdev + +	brctl show | grep "$dev" >/dev/null && { +		# interface is still part of a bridge, correct that + +		for brdev in $(brctl show | awk '$2 ~ /^[0-9].*\./ { print $1 }'); do +			brctl delif "$brdev" "$dev" 2>/dev/null >/dev/null +		done +	} +} diff --git a/package/base-files/default/sbin/ifup b/package/base-files/default/sbin/ifup index 35b2fc4cd..c7055d480 100755 --- a/package/base-files/default/sbin/ifup +++ b/package/base-files/default/sbin/ifup @@ -10,12 +10,5 @@ case "$iftype" in  esac  for dev in $ifname; do -	brctl show | grep "$dev" >/dev/null && { -		# interface is still part of a bridge, correct that - -		for brdev in $(brctl show | awk '$2 ~ /^[0-9].*\./ { print $1 }'); do -			brctl delif "$brdev" "$dev" 2>/dev/null >/dev/null -		done -	}  	setup_interface "$dev" "$1"  done diff --git a/package/broadcom-wl/files/lib/wifi/broadcom.sh b/package/broadcom-wl/files/lib/wifi/broadcom.sh index 1ce85c4c5..b598952e9 100644 --- a/package/broadcom-wl/files/lib/wifi/broadcom.sh +++ b/package/broadcom-wl/files/lib/wifi/broadcom.sh @@ -75,7 +75,17 @@ scan_broadcom() {  disable_broadcom() {  	wlc down -	ifconfig wl0 down +	( +		include /lib/network +		scan_interfaces + +		# make sure the interfaces are down and removed from all bridges +		for dev in wl0 wl0.1 wl0.2 wl0.3; do +			ifconfig "$dev" down 2>/dev/null >/dev/null && { +				unbridge "$dev" +			} +		done +	)  }  enable_broadcom() { | 
