From: Daniel Wagner <[email protected]>
---
plugins/elect.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/plugins/elect.c b/plugins/elect.c
index da589ea..6d9f789 100644
--- a/plugins/elect.c
+++ b/plugins/elect.c
@@ -178,6 +178,45 @@ static void create_network(struct elect_data *info)
info->network = network;
}
+static void set_connected(struct elect_data *info)
+{
+ DBG("%s", info->path);
+
+ connman_inet_ifup(info->index);
+ connman_network_set_index(info->network, info->index);
+
+ switch (info->method) {
+ case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
+ case CONNMAN_IPCONFIG_METHOD_OFF:
+ case CONNMAN_IPCONFIG_METHOD_MANUAL:
+ case CONNMAN_IPCONFIG_METHOD_AUTO:
+ return;
+
+ case CONNMAN_IPCONFIG_METHOD_FIXED:
+ connman_network_set_ipv4_method(info->network,
+ info->method);
+ connman_network_set_ipaddress(info->network,
+ info->address);
+ connman_network_set_nameservers(info->network,
+ info->nameservers);
+ break;
+
+ case CONNMAN_IPCONFIG_METHOD_DHCP:
+ connman_network_set_ipv4_method(info->network,
+ info->method);
+ break;
+ }
+ connman_network_set_connected(info->network, TRUE);
+}
+
+static void set_disconnected(struct elect_data *info)
+{
+ DBG("%s", info->path);
+
+ connman_network_set_connected(info->network, FALSE);
+ connman_inet_ifdown(info->index);
+}
+
static int network_probe(struct connman_network *network)
{
DBG("network %p", network);
@@ -400,6 +439,11 @@ static gboolean device_changed(DBusConnection *connection,
dbus_message_iter_get_basic(&value, &info->active);
DBG("%s Active %d", info->path, info->active);
+
+ if (info->active == TRUE)
+ set_connected(info);
+ else
+ set_disconnected(info);
} else if (g_str_equal(key, "Settings") == TRUE) {
DBG("%s Settings", info->path);
@@ -470,6 +514,9 @@ static void add_device(const char *path, DBusMessageIter
*properties)
create_device(info);
create_network(info);
+
+ if (info->active == TRUE)
+ set_connected(info);
}
static gboolean device_added(DBusConnection *connection, DBusMessage *message,
--
1.7.8.110.g4cb5d1
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman