source: freewrt/package/broadcom-wl-util/files/wireless-broadcom.pre-up@ edfeadd

freewrt_1_0 freewrt_2_0
Last change on this file since edfeadd was edfeadd, checked in by Markus Wigge <markus@…>, 18 years ago

fixed double startup of nas on bridged systems

git-svn-id: svn://www.freewrt.org/branches/freewrt_1_0@3753 afb5a338-a214-0410-bd46-81f09a774fd1

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