From 823603b2e793a96c15b57dd4d93ed3c9c894619b Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 20 Dec 2009 10:08:43 -0800 Subject: [PATCH] Fix update of Ethernet address and MTU values --- src/ipconfig.c | 10 ++++++---- src/service.c | 12 ++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/ipconfig.c b/src/ipconfig.c index 1298a78..45764f5 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 7e51395..21aaba4 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); } -- 2.7.4