[backfire] backport r27720
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 13 Aug 2011 23:20:03 +0000 (23:20 +0000)
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 13 Aug 2011 23:20:03 +0000 (23:20 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@27977 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/base-files/Makefile
package/base-files/files/sbin/ifdown
package/base-files/files/sbin/ifup

index cc6e6579890c8161089bff76296cde4209899211..ff00fb4a8764dc76f8b19355ec1f817468d9ff68 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=43.26
+PKG_RELEASE:=43.27
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 PKG_BUILD_DEPENDS:=opkg/host
index 92cdfd2b02460ebce247d44ea6b8bc6936714537..1455a9de77a8b74ad14af6fb3278257618eb631e 100755 (executable)
@@ -1,16 +1,20 @@
 #!/bin/sh
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2006-2011 OpenWrt.org
 
 . /etc/functions.sh
 [ $# = 0 ] && { echo "  $0 <group>"; exit; }
-[ "x$1" = "x-a" ] && {
-       [ -e "/tmp/resolv.conf.auto" ] && rm /tmp/resolv.conf.auto
-       config_cb() {
-               [ interface != "$1" -o -z "$2" ] || eval "$0 $2"
-       }
-       config_load network
-       exit
-}
+
+case "$1" in
+       "-a")
+               [ -e "/tmp/resolv.conf.auto" ] && rm /tmp/resolv.conf.auto
+               config_cb() {
+                       [ interface != "$1" -o -z "$2" ] || eval "$0 -w $2"
+               }
+               config_load network
+               exit 0
+       ;;
+       "-w") shift ;;
+esac
 
 include /lib/network
 scan_interfaces
index 6acd2ed09978276636c6a1a27f27453d67b701b5..5f8d80dc2ddf16319d22ceaf59d668f81b6f7658 100755 (executable)
@@ -5,14 +5,42 @@
 
 . /etc/functions.sh
 [ $# = 0 ] && { echo "  $0 <group>"; exit; }
-[ "x$1" = "x-a" ] && {
-       [ -e "/tmp/resolv.conf.auto" ] && rm /tmp/resolv.conf.auto
-       config_cb() {
-               [ interface != "$1" -o -z "$2" ] || eval "$0 $2"
+
+setup_wifi=1
+
+case "$1" in
+       "-a")
+               [ -e "/tmp/resolv.conf.auto" ] && rm /tmp/resolv.conf.auto
+               config_cb() {
+                       [ interface != "$1" -o -z "$2" ] || eval "$0 -w $2"
+               }
+               config_load network
+               exit 0
+       ;;
+       "-w") setup_wifi=0; shift ;;
+esac
+
+if [ $setup_wifi -gt 0 ] && grep -q config /etc/config/wireless; then
+       find_related_radios() {
+               local wdev wnet
+               config_get wdev "$1" device
+               config_get wnet "$1" network
+
+               if [ -n "$wdev" ] && [ "$wnet" = "$network" ]; then
+                       append radio_devs "$wdev" "$N"
+               fi
        }
-       config_load network
-       exit
-}
+
+       local radio_devs
+       local network="$1"
+       config_load wireless
+       config_foreach find_related_radios wifi-iface
+
+       local dev
+       for dev in $(echo "$radio_devs" | sort -u); do
+               /sbin/wifi up "$dev"
+       done
+fi
 
 include /lib/network
 scan_interfaces