From: Marcel Holtmann Date: Wed, 12 Mar 2008 13:49:14 +0000 (+0100) Subject: Change variables inside the network structure X-Git-Tag: 0.1~373 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c1fdd4bf06398f2b277bd5d8e5a11cadba6508b8;p=platform%2Fupstream%2Fconnman.git Change variables inside the network structure --- diff --git a/include/iface.h b/include/iface.h index b9ade5e..37e6067 100644 --- a/include/iface.h +++ b/include/iface.h @@ -83,8 +83,8 @@ struct connman_ipv4 { }; struct connman_network { - char *essid; - char *psk; + char *identifier; + char *passphrase; }; struct connman_iface { @@ -127,11 +127,6 @@ struct connman_iface_driver { struct connman_network *network); int (*disconnect) (struct connman_iface *iface); - void (*set_network) (struct connman_iface *iface, - const char *network); - void (*set_passphrase) (struct connman_iface *iface, - const char *passphrase); - void (*rtnl_carrier) (struct connman_iface *iface, int carrier); void (*rtnl_wireless) (struct connman_iface *iface, void *data, unsigned short len); diff --git a/src/iface-storage.c b/src/iface-storage.c index 750aa43..a5b57a3 100644 --- a/src/iface-storage.c +++ b/src/iface-storage.c @@ -63,18 +63,14 @@ int __connman_iface_load(struct connman_iface *iface) str = g_key_file_get_string(keyfile, GROUP_CONFIG, "Network", NULL); if (str != NULL) { - g_free(iface->network.essid); - iface->network.essid = str; - if (iface->driver->set_network) - iface->driver->set_network(iface, str); + g_free(iface->network.identifier); + iface->network.identifier = str; - str = g_key_file_get_string(keyfile, iface->network.essid, - "PSK", NULL); + str = g_key_file_get_string(keyfile, + iface->network.identifier, "PSK", NULL); if (str != NULL) { - g_free(iface->network.psk); - iface->network.psk = str; - if (iface->driver->set_passphrase) - iface->driver->set_passphrase(iface, str); + g_free(iface->network.passphrase); + iface->network.passphrase = str; } } @@ -95,15 +91,15 @@ static void do_update(GKeyFile *keyfile, struct connman_iface *iface) str = __connman_iface_policy2string(iface->policy); g_key_file_set_string(keyfile, GROUP_CONFIG, "Policy", str); - if (iface->network.essid != NULL) { + if (iface->network.identifier != NULL) { g_key_file_set_string(keyfile, GROUP_CONFIG, - "Network", iface->network.essid); + "Network", iface->network.identifier); } else g_key_file_remove_key(keyfile, GROUP_CONFIG, "Network", NULL); - if (iface->network.essid != NULL) - g_key_file_set_string(keyfile, iface->network.essid, - "PSK", iface->network.psk); + if (iface->network.identifier != NULL) + g_key_file_set_string(keyfile, iface->network.identifier, + "PSK", iface->network.passphrase); } int __connman_iface_store(struct connman_iface *iface) diff --git a/src/iface.c b/src/iface.c index 18c44f6..b9fe513 100644 --- a/src/iface.c +++ b/src/iface.c @@ -134,7 +134,6 @@ static gboolean scan_timeout(gpointer user_data) switch (iface->state) { case CONNMAN_IFACE_STATE_SCANNING: - case CONNMAN_IFACE_STATE_READY: if (iface->driver->scan) iface->driver->scan(iface); return TRUE; @@ -194,8 +193,6 @@ static void state_changed(struct connman_iface *iface) break; case CONNMAN_IFACE_STATE_READY: - if (iface->flags & CONNMAN_IFACE_FLAG_SCANNING) - g_timeout_add(20000, scan_timeout, iface); break; default: @@ -379,16 +376,12 @@ void connman_iface_indicate_station(struct connman_iface *iface, dbus_connection_send(connection, signal, NULL); dbus_message_unref(signal); - if (g_str_equal(name, iface->network.essid) == TRUE && + if (g_str_equal(name, iface->network.identifier) == TRUE && iface->state == CONNMAN_IFACE_STATE_SCANNING) { - if (iface->driver->set_network) - iface->driver->set_network(iface, name); - if (iface->driver->set_passphrase) - iface->driver->set_passphrase(iface, - iface->network.psk); + iface->network.identifier = g_strdup(name); if (iface->driver->connect) { - iface->driver->connect(iface, NULL); + iface->driver->connect(iface, &iface->network); iface->state = CONNMAN_IFACE_STATE_CONNECT; state_changed(iface); } @@ -574,9 +567,8 @@ static DBusMessage *scan_iface(DBusConnection *conn, if (reply == NULL) return NULL; - if (driver->scan) { - //driver->scan(iface); - } + if (driver->scan) + driver->scan(iface); dbus_message_append_args(reply, DBUS_TYPE_INVALID); @@ -751,12 +743,12 @@ static void append_network(DBusMessage *reply, switch (iface->type) { case CONNMAN_IFACE_TYPE_80211: - if (iface->network.essid != NULL) + if (iface->network.identifier != NULL) append_entry(&dict, "ESSID", - DBUS_TYPE_STRING, &iface->network.essid); - if (secrets == TRUE && iface->network.psk != NULL) + DBUS_TYPE_STRING, &iface->network.identifier); + if (secrets == TRUE && iface->network.passphrase != NULL) append_entry(&dict, "PSK", - DBUS_TYPE_STRING, &iface->network.psk); + DBUS_TYPE_STRING, &iface->network.passphrase); break; default: break; @@ -811,18 +803,14 @@ 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); + g_free(iface->network.identifier); + iface->network.identifier = g_strdup(val); changed = TRUE; } if (g_strcasecmp(key, "PSK") == 0) { - g_free(iface->network.psk); - iface->network.psk = g_strdup(val); - if (iface->driver->set_passphrase) - iface->driver->set_passphrase(iface, val); + g_free(iface->network.passphrase); + iface->network.passphrase = g_strdup(val); changed = TRUE; } @@ -845,6 +833,12 @@ static DBusMessage *set_network(DBusConnection *conn, dbus_connection_send(conn, signal, NULL); dbus_message_unref(signal); } + + if (iface->driver->disconnect) + iface->driver->disconnect(iface); + + if (iface->driver->connect) + iface->driver->connect(iface, &iface->network); } return reply; @@ -862,11 +856,14 @@ static DBusMessage *select_network(DBusConnection *conn, dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &network, DBUS_TYPE_INVALID); - g_free(iface->network.essid); - iface->network.essid = g_strdup(network); + g_free(iface->network.identifier); + iface->network.identifier = g_strdup(network); + + if (iface->driver->disconnect) + iface->driver->disconnect(iface); - if (iface->driver->set_network) - iface->driver->set_network(iface, network); + if (iface->driver->connect) + iface->driver->connect(iface, &iface->network); reply = dbus_message_new_method_return(msg); if (reply == NULL) @@ -1053,7 +1050,8 @@ 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->network.identifier); + g_free(iface->network.passphrase); g_free(iface->device.driver); g_free(iface->device.vendor); g_free(iface->device.product); @@ -1160,7 +1158,8 @@ static int probe_device(LibHalContext *ctx, __connman_iface_load(iface); DBG("iface %p network %s secret %s", iface, - iface->network.essid, iface->network.psk); + iface->network.identifier, + iface->network.passphrase); conn = libhal_ctx_get_dbus_connection(ctx);