diff options
Diffstat (limited to 'package/mac80211/files/lib')
| -rw-r--r-- | package/mac80211/files/lib/wifi/mac80211.sh | 38 | 
1 files changed, 24 insertions, 14 deletions
diff --git a/package/mac80211/files/lib/wifi/mac80211.sh b/package/mac80211/files/lib/wifi/mac80211.sh index 742c1bb44..06f4b84da 100644 --- a/package/mac80211/files/lib/wifi/mac80211.sh +++ b/package/mac80211/files/lib/wifi/mac80211.sh @@ -176,20 +176,30 @@ enable_mac80211() {  		# 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 @@ -241,10 +251,10 @@ enable_mac80211() {  			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 || {  | 
