)}
-wifi_up() {
+wifi_updown() {
for device in ${2:-$DEVICES}; do (
+ config_get disabled "$device" disabled
+ [ "$disabled" == "1" ] && {
+ echo "'$device' is disabled"
+ set disable
+ }
config_get iftype "$device" type
- if eval "type enable_$iftype" 2>/dev/null >/dev/null; then
+ if eval "type ${1}_$iftype" 2>/dev/null >/dev/null; then
eval "scan_$iftype '$device'"
- eval "enable_$iftype '$device'" || echo "$device($iftype): Setup failed"
- else
- echo "$device($iftype): Interface type not supported"
- fi
- ); done
-}
-
-wifi_down() {
- for device in ${2:-$DEVICES}; do (
- config_get iftype "$device" type
- if eval "type disable_$iftype" 2>/dev/null >/dev/null; then
- eval "scan_$iftype '$device'"
- eval "disable_$iftype '$device'" || echo "$device($iftype): Disable failed"
+ eval "${1}_$iftype '$device'" || echo "$device($iftype): ${1} failed"
else
echo "$device($iftype): Interface type not supported"
fi
setup_interface "$1" "$2"
)}
-config_cb() {
- config_get TYPE "$CONFIG_SECTION" TYPE
- case "$TYPE" in
- wifi-device)
- append DEVICES "$CONFIG_SECTION"
- ;;
- wifi-iface)
- config_get device "$CONFIG_SECTION" device
- config_get vifs "$device" vifs
- append vifs "$CONFIG_SECTION"
- config_set "$device" vifs "$vifs"
- ;;
- esac
+scan_wifi() {
+ local cfgfile="$1"
+ config_cb() {
+ config_get TYPE "$CONFIG_SECTION" TYPE
+ case "$TYPE" in
+ wifi-device)
+ append DEVICES "$CONFIG_SECTION"
+ ;;
+ wifi-iface)
+ config_get device "$CONFIG_SECTION" device
+ config_get vifs "$device" vifs
+ append vifs "$CONFIG_SECTION"
+ config_set "$device" vifs "$vifs"
+ ;;
+ esac
+ }
+ config_load "${cfgfile:-wireless}"
}
DEVICES=
DRIVERS=
-config_load wireless
include /lib/wifi
+scan_wifi
case "$1" in
- down) wifi_down "$2";;
+ down) wifi_updown "disable" "$2";;
detect) wifi_detect "$2";;
- *) wifi_up "$2";;
+ *) wifi_updown "enable" "$2";;
esac