summaryrefslogtreecommitdiff
path: root/gsupplicant
diff options
context:
space:
mode:
authorKalle Valo <kalle.valo@canonical.com>2010-10-27 21:49:30 +0300
committerSamuel Ortiz <sameo@linux.intel.com>2010-11-02 12:38:07 +0100
commit9ecfa4914a5e86bfa6d6d3cc3e4d605ac8ccd9bc (patch)
treea34fb67a4beb4ffcd95ac56c6a328795cd36d8f7 /gsupplicant
parenta091beb5bd344661c86b2c2a397740e2eed9e8e1 (diff)
downloadconnman-9ecfa4914a5e86bfa6d6d3cc3e4d605ac8ccd9bc.tar.gz
connman-9ecfa4914a5e86bfa6d6d3cc3e4d605ac8ccd9bc.tar.bz2
connman-9ecfa4914a5e86bfa6d6d3cc3e4d605ac8ccd9bc.zip
gsupplicant: Store network path
Store wpasupplicant network path so that it can be removed later.
Diffstat (limited to 'gsupplicant')
-rw-r--r--gsupplicant/supplicant.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index 375a3780..a2501b94 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -138,6 +138,7 @@ static GHashTable *bss_mapping;
struct _GSupplicantInterface {
char *path;
+ char *network_path;
unsigned int keymgmt_capa;
unsigned int authalg_capa;
unsigned int proto_capa;
@@ -2022,39 +2023,53 @@ int g_supplicant_interface_scan(GSupplicantInterface *interface,
static void interface_select_network_result(const char *error,
DBusMessageIter *iter, void *user_data)
{
+ struct interface_connect_data *data = user_data;
+
SUPPLICANT_DBG("");
+
+ dbus_free(data);
}
static void interface_select_network_params(DBusMessageIter *iter,
void *user_data)
{
- char *path = user_data;
+ struct interface_connect_data *data = user_data;
+ GSupplicantInterface *interface = data->interface;
- dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &path);
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH,
+ &interface->network_path);
}
static void interface_add_network_result(const char *error,
DBusMessageIter *iter, void *user_data)
{
struct interface_connect_data *data = user_data;
- char *path = NULL;
+ GSupplicantInterface *interface = data->interface;
+ const char *path;
if (error != NULL)
- goto done;
+ goto error;
dbus_message_iter_get_basic(iter, &path);
if (path == NULL)
- goto done;
+ goto error;
SUPPLICANT_DBG("PATH: %s", path);
+ g_free(interface->network_path);
+ interface->network_path = g_strdup(path);
+
supplicant_dbus_method_call(data->interface->path,
SUPPLICANT_INTERFACE ".Interface", "SelectNetwork",
interface_select_network_params,
- interface_select_network_result, path);
+ interface_select_network_result, data);
-done:
- dbus_free(data);
+ return;
+
+error:
+ g_free(interface->network_path);
+ interface->network_path = NULL;
+ g_free(data);
}
static void add_network_security_wep(DBusMessageIter *dict,