summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-12-20 10:08:43 -0800
committerMarcel Holtmann <marcel@holtmann.org>2009-12-20 10:08:43 -0800
commit823603b2e793a96c15b57dd4d93ed3c9c894619b (patch)
tree29ec9af520bdb0b0f0f01cac880463a8df9e6a2f
parentcfc737cc8b047b133ff6f0caaac17f8dd4e1bf9f (diff)
downloadconnman-823603b2e793a96c15b57dd4d93ed3c9c894619b.tar.gz
connman-823603b2e793a96c15b57dd4d93ed3c9c894619b.tar.bz2
connman-823603b2e793a96c15b57dd4d93ed3c9c894619b.zip
Fix update of Ethernet address and MTU values
-rw-r--r--src/ipconfig.c10
-rw-r--r--src/service.c12
2 files changed, 18 insertions, 4 deletions
diff --git a/src/ipconfig.c b/src/ipconfig.c
index 1298a784..45764f58 100644
--- a/src/ipconfig.c
+++ b/src/ipconfig.c
@@ -331,6 +331,12 @@ void __connman_ipconfig_newlink(int index, unsigned short type,
index, type, type2str(type));
update:
+ if (ipdevice->config != NULL) {
+ g_free(ipdevice->config->eth);
+ ipdevice->config->eth = g_strdup(address);
+ ipdevice->config->mtu = mtu;
+ }
+
if (flags == ipdevice->flags)
return;
@@ -379,10 +385,6 @@ update:
if (index != ipconfig->index)
continue;
- g_free(ipconfig->eth);
- ipconfig->eth = g_strdup(address);
- ipconfig->mtu = mtu;
-
if (up == TRUE && ipconfig->ops->up)
ipconfig->ops->up(ipconfig);
if (lower_up == TRUE && ipconfig->ops->lower_up)
diff --git a/src/service.c b/src/service.c
index 7e513950..21aaba44 100644
--- a/src/service.c
+++ b/src/service.c
@@ -387,6 +387,18 @@ static void append_ethernet(DBusMessageIter *iter, void *user_data)
{
struct connman_service *service = user_data;
+ switch (service->state) {
+ case CONNMAN_SERVICE_STATE_UNKNOWN:
+ case CONNMAN_SERVICE_STATE_IDLE:
+ case CONNMAN_SERVICE_STATE_FAILURE:
+ case CONNMAN_SERVICE_STATE_DISCONNECT:
+ return;
+ case CONNMAN_SERVICE_STATE_ASSOCIATION:
+ case CONNMAN_SERVICE_STATE_CONFIGURATION:
+ case CONNMAN_SERVICE_STATE_READY:
+ break;
+ }
+
if (service->ipconfig != NULL)
__connman_ipconfig_append_ethernet(service->ipconfig, iter);
}