source: freewrt/package/fwifupdown/lib/wl-broadcom@ 655dec8

Last change on this file since 655dec8 was 8ebd04e, checked in by Christian Fischer <spaetzle@…>, 19 years ago

some fixes to get set -u working

git-svn-id: svn://www.freewrt.org/trunk/freewrt@2390 afb5a338-a214-0410-bd46-81f09a774fd1

  • Property mode set to 100644
File size: 4.6 KB
Line 
1#!/bin/sh
2#
3# WiFi configuration script
4# Copyright (c) 2006 Dirk Nehring <dnehring@freewrt.org>
5#
6
7iface_type() {
8 ### HACK: simple type check for now ###
9 [ "${IF_WIRELESS_TYPE:-""}" = "broadcom" ]
10}
11
12
13if_up() {
14
15 #
16 # init driver
17 #
18# ip link set up dev $IFACE
19 wlc ifname $IFACE radio 1
20 wlc ifname $IFACE monitor 0
21 wlc ifname $IFACE macfilter 0
22 wlc ifname $IFACE maclist none
23 wlc ifname $IFACE up
24
25 # kill old nas process
26 pid="$(cat /var/run/nas.lan.pid 2>&-)"
27 [ -n "$pid" -a -d "/proc/$pid" ] && kill $pid
28
29 # get interface name if bridged
30 [ "$IF_WIRELESS_BRIDGE_IF" ] && ifname=$IF_WIRELESS_BRIDGE_IF
31
32 #
33 # check SSID
34 #
35 [ "$IF_WIRELESS_SSID" ] || return 1
36
37 #
38 # set country
39 #
40 [ "$IF_WIRELESS_COUNTRY" ] && {
41 wlc ifname $IFACE down
42 wlc ifname $IFACE country $IF_WIRELESS_COUNTRY
43 wlc ifname $IFACE up
44 }
45
46 #
47 # set operation mode
48 #
49 case "$IF_WIRELESS_MODE" in
50 sta)
51 nas_auth="-S "
52 wlc ifname $IFACE ap 0
53 wlc ifname $IFACE infra 1
54 ;;
55 ap)
56 nas_auth="-A "
57 wlc ifname $IFACE infra 0
58 wlc ifname $IFACE ap 1
59 ;;
60 wds)
61 wlc ifname $IFACE infra 0
62 wlc ifname $IFACE ap 1
63 wlc ifname $IFACE autowds 1
64 ;;
65 adhoc)
66 wlc ifname $IFACE ap 0
67 wlc ifname $IFACE infra 0
68 ;;
69 monitor)
70 wlc ifname $IFACE ap 0
71 wlc ifname $IFACE infra 0
72 wlc ifname $IFACE monitor 1
73 ;;
74 *)
75 merr "Unknown operation mode '$IF_WIRELESS_MODE'"
76 return 1
77 ;;
78 esac
79
80 #
81 # set hidden mode
82 #
83 [ "$IF_WIRELESS_HIDDEN" ] && wlc ifname $IFACE ap_isolate $IF_WIRELESS_HIDDEN
84
85 #
86 # set macmode mode
87 #
88 [ "$IF_WIRELESS_MACMODE" ] && wlc ifname $IFACE macfilter $IF_WIRELESS_MACMODE
89
90 #
91 # set MAC addresses
92 #
93 [ "$IF_WIRELESS_MAC" ] && wlc ifname $IFACE maclist $IF_WIRELESS_MAC
94
95 #
96 # set WLAN channel
97 #
98 [ "$IF_WIRELESS_CHANNEL" ] && wlc ifname $IFACE channel $IF_WIRELESS_CHANNEL
99
100 #
101 # set frameburst
102 #
103 [ "$IF_WIRELESS_FRAMEBURST" ] && wlc ifname $IFACE frameburst $IF_WIRELESS_FRAMEBURST
104
105 #
106 # set afterburner
107 #
108 [ "$IF_WIRELESS_AFTERBURNER" ] && wlc ifname $IFACE afterburner $IF_WIRELESS_AFTERBURNER
109
110 #
111 # security "none"
112 #
113 [ "$IF_WIRELESS_SECURITY" = "none" ] && {
114 wlc ifname $IFACE wsec 0
115 wlc ifname $IFACE ssid $IF_WIRELESS_SSID
116 wlc ifname $IFACE up
117 return 0
118 }
119
120 #
121 # security "wep"
122 #
123 [ "$IF_WIRELESS_SECURITY" = "wep" ] && {
124 wlc ifname $IFACE wpa_auth 0
125 wlc ifname $IFACE wsec 1
126 case "$IF_WIRELESS_AUTHORIZATION" in
127 "open")
128 # not supported now
129 ;;
130 "shared")
131 # not supported now
132 ;;
133 "open+shared")
134 # not supported now
135 ;;
136 esac
137 [ "$IF_WIRELESS_KEY1" ] && wl addwep 0 $IF_WIRELESS_KEY1
138 [ "$IF_WIRELESS_KEY2" ] && wl addwep 1 $IF_WIRELESS_KEY2
139 [ "$IF_WIRELESS_KEY3" ] && wl addwep 2 $IF_WIRELESS_KEY3
140 [ "$IF_WIRELESS_KEY4" ] && wl addwep 3 $IF_WIRELESS_KEY4
141 [ "$IF_WIRELESS_KEY" ] && wl primary_key $(($IF_WIRELESS_KEY-1))
142
143 wlc ifname $IFACE ssid $IF_WIRELESS_SSID
144 wlc ifname $IFACE up
145 return 0
146 }
147
148 #
149 # encryption
150 #
151 case "$IF_WIRELESS_ENCRYPTION" in
152 wep)
153 crypto_num=1
154 wl wep on
155 wl tkip off
156 wl aes off
157 ;;
158 tkip)
159 crypto_num=2
160 wl wep off
161 wl tkip on
162 wl aes off
163 ;;
164 aes)
165 crypto_num=4
166 wl wep off
167 wl tkip off
168 wl aes on
169 ;;
170 aes+tkip)
171 crypto_num=6
172 wl wep off
173 wl tkip on
174 wl aes on
175 ;;
176 esac
177 wl wsec $crypto_num
178
179 # wpa rekeying
180 gtk_rekey=$IF_WIRELESS_WPA_GTK_REKEY
181 gtk_rekey=${gtk_rekey#0}
182 gtk_rekey=${gtk_rekey:-3600}
183
184 #
185 # security "wpa-psk"
186 #
187 [ "$IF_WIRELESS_SECURITY" = "wpa-psk" ] && {
188 wl eap off
189 case "$IF_WIRELESS_AUTHORIZATION" in
190 "psk")
191 auth=4
192 ;;
193 "psk2")
194 auth=128
195 ;;
196 "psk psk2")
197 auth=132
198 ;;
199 esac
200 wl wpa_auth $auth
201
202 [ "$IF_WIRELESS_MODE" = "wds" ] && {
203 # nas needs some time before it can accept wds connections
204 touch /tmp/.nas_wait
205 (
206 sleep 10
207 rm -f /tmp/.nas_wait
208 ) &
209 }
210
211 /usr/sbin/nas -P /var/run/nas.lan.pid ${ifname:+ -l $ifname} -H 34954 -i $IFACE $nas_auth -m $auth -k "$IF_WIRELESS_WPA_KEY" -s "$IF_WIRELESS_SSID" -w $crypto_num -g $gtk_rekey &
212 return 0
213 }
214
215 return 0
216
217 #
218 # security "8021x"
219 #
220 [ "$IF_WIRELESS_SECURITY" = "8021x" ] && {
221 case "$IF_WIRELESS_AUTHORIZATION" in
222 "wep")
223 wl wpa_auth 0
224 /usr/sbin/nas -P /var/run/nas.lan.pid ${ifname:+ -l ${ifname}} -H 34954 -i $IFACE &
225 return 0
226 ;;
227 "wpa")
228 auth=2
229 ;;
230 "wpa2")
231 auth=64
232 ;;
233 "wpa wpa2")
234 auth=66
235 ;;
236 esac
237 wl wpa_auth $auth
238
239 /usr/sbin/nas -P /var/run/nas.lan.pid ${ifname:+ -l $ifname} -H 34954 -i $IFACE -A -m $auth -r "$IF_WIRELESS_RADIUS_KEY" -h $IF_WIRELESS_RADIUS_IPADDR -p ${IF_WIRELESS_RADIUS_PORT:-1812} -t 36000 -s "$IF_WIRELESS_SSID" -w $crypto_num -g $gtk_rekey &
240 return 0
241 }
242
243 return 0
244}
245
246if_down() {
247 wlc ifname $IFACE maclist none
248 wlc ifname $IFACE radio 0
249 wlc ifname $IFACE down
250
251 pid="$(cat /var/run/nas.lan.pid 2>&-)"
252 [ -n "$pid" -a -d "/proc/$pid" ] && kill $pid
253
254 return 0
255}
Note: See TracBrowser for help on using the repository browser.