diff options
author | jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-01-13 18:39:44 +0000 |
---|---|---|
committer | jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-01-13 18:39:44 +0000 |
commit | 505a102cb37f0a44c56cf6079a629debd08a8bad (patch) | |
tree | 45a3a83f2d2900d263d7c06641bdb4a92b835be1 /package/mac80211/files | |
parent | 90cf7545665105c1d7bc16335b8cc4e68071483f (diff) |
[package] 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
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19118 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/files')
-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 || { |