hostapd: use wpa_supplicant for unencrypted mesh connections
authorFelix Fietkau <nbd@nbd.name>
Sun, 4 Dec 2022 18:35:36 +0000 (19:35 +0100)
committerFelix Fietkau <nbd@nbd.name>
Sat, 10 Dec 2022 11:38:46 +0000 (12:38 +0100)
It's more reliable than using iw

Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
package/network/services/hostapd/files/hostapd.sh
package/network/services/hostapd/src/src/utils/build_features.h

index ed2805213e4a5e295decd998a2edae071d31219b..0a7f787cff80fd494f9df5ac7b21524cc7eea32a 100644 (file)
@@ -1033,7 +1033,7 @@ mac80211_setup_vif() {
                mesh)
                        wireless_vif_parse_encryption
                        [ -z "$htmode" ] && htmode="NOHT";
-                       if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ] || chan_is_dfs "$phy" "$channel"; then
+                       if wpa_supplicant -vmesh || [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ] || chan_is_dfs "$phy" "$channel"; then
                                mac80211_setup_supplicant $vif_enable || failed=1
                        else
                                mac80211_setup_mesh $vif_enable
index 79daa915ada78af14da6208b4e713f7222f5c15b..55cc766b58c2817d1d229eb9ca1b2813dd00083d 100644 (file)
@@ -1322,7 +1322,7 @@ wpa_supplicant_add_network() {
        }
 
        [ "$_w_mode" = "mesh" ] && {
-               json_get_vars mesh_id mesh_fwding mesh_rssi_threshold
+               json_get_vars mesh_id mesh_fwding mesh_rssi_threshold encryption
                [ -n "$mesh_id" ] && ssid="${mesh_id}"
 
                append network_data "mode=5" "$N$T"
@@ -1330,7 +1330,7 @@ wpa_supplicant_add_network() {
                [ -n "$mesh_rssi_threshold" ] && append network_data "mesh_rssi_threshold=${mesh_rssi_threshold}" "$N$T"
                [ -n "$freq" ] && wpa_supplicant_set_fixed_freq "$freq" "$htmode"
                [ "$noscan" = "1" ] && append network_data "noscan=1" "$N$T"
-               append wpa_key_mgmt "SAE"
+               [ "$encryption" = "none" -o -z "$encryption" ] || append wpa_key_mgmt "SAE"
                scan_ssid=""
        }
 
index 642a35836e4e547b6b8b1b9e943d69832a63aa12..138a799e75b5978525a3e2167563432e2350482f 100644 (file)
@@ -58,6 +58,10 @@ static inline int has_feature(const char *feat)
 #ifdef CONFIG_OCV
        if (!strcmp(feat, "ocv"))
                return 1;
+#endif
+#ifdef CONFIG_MESH
+       if (!strcmp(feat, "mesh"))
+               return 1;
 #endif
        return 0;
 }