aboutsummaryrefslogtreecommitdiffstats
path: root/package/mac80211/files/lib
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2010-01-13 18:39:44 +0000
committerJo-Philipp Wich <jow@openwrt.org>2010-01-13 18:39:44 +0000
commitcb30b52ec19e0ce3fda2920448c2676d6b905113 (patch)
treebef387af8a0adc40b61bdb6299825eef29a60da5 /package/mac80211/files/lib
parent5f84b8a838c6f0d178af4d7fa4b124f757f5b3f8 (diff)
downloadupstream-cb30b52ec19e0ce3fda2920448c2676d6b905113.tar.gz
upstream-cb30b52ec19e0ce3fda2920448c2676d6b905113.tar.bz2
upstream-cb30b52ec19e0ce3fda2920448c2676d6b905113.zip
base-files, mac80211 (#6491) - fix wep key handling in iw with mac80211 based drivers - sanitize keys where necessary - put a procedure prepare_key_wep() into /sbin/wifi for use by other driver backends
SVN-Revision: 19118
Diffstat (limited to 'package/mac80211/files/lib')
-rw-r--r--package/mac80211/files/lib/wifi/mac80211.sh38
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 742c1bb446..06f4b84dad 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 || {