b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | append DRIVERS "realtek" |
| 2 | |
| 3 | set_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 | |
| 21 | set_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 | |
| 56 | set_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 | |
| 70 | set_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 | |
| 84 | set_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 | |
| 98 | set_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 | |
| 112 | set_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 | |
| 127 | set_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 | |
| 136 | set_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 | |
| 145 | set_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 | |
| 185 | start_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 | |
| 202 | stop_nat() { |
| 203 | iptables -F |
| 204 | iptables -X |
| 205 | iptables -t nat -F |
| 206 | iptables -t nat -X |
| 207 | } |
| 208 | |
| 209 | start_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 | |
| 240 | start_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 | |
| 298 | start_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 | |
| 318 | start_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 | |
| 339 | start_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 | |
| 366 | rtl_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 |
| 404 | rtl_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 ## |
| 444 | rtl_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 | |
| 456 | rtl_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 | |
| 495 | stop_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 | |
| 522 | start_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 | |
| 553 | wps_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 | |
| 565 | scan_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 | |
| 702 | disable_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 | |
| 720 | enable_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 | |
| 878 | detect_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 |
| 888 | config 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 | |
| 894 | config 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 | |
| 901 | EOF |
| 902 | done |
| 903 | } |