Store MAC address in lower case to vconf
[platform/core/connectivity/net-config.git] / src / wifi-eap-config.c
index 0869219..1791ecf 100755 (executable)
@@ -69,7 +69,7 @@ static char *__get_encoded_ssid(const char *name)
        return str;
 }
 
-static int __config_save(const char *ssid, GKeyFile *keyfile)
+static int __config_save(const char *mac_addr, GKeyFile *keyfile)
 {
        gchar *data = NULL;
        gchar *config_file = NULL;
@@ -77,7 +77,7 @@ static int __config_save(const char *ssid, GKeyFile *keyfile)
        FILE *file = NULL;
        int err = 0;
 
-       config_file = g_strdup_printf("%s/%s.config", CONNMAN_STORAGEDIR, ssid);
+       config_file = g_strdup_printf("%s/%s.config", CONNMAN_STORAGEDIR, mac_addr);
        if (config_file == NULL) {
                err = -ENOMEM;
                goto out;
@@ -112,7 +112,7 @@ out:
        return err;
 }
 
-static int __config_delete(const char *ssid)
+static int __config_delete(const char *mac_addr, const char *ssid)
 {
        int err = 0;
        gchar *group_name = NULL;
@@ -122,7 +122,7 @@ static int __config_delete(const char *ssid)
        GKeyFile *keyfile = NULL;
        GError *error = NULL;
 
-       config_file = g_strdup_printf("%s/%s.config", CONNMAN_STORAGEDIR, ssid);
+       config_file = g_strdup_printf("%s/%s.config", CONNMAN_STORAGEDIR, mac_addr);
        if (config_file == NULL)
                return -ENOMEM;
 
@@ -166,7 +166,7 @@ static int __config_delete(const char *ssid)
                ERR("Failed to remove %s", cert_path);
        g_free(cert_path);
 
-       dirname = g_strdup_printf("%s/%s", WIFI_CERT_STORAGEDIR, ssid);
+       dirname = g_strdup_printf("%s/%s_%s", WIFI_CERT_STORAGEDIR, mac_addr, ssid);
        if (dirname != NULL) {
                if (g_file_test(dirname, G_FILE_TEST_EXISTS) == TRUE)
                        if (g_file_test(dirname, G_FILE_TEST_IS_DIR) == TRUE)
@@ -218,7 +218,7 @@ static gboolean __netconfig_copy_config(const char *src, const char *dst)
        return result;
 }
 
-static gboolean __netconfig_create_config(GVariant *fields)
+static gboolean __netconfig_create_config(const char *profile, GVariant *fields)
 {
        GKeyFile *keyfile = NULL;
        GVariantIter *iter;
@@ -229,6 +229,7 @@ static gboolean __netconfig_create_config(GVariant *fields)
        gboolean updated = FALSE;
        gchar *cert_file = NULL;
        gchar *cert_path = NULL;
+       char mac_str[13] = { 0, };
        int err = 0;
 
        g_variant_get(fields, "a{ss}", &iter);
@@ -255,6 +256,9 @@ static gboolean __netconfig_create_config(GVariant *fields)
                goto out;
        }
 
+       memcpy(mac_str, &profile[strlen(CONNMAN_WIFI_SERVICE_PROFILE_PREFIX)], 12);
+       mac_str[12] = '\0';
+
        /* Create unique service group name */
        group_name = g_strdup_printf("service_%s", encoded_ssid);
        if (group_name == NULL) {
@@ -293,8 +297,8 @@ static gboolean __netconfig_create_config(GVariant *fields)
 
                                cert_file++;
 
-                               dirname = g_strdup_printf("%s/%s",
-                                               WIFI_CERT_STORAGEDIR, encoded_ssid);
+                               dirname = g_strdup_printf("%s/%s_%s", WIFI_CERT_STORAGEDIR,
+                                       mac_str, encoded_ssid);
                                if (dirname == NULL) {
                                        ERR("Failed to create dirname");
                                        g_free(field);
@@ -314,8 +318,8 @@ static gboolean __netconfig_create_config(GVariant *fields)
                                }
                                g_free(dirname);
 
-                               cert_path = g_strdup_printf("%s/%s/%s",
-                                               WIFI_CERT_STORAGEDIR, encoded_ssid, cert_file);
+                               cert_path = g_strdup_printf("%s/%s_%s/%s", WIFI_CERT_STORAGEDIR,
+                                       mac_str, encoded_ssid, cert_file);
                                if (cert_path == NULL) {
                                        ERR("Failed to create cert path");
                                        g_free(field);
@@ -339,11 +343,11 @@ static gboolean __netconfig_create_config(GVariant *fields)
                }
        }
 
-       err = __config_save((const char *)encoded_ssid, keyfile);
+       err = __config_save(mac_str, keyfile);
        if (err < 0)
-               ERR("Failed to create configuration %s[%d]", encoded_ssid, err);
+               ERR("Failed to create configuration %s[%d]", mac_str, err);
        else {
-               DBG("Successfully created %s", encoded_ssid);
+               DBG("Successfully created %s", mac_str);
                updated = TRUE;
        }
 
@@ -390,6 +394,7 @@ static gboolean __netconfig_delete_config(const char *profile)
        int ssid_len = 0;
        int err = 0;
        const char *interface_name = NULL;
+       char mac_str[13] = { 0, };
 
        if (NULL == profile) {
                ERR("Invalid profile name");
@@ -429,7 +434,11 @@ static gboolean __netconfig_delete_config(const char *profile)
        }
 
        g_strlcpy(ssid, essid, ssid_len + 1); /* include NULL-terminated */
-       err = __config_delete((const char *)ssid);
+
+       memcpy(mac_str, &profile[strlen(CONNMAN_WIFI_SERVICE_PROFILE_PREFIX)], 12);
+       mac_str[12] = '\0';
+
+       err = __config_delete(mac_str, ssid);
        if (err < 0) {
                ERR("Failed to delete configuration %s[%d]", ssid, err);
                g_free(ssid);
@@ -493,7 +502,7 @@ gboolean handle_create_eap_config(Wifi *wifi, GDBusMethodInvocation *context,
                return TRUE;
        }
 
-       updated = __netconfig_create_config(fields);
+       updated = __netconfig_create_config(service, fields);
        if (updated == TRUE) {
                wifi_complete_create_eap_config(wifi, context);