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

Reply via email to