IP adresses are to be cleared only when the plugin in charge signals
disconnection. If done pre-emptively at lower_up, addresses are erroneously
cleared in cases the wifi plugin thinks the service has not been
disconnected as follows:
connmand[4055]: wlan0 {newlink} index 3 operstate 2 <DOWN>
connmand[4055]: Probably roaming right now! Staying connected...
connmand[4055]: wlan0 {update} flags 102403 <UP,LOWER_UP>
---
src/ipconfig.c | 28 ----------------------------
1 file changed, 28 deletions(-)
diff --git a/src/ipconfig.c b/src/ipconfig.c
index f8c148b..0f40760 100644
--- a/src/ipconfig.c
+++ b/src/ipconfig.c
@@ -407,27 +407,6 @@ static void free_ipdevice(gpointer data)
g_free(ipdevice);
}
-static void __connman_ipconfig_lower_up(struct connman_ipdevice *ipdevice)
-{
- DBG("ipconfig ipv4 %p ipv6 %p", ipdevice->config_ipv4,
- ipdevice->config_ipv6);
-}
-
-static void __connman_ipconfig_lower_down(struct connman_ipdevice *ipdevice)
-{
- DBG("ipconfig ipv4 %p ipv6 %p", ipdevice->config_ipv4,
- ipdevice->config_ipv6);
-
- if (ipdevice->config_ipv4)
- connman_inet_clear_address(ipdevice->index,
- ipdevice->config_ipv4->address);
-
- if (ipdevice->config_ipv6)
- connman_inet_clear_ipv6_address(ipdevice->index,
- ipdevice->config_ipv6->address->local,
- ipdevice->config_ipv6->address->prefixlen);
-}
-
static void update_stats(struct connman_ipdevice *ipdevice,
const char *ifname, struct rtnl_link_stats *stats)
{
@@ -577,11 +556,6 @@ update:
g_list_free(ipconfig_copy);
- if (lower_up)
- __connman_ipconfig_lower_up(ipdevice);
- if (lower_down)
- __connman_ipconfig_lower_down(ipdevice);
-
out:
g_free(ifname);
}
@@ -622,8 +596,6 @@ void __connman_ipconfig_dellink(int index, struct
rtnl_link_stats *stats)
g_free(ifname);
- __connman_ipconfig_lower_down(ipdevice);
-
g_hash_table_remove(ipdevice_hash, GINT_TO_POINTER(index));
}
--
2.1.4
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman