X-Git-Url: http://git.ozo.com/?p=openwrt-10.03%2F.git;a=blobdiff_plain;f=package%2Fbase-files%2Ffiles%2Flib%2Fnetwork%2Fconfig.sh;h=3d58c63f78ec057434aaffd0463757ba36c9c526;hp=7fa1d37e497aca83b9a4173c2b13063c1a6b2c49;hb=0448c53b0d6ba3388eae4b4ba7e8a8336853a9f6;hpb=6d19fadd654def93d47609c45944264eaa981d65 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 } || {