110 lines
2.5 KiB
Bash
Executable File
110 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
scan_madwifi()
|
|
{
|
|
aths=$(iwconfig 2>/dev/null | grep -o "^ath..")
|
|
scanif=""
|
|
created=""
|
|
for ath in $aths ; do
|
|
if [ -z "$scanif" ] ; then
|
|
test=$(iwconfig $ath | grep "anaged")
|
|
if [ -z "$test" ] ; then
|
|
test=$(iwconfig $ath | grep "aster")
|
|
fi
|
|
if [ -n "$test" ] ; then
|
|
scanif="$ath"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if [ -z "$scanif" ] ; then
|
|
created="ath0"
|
|
scanif=$created
|
|
wlanconfig $created create wlandev wifi0 wlanmode sta >/dev/null 2>&1
|
|
fi
|
|
|
|
is_up=$(ifconfig 2>/dev/null | grep $scanif)
|
|
if [ -z "$is_up" ] ; then
|
|
ifconfig $scanif up
|
|
fi
|
|
sleep 4
|
|
|
|
|
|
iwinfo $scanif scan 2>/dev/null
|
|
|
|
if [ -z "$is_up" ] ; then
|
|
ifconfig $scanif down 2>/dev/null
|
|
fi
|
|
if [ -n "$created" ] ; then
|
|
wlanconfig $created destroy 2>/dev/null
|
|
fi
|
|
}
|
|
|
|
scan_brcm()
|
|
{
|
|
if_exists=$(ifconfig | grep wl0)
|
|
is_disabled=$(uci get wireless.wl0.disabled)
|
|
if [ -z "$if_exists" ] || [ "$is_disabled" = 1 ] ; then
|
|
wl up
|
|
ifconfig wl0 up
|
|
fi
|
|
sleep 4
|
|
|
|
iwinfo wl0 scan
|
|
if [ -z "$if_exists" ] ; then
|
|
ifconfig wl0 down
|
|
fi
|
|
}
|
|
|
|
scan_mac80211()
|
|
{
|
|
radio_disabled1=$(uci get wireless.@wifi-device[0].disabled 2>/dev/null)
|
|
radio_disabled2=$(uci get wireless.@wifi-device[1].disabled 2>/dev/null)
|
|
g_sta=""
|
|
a_sta=""
|
|
iflist=$(iwinfo | awk '$0 ~ /^[a-z]/ { print $1 ; }' )
|
|
for i in $iflist ; do
|
|
i_info=$( iwinfo "$i" info 2>/dev/null )
|
|
is_sta=$( printf "$i_info\n" | grep "Mode: *Client" )
|
|
if [ -n "$is_sta" ] ; then
|
|
is_g=$( printf "$i_info\n" | egrep "802.11((b)|(bg)|(gb)|(g)|(gn)|(bgn))" )
|
|
is_a=$( printf "$i_info\n" | egrep "802.11an" )
|
|
if [ -n "$is_g" ] ; then
|
|
g_sta="$i"
|
|
elif [ -n "$is_a" ] ; then
|
|
a_sta="$i"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
|
|
test_ifs="$g_sta"
|
|
if [ -z "$g_sta" ] || [ "$radio_disabled1" = "1" ] || [ "$radio_disabled2" = "1" ] ; then
|
|
g_sta=""
|
|
test_ifs="phy0"
|
|
fi
|
|
|
|
if [ `uci show wireless | grep wifi-device | wc -l`"" = "2" ] && [ -e "/sys/class/ieee80211/phy1" ] && [ ! `uci get wireless.@wifi-device[0].hwmode`"" = `uci get wireless.@wifi-device[1].hwmode`"" ] ; then
|
|
phy0_is_g=$(iw phy0 info | grep " 2.*MHz")
|
|
g_phy="phy0"
|
|
a_phy="phy1"
|
|
if [ -z "$phy0_is_g" ] ; then
|
|
g_phy="phy1"
|
|
a_phy="phy0"
|
|
fi
|
|
if [ -z "$g_sta" ] ; then
|
|
test_ifs="$g_phy"
|
|
fi
|
|
if [ -z "$a_sta" ] || [ "$radio_disabled1" = "1" ] || [ "$radio_disabled2" = "1" ] ; then
|
|
test_ifs="$test_ifs $a_phy"
|
|
else
|
|
test_ifs="$test_ifs $a_sta"
|
|
fi
|
|
fi
|
|
|
|
for if in $test_ifs ; do
|
|
iwinfo "$if" scan
|
|
done
|
|
|
|
}
|