From 2e5102b42e9676a4c4bf0f7abd2fdcf49d3eacc1 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Tue, 9 Apr 2024 20:51:22 +0900 Subject: [PATCH] Support roaming from WPA2 to WPA3 When the AP is switched from WPA2 to WPA3, it will automatically reconnect if it is the same SSID. Change-Id: I7d56d56dffe70e1b6513e1d8eadca7daea1714f1 Signed-off-by: Jaehyun Kim --- src/service.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/service.c b/src/service.c index bf5c11b..dbd36f3 100755 --- a/src/service.c +++ b/src/service.c @@ -10562,6 +10562,63 @@ static struct connman_service *service_get(const char *identifier) return service; } +#if defined TIZEN_EXT +static void service_load_wpa_passphrase(struct connman_service *service) +{ + char *identifier; + char *ptr; + GKeyFile *keyfile; + bool favorite; + bool autoconnect; + char *passphrase; + + if (service->security != CONNMAN_SERVICE_SECURITY_SAE) + return; + + if (service->passphrase) + return; + + if (!service->identifier) + return; + + identifier = g_strdup(service->identifier); + if (!identifier) + return; + + ptr = strstr(identifier, "_sae"); + if (!ptr) { + g_free(identifier); + return; + } + + memcpy(ptr, "_psk", strlen("_psk")); + + keyfile = connman_storage_load_service(identifier); + if (!keyfile) { + g_free(identifier); + return; + } + + favorite = g_key_file_get_boolean(keyfile, identifier, "Favorite", NULL); + autoconnect = g_key_file_get_boolean(keyfile, identifier, "AutoConnect", NULL); + + if (!favorite || !autoconnect) { + g_free(identifier); + return; + } + + passphrase = g_key_file_get_string(keyfile, identifier, "Passphrase", NULL); + if (passphrase) { + service->passphrase = g_strdup(passphrase); + service->favorite = favorite; + service->autoconnect = autoconnect; + } + + g_free(identifier); + g_free(passphrase); +} +#endif + static int service_register(struct connman_service *service) { #if defined TIZEN_EXT @@ -10580,6 +10637,7 @@ static int service_register(struct connman_service *service) #if defined TIZEN_EXT int ret; service_load(service); + service_load_wpa_passphrase(service); if (TIZEN_INS_ENABLED) { ret = service_ext_load(service); -- 2.7.4