mac80211: set the country code through iw reg, setting it only through hostapd appare...
[openwrt.git] / package / wpa_supplicant / files / wpa_supplicant.sh
index 37ebef7..1d1367a 100644 (file)
@@ -1,25 +1,31 @@
 wpa_supplicant_setup_vif() {
        local vif="$1"
        local driver="$2"
-       
+       local key="$key"
+
        # wpa_supplicant should use wext for mac80211 cards
        [ "$driver" = "mac80211" ] && driver='wext'
 
+       # make sure we have the psk
+       [ -n "$key" ] || {
+               config_get key "$vif" key
+       }
+
        case "$enc" in
-               PSK|psk|psk2|PSK2)
+               *psk*)
                        key_mgmt='WPA-PSK'
                        config_get_bool usepassphrase "$vif" passphrase 1
                        case "$enc" in
-                               psk|PSK)
-                                       proto='WPA'
+                               *psk2*)
+                                       proto='RSN'
                                        if [ "$usepassphrase" = "1" ]; then
                                                passphrase="psk=\"${key}\""
                                        else
                                                passphrase="psk=${key}"
                                        fi
                                ;;
-                               psk2|PSK2)
-                                       proto='RSN'
+                               *psk*)
+                                       proto='WPA'
                                        if [ "$usepassphrase" = "1" ]; then
                                                passphrase="psk=\"${key}\""
                                        else
@@ -28,13 +34,13 @@ wpa_supplicant_setup_vif() {
                                ;;
                        esac
                ;;
-               WPA|wpa|WPA2|wpa2i|8021x|8021X)
+               *wpa*|*8021x*)
                        proto='WPA2'
                        key_mgmt='WPA-EAP'
                        config_get ca_cert "$vif" ca_cert
-                       ca_cert="ca_cert=\"$ca_cert\""
+                       ca_cert=${ca_cert:+"ca_cert=\"$ca_cert\""}
                        case "$eap_type" in
-                               tls|TLS)
+                               tls)
                                        pairwise='pairwise=CCMP'
                                        group='group=CCMP'
                                        config_get priv_key "$vif" priv_key
@@ -42,7 +48,7 @@ wpa_supplicant_setup_vif() {
                                        priv_key="private_key=\"$priv_key\""
                                        priv_key_pwd="private_key_passwd=\"$priv_key_pwd\""
                                ;;
-                               peap|PEAP|ttls|TTLS)
+                               peap|ttls)
                                        config_get auth "$vif" auth
                                        config_get identity "$vif" identity
                                        config_get password "$vif" password
@@ -51,16 +57,20 @@ wpa_supplicant_setup_vif() {
                                        password="password=\"$password\""
                                ;;
                        esac
-                       eap_type="eap_type=$(echo $eap_type | tr 'a-z' 'A-Z')"
+                       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
+       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
@@ -75,5 +85,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
 }
This page took 0.023681 seconds and 4 git commands to generate.