#define WLAN_EID_SUPP_RATES 1
#define WLAN_EID_EXT_SUPP_RATES 50
#define COUNTRY_CODE_LENGTH 2
+#define WIFI_BSSID_LEN_MAX 6
#endif
#define BSS_UNKNOWN_STRENGTH -90
{ "wpa-eap", G_SUPPLICANT_KEYMGMT_WPA_EAP },
{ "wpa-eap-sha256", G_SUPPLICANT_KEYMGMT_WPA_EAP_256 },
{ "wps", G_SUPPLICANT_KEYMGMT_WPS },
-#if defined TIZEN_EXT_WIFI_MESH
+#if defined TIZEN_EXT
{ "sae", G_SUPPLICANT_KEYMGMT_SAE },
#endif
{ }
GSupplicantPhy_mode phy_mode;
#endif
unsigned int wps_capabilities;
-#if defined TIZEN_EXT_WIFI_MESH
+#if defined TIZEN_EXT
dbus_bool_t sae;
#endif
};
#if defined TIZEN_EXT
struct g_connman_bssids {
- char bssid[18];
+ unsigned char bssid[WIFI_BSSID_LEN_MAX];
uint16_t strength;
uint16_t frequency;
};
return "ft_psk";
case G_SUPPLICANT_SECURITY_FT_IEEE8021X:
return "ft_ieee8021x";
-#endif
-#if defined TIZEN_EXT_WIFI_MESH
case G_SUPPLICANT_SECURITY_SAE:
return "sae";
#endif
return NULL;
if (network->best_bss->security == G_SUPPLICANT_SECURITY_PSK ||
+#if defined TIZEN_EXT
+ network->best_bss->security == G_SUPPLICANT_SECURITY_SAE ||
+#endif /* TIZEN_EXT */
network->best_bss->security == G_SUPPLICANT_SECURITY_IEEE8021X) {
unsigned int pairwise;
if (network == NULL || network->best_bss == NULL)
return 0;
+#if defined TIZEN_EXT
+ if (network->best_bss->security == G_SUPPLICANT_SECURITY_SAE)
+ return false;
+#endif /* TIZEN_EXT */
+
if (network->best_bss->rsn_selected) {
const char *mode = g_supplicant_network_get_enc_mode(network);
if (g_strcmp0(mode, "aes") == 0 ||
{
struct g_supplicant_bss *bss = value;
struct g_connman_bssids *bssids = NULL;
- char buff[18];
GSList **list = (GSList **)user_data;
bssids = (struct g_connman_bssids *)g_try_malloc0(sizeof(struct g_connman_bssids));
if (bssids) {
- g_snprintf(buff, 18, "%02x:%02x:%02x:%02x:%02x:%02x",
- bss->bssid[0], bss->bssid[1], bss->bssid[2], bss->bssid[3],
- bss->bssid[4], bss->bssid[5]);
+ memcpy(bssids->bssid, bss->bssid, WIFI_BSSID_LEN_MAX);
- memcpy(bssids->bssid, buff, 18);
- bssids->bssid[17] = '\0';
bssids->strength = bss->signal;
bssids->strength += 120;
SUPPLICANT_DBG("Failed to allocate memory");
}
+static gint cmp_bss(gconstpointer a, gconstpointer b)
+{
+ struct g_connman_bssids *entry_a = (struct g_connman_bssids *)a;
+ struct g_connman_bssids *entry_b = (struct g_connman_bssids *)b;
+
+ if (entry_a->strength > entry_b->strength)
+ return -1;
+
+ if (entry_a->strength < entry_b->strength)
+ return 1;
+
+ return 0;
+}
+
void *g_supplicant_network_get_bssid_list(GSupplicantNetwork *network)
{
GSList *bssid_list = NULL;
return NULL;
g_hash_table_foreach(network->bss_table, update_bssid_list, &bssid_list);
+ bssid_list = g_slist_sort(bssid_list, cmp_bss);
return bssid_list;
}
bss->psk = TRUE;
#endif
-#if defined TIZEN_EXT_WIFI_MESH
+#if defined TIZEN_EXT
if (bss->keymgmt & G_SUPPLICANT_KEYMGMT_SAE)
bss->sae = TRUE;
#endif
else if (bss->ft_ieee8021x == TRUE)
bss->security = G_SUPPLICANT_SECURITY_IEEE8021X;
#endif
-#if defined TIZEN_EXT_WIFI_MESH
+#if defined TIZEN_EXT
else if (bss->sae)
bss->security = G_SUPPLICANT_SECURITY_SAE;
#endif
g_hash_table_remove(interface->network_table, network->group);
} else {
if (is_current_network_bss && network->best_bss)
+#if defined TIZEN_EXT
+ callback_network_changed(network, "CheckMultiBssidConnect");
+#else
callback_network_changed(network, "");
+#endif
}
}
g_free(proto);
}
-#if defined TIZEN_EXT_WIFI_MESH
+#if defined TIZEN_EXT
static void add_network_ieee80211w(DBusMessageIter *dict, GSupplicantSSID *ssid)
{
if (ssid->security != G_SUPPLICANT_SECURITY_SAE)
add_network_security_ciphers(dict, ssid);
add_network_security_proto(dict, ssid);
break;
-#endif
-#if defined TIZEN_EXT_WIFI_MESH
case G_SUPPLICANT_SECURITY_SAE:
key_mgmt = "SAE";
add_network_security_psk(dict, ssid);
add_network_security(&dict, ssid);
-#if defined TIZEN_EXT_WIFI_MESH
+#if defined TIZEN_EXT
add_network_ieee80211w(&dict, ssid);
#endif