config_get vifs "$device" vifs
config_get txpower "$device" txpower
config_get country "$device" country
+ config_get distance "$device" distance
find_mac80211_phy "$device" || return 0
config_get phy "$device" phy
local i=0
+ local macidx=0
fixed=""
[ -n "$country" ] && iw reg set "$country"
fixed=1
}
+ [ -n "$distance" ] && iw phy "$phy" set distance "$distance"
+
export channel fixed
# convert channel to frequency
local freq="$(get_freq "$phy" "${fixed:+$channel}")"
config_get vif_mac "$vif" macaddr
[ -n "$vif_mac" ] || {
- if [ "$i" -gt 0 ]; then
- offset="$(( 2 + $i * 4 ))"
+ if [ "$macidx" -gt 0 ]; then
+ offset="$(( 2 + $macidx * 4 ))"
else
offset="0"
fi
- vif_mac="$( printf %02x $(($mac_1 + $offset)) ):$mac_2"
+ vif_mac="$( printf %02x $((0x$mac_1 + $offset)) ):$mac_2"
+ macidx="$(($macidx + 1))"
}
ifconfig "$ifname" hw ether "$vif_mac"
# configured to handle the wep connection
if [ ! "$mode" = "ap" ]; then
case "$enc" in
- wep)
+ *wep*)
config_get keymgmt "$vif" keymgmt
- if [ -n "$keymgmt" ]; then
- for idx in 1 2 3 4; do
- local zidx
- zidx=$(($idx - 1))
- config_get key "$vif" "key${idx}"
- if [ -n "$key" ]; then
- append keystring "${zidx}:${key} "
- fi
- done
+ if [ -z "$keymgmt" ]; then
+ config_get key "$vif" key
+ key="${key:-1}"
+ case "$key" in
+ [1234])
+ for idx in 1 2 3 4; do
+ local zidx
+ zidx=$(($idx - 1))
+ config_get ckey "$vif" "key${idx}"
+ if [ -n "$ckey" ]; then
+ [ $idx -eq $key ] && zidx="d:${zidx}"
+ append keystring "${zidx}:$(prepare_key_wep "$ckey")"
+ fi
+ done
+ ;;
+ *)
+ keystring="d:0:$(prepare_key_wep "$key")"
+ ;;
+ esac
fi
;;
- *wpa*|*psk*)
+ *psk*|*wpa*)
config_get key "$vif" key
;;
esac
sta|mesh)
config_get bssid "$vif" bssid
case "$enc" in
- wep)
- if [ -n "$keymgmt" ]; then
+ *wep*)
+ if [ -z "$keymgmt" ]; then
[ -n "$keystring" ] &&
- iw dev "$ifname" connect "$ssid" ${fixed:+$freq} $bssid key "$keystring"
+ iw dev "$ifname" connect "$ssid" ${fixed:+$freq} $bssid key $keystring
else
if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
wpa_supplicant_setup_vif "$vif" wext || {
mode_band="g"
channel="5"
ht_cap=0
- for cap in $(iw phy "$dev" info | grep 'HT capabilities' | cut -d: -f2); do
+ for cap in $(iw phy "$dev" info | grep 'Capabilities:' | cut -d: -f2); do
ht_cap="$(($ht_cap | $cap))"
done
ht_capab="";