diff options
Diffstat (limited to 'package/base-files/files/lib')
| -rwxr-xr-x | package/base-files/files/lib/network/config.sh | 21 | 
1 files changed, 13 insertions, 8 deletions
diff --git a/package/base-files/files/lib/network/config.sh b/package/base-files/files/lib/network/config.sh index 358e610f6..2ef8cda9d 100755 --- a/package/base-files/files/lib/network/config.sh +++ b/package/base-files/files/lib/network/config.sh @@ -3,6 +3,12 @@  # DEBUG="echo" +do_sysctl() { +	[ -n "$2" ] && \ +		sysctl -n -e -w "$1=$2" >/dev/null || \ +		sysctl -n -e "$1" +} +  find_config() {  	local iftype device iface ifaces ifn  	for ifn in $interfaces; do @@ -164,14 +170,10 @@ prepare_interface() {  			local macaddr  			config_get macaddr "$config" macaddr  			[ -x /usr/sbin/brctl ] && { -				# Remove IPv6 link local addr before adding the iface to the bridge -				local llv6="$(ifconfig "$iface")" -				case "$llv6" in -					*fe80:*/64*) -						llv6="${llv6#* fe80:}" -						ifconfig "$iface" del "fe80:${llv6%% *}" -					;; -				esac +				# Disable IPv6 for bridge ports +				do_sysctl net.ipv6.conf.$iface.disable_ipv6 1 +				[ "${iface##wlan}" != "$iface" ] && \ +					do_sysctl net.ipv6.conf.mon.$iface.disable_ipv6 1  				ifconfig "br-$config" 2>/dev/null >/dev/null && {  					local newdevs devices @@ -411,6 +413,9 @@ unbridge() {  		for brdev in $(brctl show | awk '$2 ~ /^[0-9].*\./ { print $1 }'); do  			brctl delif "$brdev" "$dev" 2>/dev/null >/dev/null +			do_sysctl net.ipv6.conf.$dev.disable_ipv6 0 +			[ "${dev##wlan}" != "$dev" ] && \ +				do_sysctl net.ipv6.conf.mon.$dev.disable_ipv6 0  		done  	}  }  | 
