add a new 'option disabled' to wifi-device
[openwrt.git] / package / base-files / files / sbin / wifi
1 #!/bin/sh
2 # Copyright (C) 2006 OpenWrt.org
3
4 . /etc/functions.sh
5
6 find_net_config() {(
7 local vif="$1"
8 local cfg
9 local ifname
10
11 config_get cfg "$vif" network
12
13 [ -z "$cfg" ] && {
14 include /lib/network
15 scan_interfaces
16
17 config_get ifname "$vif" ifname
18
19 cfg="$(find_config "$ifname")"
20 }
21 [ -z "$cfg" ] && return 0
22 echo "$cfg"
23 )}
24
25
26 bridge_interface() {(
27 local cfg="$1"
28 [ -z "$cfg" ] && return 0
29
30 include /lib/network
31 scan_interfaces
32
33 config_get iftype "$cfg" type
34 [ "$iftype" = bridge ] && config_get "$cfg" ifname
35 )}
36
37
38 wifi_updown() {
39 for device in ${2:-$DEVICES}; do (
40 config_get disabled "$device" disabled
41 [ "$disabled" == "1" ] && {
42 echo "'$device' is disabled"
43 set disable
44 }
45 config_get iftype "$device" type
46 if eval "type ${1}_$iftype" 2>/dev/null >/dev/null; then
47 eval "scan_$iftype '$device'"
48 eval "${1}_$iftype '$device'" || echo "$device($iftype): ${1} failed"
49 else
50 echo "$device($iftype): Interface type not supported"
51 fi
52 ); done
53 }
54
55 wifi_detect() {
56 for driver in ${2:-$DRIVERS}; do (
57 if eval "type detect_$driver" 2>/dev/null >/dev/null; then
58 eval "detect_$driver" || echo "$driver: Detect failed" >&2
59 else
60 echo "$driver: Hardware detection not supported" >&2
61 fi
62 ); done
63 }
64
65 start_net() {(
66 local iface="$1"
67 local config="$2"
68
69 include /lib/network
70 scan_interfaces
71 setup_interface "$1" "$2"
72 )}
73
74 config_cb() {
75 config_get TYPE "$CONFIG_SECTION" TYPE
76 case "$TYPE" in
77 wifi-device)
78 append DEVICES "$CONFIG_SECTION"
79 ;;
80 wifi-iface)
81 config_get device "$CONFIG_SECTION" device
82 config_get vifs "$device" vifs
83 append vifs "$CONFIG_SECTION"
84 config_set "$device" vifs "$vifs"
85 ;;
86 esac
87 }
88
89 DEVICES=
90 DRIVERS=
91 config_load wireless
92 include /lib/wifi
93
94 case "$1" in
95 down) wifi_updown "disable" "$2";;
96 detect) wifi_detect "$2";;
97 *) wifi_updown "enable" "$2";;
98 esac
This page took 0.049462 seconds and 5 git commands to generate.