summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2010-09-30 16:18:56 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2010-09-30 16:18:56 +0200
commitfdc79b960c47656d7666fac6ab9d4656ec5fe83e (patch)
treea1bf7f2fea00fb0dbdd463fbae3b5ad619e4a90c
parent165515de3ca29e1de3bfe53818b1c2f1ee944ac3 (diff)
downloadconnman-fdc79b960c47656d7666fac6ab9d4656ec5fe83e.tar.gz
connman-fdc79b960c47656d7666fac6ab9d4656ec5fe83e.tar.bz2
connman-fdc79b960c47656d7666fac6ab9d4656ec5fe83e.zip
Implement WiFi network driver remove hook
-rw-r--r--plugins/supplicant.c19
-rw-r--r--plugins/supplicant.h2
-rw-r--r--plugins/wifi-legacy.c2
3 files changed, 23 insertions, 0 deletions
diff --git a/plugins/supplicant.c b/plugins/supplicant.c
index 867a9282..defe5f1b 100644
--- a/plugins/supplicant.c
+++ b/plugins/supplicant.c
@@ -2564,6 +2564,25 @@ int supplicant_disconnect(struct connman_network *network)
return 0;
}
+void supplicant_remove_network(struct connman_network *network)
+{
+ struct supplicant_task *task;
+ int index;
+
+ DBG("network %p", network);
+
+ index = connman_network_get_index(network);
+
+ task = find_task_by_index(index);
+ if (task == NULL)
+ return;
+
+ if (task->network != network)
+ return;
+
+ remove_network(task);
+}
+
static void supplicant_activate(DBusConnection *conn)
{
DBusMessage *message;
diff --git a/plugins/supplicant.h b/plugins/supplicant.h
index 6745aacd..7eb88807 100644
--- a/plugins/supplicant.h
+++ b/plugins/supplicant.h
@@ -37,3 +37,5 @@ int supplicant_scan(struct connman_device *device);
int supplicant_connect(struct connman_network *network);
int supplicant_disconnect(struct connman_network *network);
+
+void supplicant_remove_network(struct connman_network *network);
diff --git a/plugins/wifi-legacy.c b/plugins/wifi-legacy.c
index 62938ccd..cfbd80b1 100644
--- a/plugins/wifi-legacy.c
+++ b/plugins/wifi-legacy.c
@@ -62,6 +62,8 @@ static int network_probe(struct connman_network *network)
static void network_remove(struct connman_network *network)
{
DBG("network %p", network);
+
+ supplicant_remove_network(network);
}
static int network_connect(struct connman_network *network)