Merge tag 'upstream/1.41' into tizen
[platform/upstream/connman.git] / gsupplicant / supplicant.c
index 915ffb9..c395c7f 100755 (executable)
@@ -1573,7 +1573,7 @@ const char *g_supplicant_network_get_path(GSupplicantNetwork *network)
 const char *g_supplicant_network_get_mode(GSupplicantNetwork *network)
 {
        if (!network)
-               return G_SUPPLICANT_MODE_UNKNOWN;
+               return NULL;
 
        return mode2string(network->mode);
 }
@@ -1581,7 +1581,7 @@ const char *g_supplicant_network_get_mode(GSupplicantNetwork *network)
 const char *g_supplicant_network_get_security(GSupplicantNetwork *network)
 {
        if (!network)
-               return G_SUPPLICANT_SECURITY_UNKNOWN;
+               return NULL;
 
        return security2string(network->security);
 }
@@ -2449,7 +2449,8 @@ static void merge_network(GSupplicantNetwork *network)
                g_string_append_printf(str, "_mesh");
 #endif
 
-       if (g_strcmp0(key_mgmt, "WPA-PSK") == 0)
+       if ((g_strcmp0(key_mgmt, "WPA-PSK") == 0) ||
+           (g_strcmp0(key_mgmt, "SAE") == 0))
                g_string_append_printf(str, "_psk");
 #if defined TIZEN_EXT
        else if (g_strcmp0(key_mgmt, "WPA-EAP") == 0)
@@ -2733,6 +2734,7 @@ static int add_or_replace_bss_to_network(struct g_supplicant_bss *bss)
        network->name = create_name(bss->ssid, bss->ssid_len);
        network->mode = bss->mode;
        network->security = bss->security;
+       network->keymgmt = bss->keymgmt;
        network->ssid_len = bss->ssid_len;
        memcpy(network->ssid, bss->ssid, bss->ssid_len);
        network->signal = bss->signal;
@@ -7281,18 +7283,6 @@ static void add_network_security_proto(DBusMessageIter *dict,
 }
 
 #if defined TIZEN_EXT
-static void add_network_ieee80211w(DBusMessageIter *dict, GSupplicantSSID *ssid)
-{
-       if (ssid->security != G_SUPPLICANT_SECURITY_SAE
-                       && ssid->security != G_SUPPLICANT_SECURITY_OWE
-                       && ssid->security != G_SUPPLICANT_SECURITY_PSK_SHA256
-                       && ssid->security != G_SUPPLICANT_SECURITY_DPP)
-               return;
-
-       supplicant_dbus_dict_append_basic(dict, "ieee80211w", DBUS_TYPE_UINT32,
-                                         &ssid->ieee80211w);
-}
-
 static void add_network_security_connector(DBusMessageIter *dict, GSupplicantSSID *ssid)
 {
        if (ssid->connector && strlen(ssid->connector) > 0) {
@@ -7358,8 +7348,22 @@ static void add_network_security_net_access_key(DBusMessageIter *dict, GSupplica
 
 #endif
 
+static void add_network_ieee80211w(DBusMessageIter *dict, GSupplicantSSID *ssid,
+                                  GSupplicantMfpOptions ieee80211w)
+{
+#if defined TIZEN_EXT
+       if (ssid->security != G_SUPPLICANT_SECURITY_OWE
+                       && ssid->security != G_SUPPLICANT_SECURITY_PSK_SHA256
+                       && ssid->security != G_SUPPLICANT_SECURITY_DPP)
+               return;
+#endif
+       supplicant_dbus_dict_append_basic(dict, "ieee80211w", DBUS_TYPE_UINT32,
+                                         &ieee80211w);
+}
+
 static void add_network_security(DBusMessageIter *dict, GSupplicantSSID *ssid)
 {
+       GSupplicantMfpOptions ieee80211w;
        char *key_mgmt;
 
        switch (ssid->security) {
@@ -7421,10 +7425,16 @@ static void add_network_security(DBusMessageIter *dict, GSupplicantSSID *ssid)
                                key_mgmt = "FT-SAE SAE";
                        else
                                key_mgmt = "FT-SAE";
-               } else if (ssid->keymgmt & G_SUPPLICANT_KEYMGMT_WPA_PSK)
+               } else {
+                       if (ssid->keymgmt & G_SUPPLICANT_KEYMGMT_WPA_PSK) {
                        key_mgmt = "SAE WPA-PSK";
-               else
-                       key_mgmt = "SAE";
+                       ieee80211w = G_SUPPLICANT_MFP_OPTIONAL;
+                       } else {
+                               key_mgmt = "SAE";
+                               ieee80211w = G_SUPPLICANT_MFP_REQUIRED;
+                       }
+                       add_network_ieee80211w(dict, ssid, ieee80211w);
+               }
                add_network_security_psk(dict, ssid);
                break;
        case G_SUPPLICANT_SECURITY_OWE:
@@ -7498,10 +7508,6 @@ static void interface_add_network_params(DBusMessageIter *iter, void *user_data)
 
        add_network_security(&dict, ssid);
 
-#if defined TIZEN_EXT
-       add_network_ieee80211w(&dict, ssid);
-#endif
-
        supplicant_dbus_dict_append_fixed_array(&dict, "ssid",
                                        DBUS_TYPE_BYTE, &ssid->ssid,
                                                ssid->ssid_len);