diff options
Diffstat (limited to 'package/base-files/files/lib')
| -rwxr-xr-x | package/base-files/files/lib/network/config.sh | 17 | 
1 files changed, 17 insertions, 0 deletions
| diff --git a/package/base-files/files/lib/network/config.sh b/package/base-files/files/lib/network/config.sh index 7fa1d37e4..3d58c63f7 100755 --- a/package/base-files/files/lib/network/config.sh +++ b/package/base-files/files/lib/network/config.sh @@ -64,6 +64,16 @@ add_vlan() {  	}  } +# sort the device list, drop duplicates +sort_list() { +	local arg="$*" +	( +		for item in $arg; do +			echo "$item" +		done +	) | sort -u +} +  # Create the interface, if necessary.  # Return status 0 indicates that the setup_interface() call should continue  # Return status 1 means that everything is set up already. @@ -94,6 +104,13 @@ prepare_interface() {  		bridge)  			[ -x /usr/sbin/brctl ] && {  				ifconfig "br-$config" 2>/dev/null >/dev/null && { +					local newdevs= + +					config_get devices "$config" device +					for dev in $(sort_list "$devices" "$iface"); do +						append newdevs "$dev" +					done +					uci_set_state network "$config" device "$newdevs"  					$DEBUG brctl addif "br-$config" "$iface"  					# Bridge existed already. No further processing necesary  				} || { | 
