summaryrefslogtreecommitdiff
path: root/src/iface.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-01-08 12:48:05 +0100
committerMarcel Holtmann <marcel@holtmann.org>2008-01-08 12:48:05 +0100
commit0ebfa46648f633da5d933af0c67277ad49ae4376 (patch)
treeec20ad43a32ecb1f2c41b6d29d041ac4560e8a0d /src/iface.c
parent8efebe4ff9af283939fc4587cc3f36c4599c964a (diff)
downloadconnman-0ebfa46648f633da5d933af0c67277ad49ae4376.tar.gz
connman-0ebfa46648f633da5d933af0c67277ad49ae4376.tar.bz2
connman-0ebfa46648f633da5d933af0c67277ad49ae4376.zip
Add support for storing the network identifier
Diffstat (limited to 'src/iface.c')
-rw-r--r--src/iface.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/iface.c b/src/iface.c
index df020a3a..b440d528 100644
--- a/src/iface.c
+++ b/src/iface.c
@@ -663,6 +663,7 @@ static DBusMessage *set_network(DBusConnection *conn,
struct connman_iface *iface = data;
DBusMessage *reply;
DBusMessageIter array, dict;
+ gboolean changed = FALSE;
DBG("conn %p", conn);
@@ -685,8 +686,11 @@ static DBusMessage *set_network(DBusConnection *conn,
dbus_message_iter_get_basic(&value, &val);
if (g_strcasecmp(key, "ESSID") == 0) {
+ g_free(iface->network.essid);
+ iface->network.essid = g_strdup(val);
if (iface->driver->set_network)
iface->driver->set_network(iface, val);
+ changed = TRUE;
}
if (g_strcasecmp(key, "PSK") == 0) {
@@ -703,6 +707,9 @@ static DBusMessage *set_network(DBusConnection *conn,
dbus_message_append_args(reply, DBUS_TYPE_INVALID);
+ if (changed == TRUE)
+ __connman_iface_store(iface);
+
return reply;
}
@@ -743,6 +750,7 @@ static void device_free(void *data)
g_free(iface->udi);
g_free(iface->sysfs);
g_free(iface->identifier);
+ g_free(iface->network.essid);
g_free(iface->device.driver);
g_free(iface->device.vendor);
g_free(iface->device.product);
@@ -834,10 +842,10 @@ static int probe_device(LibHalContext *ctx,
__connman_iface_init_via_inet(iface);
- __connman_iface_load(iface);
-
iface->driver = driver;
+ __connman_iface_load(iface);
+
conn = libhal_ctx_get_dbus_connection(ctx);
g_dbus_register_object(conn, iface->path, iface, device_free);