From 1b452e82b73205d0ab1c62503d8ad2336847bd34 Mon Sep 17 00:00:00 2001
From: Jo-Philipp Wich <jow@openwrt.org>
Date: Wed, 13 Jan 2010 19:31:47 +0000
Subject: wpa_supplicant: add WEP key handling to conform with documented
 behaviour in mac80211.sh (#6493)

SVN-Revision: 19119
---
 package/wpa_supplicant/files/wpa_supplicant.sh | 37 ++++++++++++++++++++++----
 1 file changed, 32 insertions(+), 5 deletions(-)

(limited to 'package')

diff --git a/package/wpa_supplicant/files/wpa_supplicant.sh b/package/wpa_supplicant/files/wpa_supplicant.sh
index 1d1367a17f..40e8ff55b2 100644
--- a/package/wpa_supplicant/files/wpa_supplicant.sh
+++ b/package/wpa_supplicant/files/wpa_supplicant.sh
@@ -12,12 +12,33 @@ wpa_supplicant_setup_vif() {
 	}
 
 	case "$enc" in
+		*wep*)
+			key_mgmt='NONE'
+			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" ] && \
+							append "wep_key${zidx}" "wep_key${zidx}=$(prepare_key_wep "$ckey")"
+					done
+					wep_tx_keyidx="wep_tx_keyidx=$((key - 1))"
+				;;
+				*)
+					wep_key0="wep_key0=$(prepare_key_wep "$key")"
+					wep_tx_keyidx="wep_tx_keyidx=0"
+				;;
+			esac
+		;;
 		*psk*)
 			key_mgmt='WPA-PSK'
 			config_get_bool usepassphrase "$vif" passphrase 1
 			case "$enc" in
 				*psk2*)
-					proto='RSN'
+					proto='proto=RSN'
 					if [ "$usepassphrase" = "1" ]; then
 						passphrase="psk=\"${key}\""
 					else
@@ -25,7 +46,7 @@ wpa_supplicant_setup_vif() {
 					fi
 				;;
 				*psk*)
-					proto='WPA'
+					proto='proto=WPA'
 					if [ "$usepassphrase" = "1" ]; then
 						passphrase="psk=\"${key}\""
 					else
@@ -35,7 +56,7 @@ wpa_supplicant_setup_vif() {
 			esac
 		;;
 		*wpa*|*8021x*)
-			proto='WPA2'
+			proto='proto=WPA2'
 			key_mgmt='WPA-EAP'
 			config_get ca_cert "$vif" ca_cert
 			ca_cert=${ca_cert:+"ca_cert=\"$ca_cert\""}
@@ -72,7 +93,7 @@ network={
 	ssid="$ssid"
 	$bssid
 	key_mgmt=$key_mgmt
-	proto=$proto
+	$proto
 	$passphrase
 	$pairwise
 	$group
@@ -83,7 +104,13 @@ network={
 	$phase2
 	$identity
 	$password
+	$wep_key0
+	$wep_key1
+	$wep_key2
+	$wep_key3
+	$wep_tx_keyidx
 }
 EOF
-	[ -z "$proto" ] || wpa_supplicant ${bridge:+ -b $bridge} -B -P "/var/run/wifi-${ifname}.pid" -D ${driver:-wext} -i "$ifname" -c /var/run/wpa_supplicant-$ifname.conf
+	[ -z "$proto" -a "$key_mgmt" != "NONE" ] ||
+		wpa_supplicant ${bridge:+ -b $bridge} -B -P "/var/run/wifi-${ifname}.pid" -D ${driver:-wext} -i "$ifname" -c /var/run/wpa_supplicant-$ifname.conf
 }
-- 
cgit v1.2.3