blob: 92741713f63fd755387fccd30a3bafbfc6448785 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001append DRIVERS "realtek"
2
3set_open() {
4 echo "0" > $CONFIG_ROOT_DIR/$1/macclone_enable
5
6 echo "0" > $CONFIG_ROOT_DIR/$1/encrypt
7 echo "0" > $CONFIG_ROOT_DIR/$1/wep
8 echo "0" > $CONFIG_ROOT_DIR/$1/wep_default_key
9 echo "1" > $CONFIG_ROOT_DIR/$1/wep_key_type
10 echo "2" > $CONFIG_ROOT_DIR/$1/auth_type
11
12 echo "0" > $CONFIG_ROOT_DIR/$1/wsc_configured
13 echo "1" > $CONFIG_ROOT_DIR/$1/wsc_auth
14 echo "1" > $CONFIG_ROOT_DIR/$1/wsc_enc
15
16 if [ "$RP" = "0" ]; then
17 echo 0 > $CONFIG_ROOT_DIR/repeater_enabled
18 fi
19}
20
21set_wep() {
22 # wep_key_type - 0: hex mode 1: ascii
23 # wep : 1: wep-64 2: wep-128
24 echo "1" > $CONFIG_ROOT_DIR/$1/encrypt
25 echo $wep_type > $CONFIG_ROOT_DIR/$1/wep
26 echo $wep_key_idx > $CONFIG_ROOT_DIR/$1/wep_default_key
27 echo $wep_key_type > $CONFIG_ROOT_DIR/$1/wep_key_type
28 echo "2" > $CONFIG_ROOT_DIR/$1/auth_type
29
30 echo $wep64_h_key1 > $CONFIG_ROOT_DIR/$1/wepkey1_64_hex
31 echo $wep64_h_key2 > $CONFIG_ROOT_DIR/$1/wepkey2_64_hex
32 echo $wep64_h_key3 > $CONFIG_ROOT_DIR/$1/wepkey2_64_hex
33 echo $wep64_h_key4 > $CONFIG_ROOT_DIR/$1/wepkey3_64_hex
34
35 echo $wep64_a_key1 > $CONFIG_ROOT_DIR/$1/wepkey1_64_asc
36 echo $wep64_a_key2 > $CONFIG_ROOT_DIR/$1/wepkey2_64_asc
37 echo $wep64_a_key3 > $CONFIG_ROOT_DIR/$1/wepkey2_64_asc
38 echo $wep64_a_key4 > $CONFIG_ROOT_DIR/$1/wepkey3_64_asc
39
40 echo $wep128_h_key1 > $CONFIG_ROOT_DIR/$1/wepkey1_128_hex
41 echo $wep128_h_key2 > $CONFIG_ROOT_DIR/$1/wepkey2_128_hex
42 echo $wep128_h_key3 > $CONFIG_ROOT_DIR/$1/wepkey2_128_hex
43 echo $wep128_h_key4 > $CONFIG_ROOT_DIR/$1/wepkey3_128_hex
44
45 echo $wep128_a_key1 > $CONFIG_ROOT_DIR/$1/wepkey1_128_asc
46 echo $wep128_a_key2 > $CONFIG_ROOT_DIR/$1/wepkey2_128_asc
47 echo $wep128_a_key3 > $CONFIG_ROOT_DIR/$1/wepkey2_128_asc
48 echo $wep128_a_key4 > $CONFIG_ROOT_DIR/$1/wepkey3_128_asc
49
50 echo "1" > $CONFIG_ROOT_DIR/$1/wsc_configured
51 echo "1" > $CONFIG_ROOT_DIR/$1/wsc_auth
52 echo "2" > $CONFIG_ROOT_DIR/$1/wsc_enc
53 echo "0" > $CONFIG_ROOT_DIR/$1/wsc_configbyextreg
54}
55
56set_wpa_tkip() {
57 echo "2" > $CONFIG_ROOT_DIR/$1/encrypt
58 echo "0" > $CONFIG_ROOT_DIR/$1/enable_1x
59 echo "2" > $CONFIG_ROOT_DIR/$1/wpa_auth
60 echo "1" > $CONFIG_ROOT_DIR/$1/wpa_cipher
61 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wpa_psk
62
63 echo "1" > $CONFIG_ROOT_DIR/$1/wsc_configured
64 echo "2" > $CONFIG_ROOT_DIR/$1/wsc_auth
65 echo "4" > $CONFIG_ROOT_DIR/$1/wsc_enc
66 echo "0" > $CONFIG_ROOT_DIR/$1/wsc_configbyextreg
67 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wsc_psk
68}
69
70set_wpa_aes() {
71 echo "2" > $CONFIG_ROOT_DIR/$1/encrypt
72 echo "0" > $CONFIG_ROOT_DIR/$1/enable_1x
73 echo "2" > $CONFIG_ROOT_DIR/$1/wpa_auth
74 echo "2" > $CONFIG_ROOT_DIR/$1/wpa_cipher
75 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wpa_psk
76
77 echo "1" > $CONFIG_ROOT_DIR/$1/wsc_configured
78 echo "2" > $CONFIG_ROOT_DIR/$1/wsc_auth
79 echo "8" > $CONFIG_ROOT_DIR/$1/wsc_enc
80 echo "0" > $CONFIG_ROOT_DIR/$1/wsc_configbyextreg
81 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wsc_psk
82}
83
84set_wpa2_tkip () {
85 echo "4" > $CONFIG_ROOT_DIR/$1/encrypt
86 echo "0" > $CONFIG_ROOT_DIR/$1/enable_1x
87 echo "2" > $CONFIG_ROOT_DIR/$1/wpa_auth
88 echo "1" > $CONFIG_ROOT_DIR/$1/wpa2_cipher
89 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wpa_psk
90
91 echo "1" > $CONFIG_ROOT_DIR/$1/wsc_configured
92 echo "32" > $CONFIG_ROOT_DIR/$1/wsc_auth
93 echo "4" > $CONFIG_ROOT_DIR/$1/wsc_enc
94 echo "0" > $CONFIG_ROOT_DIR/$1/wsc_configbyextreg
95 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wsc_psk
96}
97
98set_wpa2_aes () {
99 echo "4" > $CONFIG_ROOT_DIR/$1/encrypt
100 echo "0" > $CONFIG_ROOT_DIR/$1/enable_1x
101 echo "2" > $CONFIG_ROOT_DIR/$1/wpa_auth
102 echo "2" > $CONFIG_ROOT_DIR/$1/wpa2_cipher
103 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wpa_psk
104
105 echo "1" > $CONFIG_ROOT_DIR/$1/wsc_configured
106 echo "32" > $CONFIG_ROOT_DIR/$1/wsc_auth
107 echo "8" > $CONFIG_ROOT_DIR/$1/wsc_enc
108 echo "0" > $CONFIG_ROOT_DIR/$1/wsc_configbyextreg
109 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wsc_psk
110}
111
112set_mixed() {
113 echo "6" > $CONFIG_ROOT_DIR/$1/encrypt
114 echo "0" > $CONFIG_ROOT_DIR/$1/enable_1x
115 echo "2" > $CONFIG_ROOT_DIR/$1/wpa_auth
116 echo "3" > $CONFIG_ROOT_DIR/$1/wpa_cipher
117 echo "3" > $CONFIG_ROOT_DIR/$1/wpa2_cipher
118 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wpa_psk
119
120 echo "1" > $CONFIG_ROOT_DIR/$1/wsc_configured
121 echo "34" > $CONFIG_ROOT_DIR/$1/wsc_auth
122 echo "12" > $CONFIG_ROOT_DIR/$1/wsc_enc
123 echo "0" > $CONFIG_ROOT_DIR/$1/wsc_configbyextreg
124 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wsc_psk
125}
126
127set_sae() {
128 echo "8" > $CONFIG_ROOT_DIR/$1/encrypt
129 echo "2" > $CONFIG_ROOT_DIR/$1/authtype
130 echo "2" > $CONFIG_ROOT_DIR/$1/encmode
131 echo "0" > $CONFIG_ROOT_DIR/$1/wpa_cipher
132 echo "8" > $CONFIG_ROOT_DIR/$1/wpa2_cipher
133 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wpa_psk
134}
135
136set_sae_mixed() {
137 echo "10" > $CONFIG_ROOT_DIR/$1/encrypt
138 echo "2" > $CONFIG_ROOT_DIR/$1/authtype
139 echo "2" > $CONFIG_ROOT_DIR/$1/encmode
140 echo "0" > $CONFIG_ROOT_DIR/$1/wpa_cipher
141 echo "8" > $CONFIG_ROOT_DIR/$1/wpa2_cipher
142 echo $wpa_psk > $CONFIG_ROOT_DIR/$1/wpa_psk
143}
144
145set_enc() {
146 # set_enc [enc] [intf]
147 set_open $2
148 case $1 in
149 open)
150 echo "do nothing"
151 ;;
152 wep)
153 set_wep $2
154 ;;
155 wpa_tkip)
156 set_wpa_tkip $2
157 ;;
158 wpa_aes)
159 set_wpa_aes $2
160 ;;
161 wpa2_tkip)
162 set_wpa2_tkip $2
163 ;;
164 wpa2_aes)
165 set_wpa2_aes $2
166 ;;
167 mixed)
168 set_mixed $2
169 ;;
170 sae-mixed)
171 set_sae_mixed $2
172 ;;
173 sae)
174 set_sae $2
175 ;;
176 802.1x)
177 echo "not supported yet"
178 ;;
179 *)
180 echo "usage: enc: open, wep, wpa_tkip, wpa2_aes, mixed"
181 exit 1
182 esac
183}
184
185start_nat() {
186 EIF="eth0"
187 IIF="br-lan"
188 INNET="192.168.10.0/24"
189
190 echo "1" > /proc/sys/net/ipv4/ip_forward
191 iptables -F
192 iptables -X
193 iptables -t nat -F
194 iptables -t nat -X
195 iptables -P INPUT DROP
196 iptables -P OUTPUT ACCEPT
197 iptables -P FORWARD ACCEPT
198 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
199 iptables -t nat -A POSTROUTING -o $EIF -s $INNET -j MASQUERADE
200}
201
202stop_nat() {
203 iptables -F
204 iptables -X
205 iptables -t nat -F
206 iptables -t nat -X
207}
208
209start_ap() {
210 local __ssid
211
212 if [ "$WPS" = "0" ]; then
213 for intf in $@; do
214 echo "0" > $CONFIG_ROOT_DIR/$intf/wlan_mode
215 set_enc $ENC $intf # [enc] [intf]
216
217 NUM=${intf#w*va};
218 echo "start my $NUM"
219 #echo "$AP_SSID-$intf" > $CONFIG_ROOT_DIR/$intf/ssid
220 eval "__ssid=\$ssid_${intf}"
221 echo $__ssid > $CONFIG_ROOT_DIR/$intf/ssid
222 echo $ap_channel > $CONFIG_ROOT_DIR/$intf/channel
223 done
224 #$IFCONFIG $INTF hw ether $MACID
225 fi
226
227 rtl_act_wlan_if start $@ # all if
228
229 if [ "$RP" = "0" ]; then
230 rtl_br_lan_if start $@ $LAN_INTF #all if
231 #$IFCONFIG $INTF hw ether $MACID
232 if [ "$ADD_BR" = "1" ]; then
233 $IFCONFIG $BR_INTF $LOCAL_IP up
234 fi
235 $START_WLAN_APP start $@ $BR_INTF
236 #start_nat
237 fi
238}
239
240start_cli() {
241 if [ "$WPS" = "0" ]; then
242 set_enc $1 $2
243
244 # auto channel
245 channel=0
246
247 #wlan_mode=0 : AP
248 #wlan_mode=1 : Client | Ad-hoc
249 # network_type=0 : Clien
250 # network_type=1 : Ad-hoc
251 wlan_mode=1
252 network_type=0
253
254 #1:B, 2:G, 4:A, 8:N, 64:AC
255 #band=11 : BGN
256 band=11
257
258 #phyBandSelect=1 : 2G
259 #phyBandSelect=2 : 5G
260 phyBandSelect=1
261
262 echo $channel > $CONFIG_ROOT_DIR/$2/channel
263 echo $wlan_mode > $CONFIG_ROOT_DIR/$2/wlan_mode
264 echo $network_type > $CONFIG_ROOT_DIR/$2/network_type
265 echo $STA_SSID > $CONFIG_ROOT_DIR/repeater_ssid
266 echo $STA_SSID > $CONFIG_ROOT_DIR/$2/ssid
267 echo $band > $CONFIG_ROOT_DIR/$2/band
268 echo $phyBandSelect > $CONFIG_ROOT_DIR/$2/phyBandSelect
269
270 #WPS_DISABLE=0
271 #echo $WPS_DISABLE > $CONFIG_ROOT_DIR/$2/wpa_auth
272 #echo 0 > $CONFIG_ROOT_DIR/$2/wsc_enc
273 fi
274
275 #$IFCONFIG $INTF down
276 #$START_WLAN_ORG $INTF
277 #$IFCONFIG $INTF hw ether $MACID
278 #$IFCONFIG $INTF $LOCAL_IP up
279
280 rtl_act_wlan_if start $2
281 #$IWPRIV $2 set_mib wsc_enable=1
282 if [ "$RP" = "0" ]; then
283 #$IFCONFIG $2 hw ether $MACID
284 rtl_br_lan_if start $2 $BR_INTF
285 #$IWRPIV $INTF set_mib nat25_disable=1
286 #$IFCONFIG $INTF hw ether $MACID
287 if [ "$ADD_BR" = "1" ]; then
288 $IFCONFIG $BR_INTF $LOCAL_IP up
289 fi
290 $START_WLAN_APP start $2 $BR_INTF
291 fi
292
293 #echo 1 > $CONFIG_ROOT_DIR/$2/wsc_enc
294 #$IWPRIV $2 set_mib wsc_enable=1
295 cat /var/run/wscd-wlan0.pid
296}
297
298start_rp() {
299 echo 1 > $CONFIG_ROOT_DIR/repeater_enabled
300 echo $AP_SSID > $CONFIG_ROOT_DIR/repeater_ssid
301
302 ENC=$1
303 VAP=0
304 RP=1
305
306 start_ap $ALL_AP_INTF
307 #$IFCONFIG $INTF up
308 VXD_INTF="$INTF-vxd"
309 start_cli $1 $VXD_INTF
310 $IFCONFIG $VXD_INTF up
311 $IFCONFIG $INTF up
312 rtl_br_lan_if start $VXD_INTF $INTF
313 if [ "$ADD_BR" = "1" ]; then
314 $IFCONFIG $BR_INTF $LOCAL_IP up
315 fi
316}
317
318start_rp11() {
319 echo 1 > $CONFIG_ROOT_DIR/repeater_enabled
320 echo $AP_SSID > $CONFIG_ROOT_DIR/repeater_ssid
321
322 VXD_INTF="$INTF-vxd"
323 start_cli $1 $VXD_INTF
324 set_enc $1 $INTF
325 wlan_mode=0
326 network_type=0
327 repeater_enabled=1
328
329 echo $wlan_mode > $CONFIG_ROOT_DIR/$INTF/wlan_mode
330 echo $network_type > $CONFIG_ROOT_DIR/$INTF/network_type
331 echo $repeater_enabled > $CONFIG_ROOT_DIR/repeater_enabled
332 echo $AP_SSID > $CONFIG_ROOT_DIR/$INTF/ssid
333
334 rtl_act_wlan_if start $INTF
335 $IFCONFIG $INTF 0.0.0.0 up
336 $BRCTL addif $BR_INTF $INTF
337}
338
339start_rp1() {
340 start_cli $1 $INTF
341
342 VXD_INTF="$INTF-vxd"
343 set_enc $1 $VXD_INTF
344
345 wlan_mode=0
346 network_type=0
347 repeater_enabled=1
348
349 echo $wlan_mode > $CONFIG_ROOT_DIR/$VXD_INTF/wlan_mode
350 echo $network_type > $CONFIG_ROOT_DIR/$VXD_INTF/network_type
351 echo $repeater_enabled > $CONFIG_ROOT_DIR/repeater_enabled
352 echo $AP_SSID > $CONFIG_ROOT_DIR/$VXD_INTF/ssid
353
354 rtl_act_wlan_if start $VXD_INTF
355 MACID1="00:01:73:01:FF:11"
356 MACID2="00:22:88:77:33:27"
357 #$IFCONFIG $VXD_INTF hw ether $MACID1
358 #iwpriv wlan0-vxd set_mib ssid="cliff-test"
359 $IWPRIV $VXD_INTF set_mib ssid=$AP_SSID
360 #rtl_br_lan_if start $ALL_RP_INTF
361 #$IFCONFIG $BR_INTF $LOCAL_IP up
362 $IFCONFIG $VXD_INTF 0.0.0.0 up
363 $BRCTL addif $BR_INTF $VXD_INTF
364}
365
366rtl_br_lan_if() {
367 # func args: cmd lan0 lan1 ...
368 # shutdown LAN interface (ethernt, wlan)
369
370 if [ "$1" = "start" ]; then
371 if [ "$ADD_BR" = "1" ]; then
372 $BRCTL addbr $BR_INTF
373 $IFCONFIG $BR_INTF up
374 fi
375 fi
376 for ARG in $@ ; do
377 #INTF=`$IFCONFIG $ARG`
378 #echo "$1 $INTF"
379 if [ "$ARG" = "start" ] || [ "$ARG" = "stop" ]; then
380 continue;
381 fi
382
383 if [ "$1" = "stop" ]; then
384 $IFCONFIG $ARG down
385 if [ $ARG != $1 ]; then
386 $BRCTL delif $BR_INTF $ARG 2> /dev/null
387 fi
388 else
389 if [ $ARG != $1 ]; then
390 $IFCONFIG $ARG 0.0.0.0 up
391 $BRCTL addif $BR_INTF $ARG 2> /dev/null
392 fi
393 fi
394 done
395 if [ "$1" = "stop" ]; then
396 if [ "$ADD_BR" = "1" ]; then
397 $IFCONFIG $BR_INTF down
398 $BRCTL delbr $BR_INTF
399 fi
400 fi
401}
402
403# Start WLAN interface
404rtl_act_wlan_if() {
405 VA_INTF="$INTF-va*"
406 VXD_IF="$INTF-vxd*"
407
408 #echo "VAP:$VAP"
409 #$BIN_DIR/webs -x
410
411 #echo "$WLAN_PREFIX $WLAN_PREFIX_LEN $WLAN_NAME"
412 for WLAN in $@ ; do
413 case $WLAN in
414 $VA_INTF)
415 #echo "va: $WLAN"
416 #$IWPRIV $WLAN set_mib vap_enable=0
417 EXT="va"
418 ;;
419 $VXD_IF)
420 #echo "vxd: $WLAN"
421 #$IWPRIV $WLAN set_mib vap_enable=0
422 $IWPRIV $WLAN copy_mib
423 EXT="vxd"
424 ;;
425 $INTF)
426 #echo "wlan intf: $WLAN"
427 $IWPRIV $WLAN set_mib vap_enable=$VAP
428 EXT="root"
429 ;;
430 *)
431 #echo "cmd: $WLAN"
432 continue
433 ;;
434 esac
435 $IFCONFIG $WLAN down
436 if [ "$1" = "start" ]; then
437 echo "Initialize $WLAN intf"
438 $START_WLAN $WLAN $INTF $EXT
439 fi
440 done
441}
442
443## kill 802.1x, autoconf and IAPP daemon ##
444rtl_kill_iwcontrol_pid() {
445 PIDFILE="$TOP_VAR_DIR/run/iwcontrol.pid"
446 if [ -f $PIDFILE ] ; then
447 PID=`cat $PIDFILE`
448 echo "IWCONTROL_PID=$PID"
449 if [ "$PID" != "0" ]; then
450 kill -9 $PID 2>/dev/null
451 fi
452 rm -f $PIDFILE
453 fi
454}
455
456rtl_kill_wlan_pid() {
457 for WLAN in $@ ; do
458 PIDFILE=$TOP_VAR_DIR/run/auth-$WLAN.pid
459 if [ -f $PIDFILE ] ; then
460 PID=`cat $PIDFILE`
461 echo "AUTH_PID=$PID"
462 if [ "$PID" != "0" ]; then
463 kill -9 $PID 2>/dev/null
464 fi
465 rm -f $PIDFILE
466
467 PIDFILE=$TOP_VAR_DIR/run/auth-$WLAN-vxd.pid
468 if [ -f $PIDFILE ] ; then
469 PID=`cat $PIDFILE`
470 if [ "$PID" != "0" ]; then
471 kill -9 $PID 2>/dev/null
472 fi
473 rm -f $PIDFILE
474 fi
475 fi
476
477 # for WPS ---------------------------------->>
478 PIDFILE=$TOP_VAR_DIR/run/wscd-$WLAN.pid
479 if [ "$both_band_ap" = "1" ]; then
480 PIDFILE=$TOP_VAR_DIR/run/wscd-wlan0-wlan1.pid
481 fi
482
483 if [ -f $PIDFILE ] ; then
484 PID=`cat $PIDFILE`
485 echo "WSCD_PID=$PID"
486 if [ "$PID" != "0" ]; then
487 kill -9 $PID 2>/dev/null
488 fi
489 rm -f $PIDFILE
490 fi
491 done
492 #<<----------------------------------- for WPS
493}
494
495stop_all() {
496 HAS_APP=1
497 if [ "$1" = "m-ap" ];then
498 ALL_INTF=$ALL_M_AP_INTF
499 elif [ "$1" = "ap" ];then
500 ALL_INTF=$INTF
501 #stop_nat
502 elif [ "$1" = "rp" ]; then
503 ALL_INTF=$ALL_RP_INTF
504 elif [ "$1" = "wds" ]; then
505 ALL_INTF=$ALL_WDS_INTF
506 HAS_APP=0
507 else
508 ALL_INTF=$INTF
509 HAS_APP=0
510 fi
511
512 $IWPRIV $INTF set_mib wsc_enable=0
513 rtl_act_wlan_if stop $ALL_INTF
514 rtl_br_lan_if stop $ALL_INTF $LAN_INTF
515 $START_WLAN_APP kill $ALL_INTF $BR_INTF
516 #killall webs 2> /dev/null
517 rtl_kill_iwcontrol_pid $ALL_INTF
518 rtl_kill_wlan_pid $ALL_INTF
519 rm -f $TOP_VAR_DIR/*.fifo
520}
521
522start_wds() {
523 if [ "$1" = "open"]; then
524 ENC_AUTH="0"
525 elif [ "$1" = "wep" ]; then
526 ENC_AUTH="1"
527 elif [ "$1" = "wpa-tkip" ]; then
528 ENC_AUTH="2"
529 elif [ "$1" = "wpa2_aes" ]; then
530 ENC_AUTH="4"
531 fi
532
533 $IWPRIV $INTF set_mib wds_enable=1
534 $IWPRIV $INTF set_mib wds_pure=0
535 $IWPRIV $INTF set_mib wds_priority=1
536 $IWPRIV $INTF set_mib wds_num=0
537 $IWPRIV $INTF set_mib wds_encrypt=$ENC_AUTH ## 0:none 1:wep40 2:tkip 4:aes 5:wep104
538 $IWPRIV $INTF set_mib wds_wepkey=$wep_key
539 $IWPRIV $INTF set_mib wds_passphrase=$wpa_psk
540 $IWPRIV $INTF set_mib wds_add=$WDS_PEER_MAC,0 ## peer mac address, rate
541
542 #$IWPRIV $INTF set_mib wsc_enable=0
543 rtl_act_wlan_if start $INTF
544 $IFCONFIG $WDS_INTF up
545 rtl_br_lan_if start $ALL_WDS_INTF
546 echo 1 > /proc/sys/net/ipv6/conf/$WDS_INTF/disable_ipv6
547 if [ "$ADD_BR" = "1" ]; then
548 $IFCONFIG $BR_INTF $WDS_IP
549 fi
550 #$IFCONFIG $INTF-wds0 up
551}
552
553wps_restart() {
554 MODE=`cat $CONFIG_ROOT_DIR/$2/wlan_mode`
555
556 if [ "$MODE" = "0" ];then
557 stop_all ap
558 start_ap $ALL_AP_INTF
559 else
560 stop_all cli
561 start_cli $INTF
562 fi
563}
564
565scan_realtek() {
566 local device="$1"
567 local vif vifs channel
568 local sta_if ap_if
569
570 IFCONFIG=ifconfig
571
572 if [ "$device" = "AP0_2G" ]; then
573 INTF="wlan0"
574 CONFIG_ROOT_DIR="/var/rtl8192c"
575 elif [ "$device" = "AP1_2G" ]; then
576 INTF="wlan1"
577 CONFIG_ROOT_DIR="/var/rtl8192cd"
578 elif [ "$device" = "AP1_5G" ]; then
579 INTF="wlan1"
580 CONFIG_ROOT_DIR="/var/rtl8192cd"
581 fi
582 ADD_BR=0
583 BR_INTF="br-lan"
584 #LAN_INTF="eth0"
585 LAN_INTF=
586
587 TOP_VAR_DIR="/var"
588
589 BRCTL="brctl"
590 IWPRIV="iwpriv"
591
592 LOCAL_IP="192.168.1.254"
593 #MACID="00:01:73:01:FF:AB"
594 #LOCAL=00:01:73:01:ff:10
595 WDS_PEER_MAC="002288773327"
596 WDS_IP="192.168.99.100"
597 ENC="wpa2_aes"
598 VAP=0
599 RP=0
600 WPS=0
601
602 ALL_AP_INTF=
603 ALL_RP_INTF=
604 ALL_WDS_INTF=
605 ALL_WLAN_INTF=
606 ALL_M_AP_INTF=
607 local _c=0
608
609 config_get channel "$device" channel
610 config_get vifs "$device" vifs
611 for vif in $vifs; do
612 config_get_bool disabled "$vif" disabled 0
613 [ $disabled -eq 0 ] || continue
614
615 local mode
616
617 config_get mode "$vif" mode
618 config_get ifname "$vif" ifname
619 config_get ssid "$vif" ssid
620
621 INTF=$ifname
622 WLAN_INTF=$INTF
623# VA_INTF="$INTF-va0"
624 VXD_INTF="$INTF-vxd"
625 WDS_INTF="$INTF-wds0"
626
627 ALL_AP_INTF="$ALL_AP_INTF $INTF"
628 ALL_M_AP_INTF="$ALL_M_AP_INTF $INTF $VA_INTF"
629 ALL_RP_INTF="$ALL_RP_INTF $INTF $VXD_INTF"
630 ALL_WDS_INTF="$ALL_WDS_INTF $INTF $WDS_INTF"
631 ALL_WLAN_INTF="$ALL_WLAN_INTF $WLAN_INTF $VXD_INTF"
632 case "$mode" in
633 sta)
634 sta=1
635 STA_SSID=$ssid
636 sta_if="$vif"
637 ;;
638 ap)
639 apmode=1
640 ap_if="${ap_if:+$ap_if }$vif"
641 ap_channel=$channel
642 eval "ssid_${ifname}=\"\$ssid\""
643 ALL_M_AP_INTF="$ALL_M_AP_INTF $ifname"
644 _c=$((${_c:-0} + 1))
645 ;;
646 wds)
647 wdsmode=1
648 ;;
649 *) echo "$device($vif): Invalid mode, ignored."; continue;;
650 esac
651 done
652
653 if [ "$_c" -gt 1 ]; then
654 VAP=1
655 else
656 VAP=0
657 fi
658
659 if [ -d /proc/wlan0 ] || [ -d /proc/wlan1 ]; then
660 if [ ! -d "$CONFIG_ROOT_DIR" ]; then
661 mkdir $CONFIG_ROOT_DIR
662 fi
663
664 if [ -f "$CONFIG_ROOT_DIR/wifi_script_dir" ]; then
665 SCRIPT_DIR=`cat $CONFIG_ROOT_DIR/wifi_script_dir`
666 else
667 SCRIPT_DIR=/root/wifi/script
668 echo $SCRIPT_DIR > $CONFIG_ROOT_DIR/wifi_script_dir
669 fi
670
671 if [ -f "$CONFIG_ROOT_DIR/wifi_bin_dir" ]; then
672 BIN_DIR=`cat $CONFIG_ROOT_DIR/wifi_bin_dir`
673 else
674 BIN_DIR="/bin"
675 echo $BIN_DIR > $CONFIG_ROOT_DIR/wifi_bin_dir
676 fi
677 fi
678
679 START_WLAN_ORG=$SCRIPT_DIR/wlan_8192c.sh
680 START_WLAN=$SCRIPT_DIR/mywlan_8192c.sh
681 START_WLAN_APP=$SCRIPT_DIR/wlanapp_8192c.sh
682
683 for intf in $ALL_WLAN_INTF; do
684 if [ -d /proc/wlan0 ] || [ -d /proc/wlan1 ]; then
685 if [ "$intf" == "wlan0" ] || [ "$intf" == "wlan0-vxd" ]; then
686 $SCRIPT_DIR/default_setting.sh $intf
687 fi
688 if [ "$intf" == "wlan1" ] || [ "$intf" == "wlan1-vxd" ]; then
689 grep -l "RTL8192F" /proc/wlan1/mib_rf 2> /dev/null
690 if [ $? -eq 0 ]; then
691 $SCRIPT_DIR/default_setting_rtl8192fr.sh $intf
692 fi
693 grep -l "RTL8812" /proc/wlan1/mib_rf 2> /dev/null
694 if [ $? -eq 0 ]; then
695 $SCRIPT_DIR/default_setting_ac.sh $intf
696 fi
697 fi
698 fi
699 done
700}
701
702disable_realtek() {
703 local device="$1"
704
705 if [ -d /proc/wlan0 ] || [ -d /proc/wlan1 ]; then
706 set_wifi_down "$device"
707
708 if [ "$apmode" == "1" ]; then
709 if [ "VAP" == "1" ]; then
710 stop_all m_ap
711 else
712 stop_all ap
713 fi
714 else
715 stop_all cli
716 fi
717 fi
718}
719
720enable_realtek() {
721 local device="$1"
722 local country vifs macaddr hidden
723 local hwmode htmode
724 local if_up
725
726 if [ -d /proc/wlan0 ] || [ -d /proc/wlan1 ]; then
727
728 hidden=0
729 config_get country "$device" country
730 config_get vifs "$device" vifs
731 config_get hwmode "$device" hwmode
732 config_get htmode "$device" htmode
733 config_get hidden "$device" hidden
734
735 echo $hidden > $CONFIG_ROOT_DIR/$INTF/hidden_ssid
736
737 hwmode="${hwmode##11}"
738 case "$hwmode" in
739 ac) BAND=76;;
740 n) BAND=11;;
741 ng|na) BAND=8;;
742 a) BAND=4;;
743 g) BAND=2;;
744 b) BAND=1;;
745 *) BAND=11;;
746 esac
747 echo $BAND > $CONFIG_ROOT_DIR/$INTF/band
748
749 case "$htmode" in
750 HT80-) USE_40M=2; UPPER_SIDE=0;;
751 HT80+) USE_40M=2; UPPER_SIDE=1;;
752 HT40-) USE_40M=1; UPPER_SIDE=0;;
753 HT40+) USE_40M=1; UPPER_SIDE=1;;
754 HT20) USE_40M=0; UPPER_SIDE=0;;
755 *) USE_40M=0; UPPER_SIDE=0;;
756 esac
757 echo $USE_40M > $CONFIG_ROOT_DIR/$INTF/channel_bonding
758 echo $UPPER_SIDE > $CONFIG_ROOT_DIR/$INTF/control_sideband
759
760 [ -n "$country" ] && {
761 echo "1" > $CONFIG_ROOT_DIR/$INTF/countrycode_enable
762 echo $country > $CONFIG_ROOT_DIR/$INTF/countrycode
763 }
764
765 for vif in $vifs; do
766 config_get_bool disabled "$vif" disabled 0
767 [ $disabled -eq 0 ] || continue
768
769 config_get ifname "$vif" ifname
770 config_get macaddr "$vif" macaddr
771 [ -n "$macaddr" ] && {
772 echo $macaddr > $CONFIG_ROOT_DIR/$ifname/wlan0_addr
773 }
774
775 config_get enc "$vif" encryption
776 case "$enc" in
777 *wep*)
778 local enc_bits key_type
779
780 config_get wep_type "$vif" encmode
781 # 0:wep disabled 1:wep-64bit 2:wep-128bit
782 [ -n $wep_type ] && wep_type=1
783 case "$wep_type" in
784 1) bits=64;;
785 2) bits=128;;
786 *) bits=64;;
787 esac
788
789 # wep_key_type - 1: hex mode 0: ascii
790 config_get wep_key_type "$vif" key_type
791 [ -n $wep_key_type ] && wep_key_type=0
792 case "$wep_key_type" in
793 0) key_type=a;;
794 1) key_type=h;;
795 *) key_type=a;;
796 esac
797
798 config_get wep_key_type "$vif" key_type
799 config_get key "$vif" key
800 case "$key" in
801 [1234])
802 local idx
803 for idx in 1 2 3 4; do
804 config_get ikey "$vif" key$idx
805 [ -n $ikey ] && {
806 eval "wep${bits}_${key_type}_key${key}=\"\$ikey\""
807 }
808 done
809
810 wep_key_idx=$key
811 ;;
812 esac
813
814 ENC=wep
815 ;;
816 *psk*)
817 case "$enc" in
818 *mixed*|*psk+psk2*) ENC=mixed;;
819 *psk2*) ENC=wpa2_aes;;
820 *) ENC=wpa_tkip;;
821 esac
822 case "$enc" in
823 *tkip+aes*|*tkip+ccmp*|*aes+tkip*|*ccmp+tkip*) ENC=mixed;;
824 *aes*|*ccmp*) ENC=wpa_aes;;
825 *tkip*) ENC=wpa_tkip;;
826 esac
827 config_get key "$vif" key
828 wpa_psk=$key
829 ;;
830 *sae*)
831 case "$enc" in
832 *sae-mixed*) ENC=sae-mixed;;
833 *) ENC=sae;;
834 esac
835 config_get key "$vif" key
836 wpa_psk=$key
837 ;;
838 *wpa*)
839 case "$enc" in
840 *mixed*|*wpa+wpa2*) ENC=mixed;;
841 *wpa2*) ENC=wpa2_aes;;
842 *) ENC=wpa_tkip;;
843 esac
844 case "$enc" in
845 *tkip+aes*|*tkip+ccmp*|*aes+tkip*|*ccmp+tkip*) ENC=mixed;;
846 *aes*|*ccmp*) ENC=wpa_aes;;
847 *tkip*) ENC=wpa_tkip;;
848 esac
849 config_get key "$vif" key
850 wpa_psk=$key
851 ;;
852 *)
853 ENC=open
854 ;;
855 esac
856
857 local net_cfg="$(find_net_config "$vif")"
858 [ -z "$net_cfg" ] || {
859 append if_up "set_wifi_up '$vif' '$ifname'" ";$N"
860 append if_up "start_net '$ifname' '$net_cfg'" ";$N"
861 }
862 done
863
864 ubus -t 5 wait_for network.interface.lan
865 if [ "$apmode" == "1" ]; then
866 start_ap $ALL_M_AP_INTF
867 fi
868
869 if [ "$sta" == "1" ]; then
870 start_cli $ENC $INTF
871 fi
872
873 eval "$if_up"
874
875 fi
876}
877
878detect_realtek() {
879 local i=-1
880
881 while grep -qs "^ *wl$((++i)):" /proc/net/dev; do
882 local channel type
883
884 config_get type wl${i} type
885 [ "$type" = realtek ] && continue
886 channel=1
887 cat <<EOF
888config wifi-device rtl${i}
889 option type realtek
890 option channel ${channel:-11}
891 # REMOVE THIS LINE TO ENABLE WIFI:
892 option disabled 1
893
894config wifi-iface
895 option device rtl${i}
896 option network lan
897 option mode ap
898 option ssid ASR-OWRT${i#0}
899 option encryption none
900
901EOF
902 done
903}