[package] fix unparsable options generated by wpa_supplicant.sh (#4835)
[openwrt/svn-archive/archive.git] / package / wpa_supplicant / files / wpa_supplicant.sh
index 192c90354085567bfdf6aaa43fa3703f5f9308f3..5053d1e2853bd47285bb5cf9f56b8121711462a2 100644 (file)
@@ -28,10 +28,11 @@ wpa_supplicant_setup_vif() {
                                ;;
                        esac
                ;;
-               WPA|wpa|WPA2|wpa2i|8021x|8021X)
+               WPA|wpa|WPA2|wpa2|8021x|8021X)
                        proto='WPA2'
                        key_mgmt='WPA-EAP'
                        config_get ca_cert "$vif" ca_cert
+                       ca_cert=${ca_cert:+"ca_cert=\"$ca_cert\""}
                        case "$eap_type" in
                                tls|TLS)
                                        pairwise='pairwise=CCMP'
@@ -50,23 +51,27 @@ wpa_supplicant_setup_vif() {
                                        password="password=\"$password\""
                                ;;
                        esac
+                       eap_type="eap=$(echo $eap_type | tr 'a-z' 'A-Z')"
                ;;
        esac
        config_get ifname "$vif" ifname
        config_get bridge "$vif" bridge
        config_get ssid "$vif" ssid
-       eap_type=$(echo $eap_type | tr 'a-z' 'A-Z')
+       config_get bssid "$vif" bssid
+       bssid=${bssid:+"bssid=$bssid"}
        cat > /var/run/wpa_supplicant-$ifname.conf <<EOF
+ctrl_interface=/var/run/wpa_supplicant-$ifname
 network={
        scan_ssid=1
        ssid="$ssid"
+       $bssid
        key_mgmt=$key_mgmt
        proto=$proto
        $passphrase
        $pairwise
        $group
-       eap=$eap_type
-       ca_cert="$ca_cert"
+       $eap_type
+       $ca_cert
        $priv_key
        $priv_key_pwd
        $phase2
@@ -74,5 +79,5 @@ network={
        $password
 }
 EOF
-       [ -z "$proto" ] || wpa_supplicant ${bridge:+ -b $bridge} -B -D ${driver:-wext} -i "$ifname" -c /var/run/wpa_supplicant-$ifname.conf
+       [ -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
 }