]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/initscripts/system/wlanclient
Merge remote-tracking branch 'ms/wifi-fixes'
[ipfire-2.x.git] / src / initscripts / system / wlanclient
index ee24c43a19a68e52cedf4ad652f46d1ffe8e9255..338a743ab72e4ad69efcb4780116d8d71e1807cc 100644 (file)
@@ -62,7 +62,11 @@ function wpa_supplicant_make_config() {
                        --wpa-mode="${line[4]}" \
                        --ssid="${line[5]}" \
                        --psk="${line[6]}" \
-                       --priority="${line[7]}"
+                       --priority="${line[7]}" \
+                       --auth-mode="${line[8]}" \
+                       --anonymous-identity="${line[9]}" \
+                       --identity="${line[10]}" \
+                       --password="${line[11]}"
 
                items=$(( ${items} + 1 ))
 
@@ -82,12 +86,17 @@ function wpa_supplicant_config_line() {
        local config=${2}
        shift 2
 
+       local ieee80211w
+       local anonymous_identity
        local auth_alg
+       local auth_mode
+       local identity
        local proto
        local key_mgmt
        local pairwise
        local group
        local mode
+       local password
        local priority
        local psk
        local ssid
@@ -98,9 +107,21 @@ function wpa_supplicant_config_line() {
 
        while [ $# -gt 0 ]; do
                case "${1}" in
+                       --anonymous-identity=*)
+                               anonymous_identity=${1#--anonymous-identity=}
+                               ;;
+                       --auth-mode=*)
+                               auth_mode=${1#--auth-mode=}
+                               ;;
+                       --identity=*)
+                               identity=${1#--identity=}
+                               ;;
                        --mode=*)
                                mode=${1#--mode=}
                                ;;
+                       --password=*)
+                               password=${1#--password=}
+                               ;;
                        --priority=*)
                                priority=${1#--priority=}
                                ;;
@@ -121,15 +142,23 @@ function wpa_supplicant_config_line() {
        done
 
        case "${mode}" in
+               EAP)
+                       key_mgmt="WPA-EAP-SHA256 WPA-EAP"
+                       ;;
+               WPA3)
+                       key_mgmt="SAE"
+
+                       ieee80211w="2"
+                       ;;
                WPA2)
                        auth_alg="OPEN"
                        proto="RSN"
-                       key_mgmt="WPA-PSK"
+                       key_mgmt="WPA-PSK-SHA256 WPA-PSK"
                        ;;
                WPA)
                        auth_alg="OPEN"
                        proto="WPA"
-                       key_mgmt="WPA-PSK"
+                       key_mgmt="WPA-PSK-SHA256 WPA-PSK"
                        ;;
                WEP)
                        auth_alg="SHARED"
@@ -149,7 +178,7 @@ function wpa_supplicant_config_line() {
                        ;;
        esac
 
-       if [ "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then
+       if [ "${mode}" = "EAP" -o "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then
                case "${wpa_mode}" in
                        CCMP-CCMP)
                                pairwise="CCMP"
@@ -186,7 +215,11 @@ function wpa_supplicant_config_line() {
                        echo "  key_mgmt=${key_mgmt}"
                fi
                if [ -n "${psk}" ]; then
-                       echo "  psk=\"${psk}\""
+                       if [ "${key_mgmt}" = "SAE" ]; then
+                               echo "  sae_password=\"${psk}\""
+                       else
+                               echo "  psk=\"${psk}\""
+                       fi
                fi
                if [ -n "${wep_tx_keyidx}" ]; then
                        echo "  wep_tx_keyidx=${wep_tx_keyidx}"
@@ -204,6 +237,27 @@ function wpa_supplicant_config_line() {
                if [ -n "${priority}" ]; then
                        echo "  priority=${priority}"
                fi
+               if [ -n "${ieee80211w}" ]; then
+                       echo "  ieee80211w=${ieee80211w}"
+               fi
+
+               # EAP
+               if [ "${mode}" = "EAP" ]; then
+                       if [ -n "${auth_mode}" ]; then
+                               echo "  eap=${auth_mode}"
+                       else
+                               echo "  eap=PEAP TTLS"
+                       fi
+
+                       if [ "${auth_mode}" = "TTLS" -a -n "${anonymous_identity}" ]; then
+                               echo "  anonymous_identity=\"${anonymous_identity}\""
+                       fi
+
+                       if [ -n "${identity}" -a -n "${password}" ]; then
+                               echo "  identity=\"${identity}\""
+                               echo "  password=\"${password}\""
+                       fi
+               fi
 
                echo "}"
                echo
@@ -221,9 +275,7 @@ function wpa_supplicant_start() {
        # Build wpa_supplicant command line.
        local wpa_suppl_cmd="wpa_supplicant -B -qqq -i${device} -c${config}"
 
-       if device_is_wireless ${device}; then
-               wpa_suppl_cmd="${wpa_suppl_cmd} -Dwext"
-       else
+       if ! device_is_wireless ${device}; then
                wpa_suppl_cmd="${wpa_suppl_cmd} -Dwired"
        fi