---
 src/service.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/src/service.c b/src/service.c
index 09c6913..b775d44 100644
--- a/src/service.c
+++ b/src/service.c
@@ -4014,18 +4014,42 @@ static void service_lower_down(struct connman_ipconfig 
*ipconfig)
 static void service_ip_bound(struct connman_ipconfig *ipconfig)
 {
        struct connman_service *service = connman_ipconfig_get_data(ipconfig);
+       enum connman_ipconfig_method method = CONNMAN_IPCONFIG_METHOD_UNKNOWN;
+       enum connman_ipconfig_type type = CONNMAN_IPCONFIG_TYPE_UNKNOWN;
 
        connman_info("%s ip bound", connman_ipconfig_get_ifname(ipconfig));
 
+       type = __connman_ipconfig_get_config_type(ipconfig);
+       method = __connman_ipconfig_get_method(ipconfig);
+
+       if (type == CONNMAN_IPCONFIG_TYPE_IPV6 &&
+                       method == CONNMAN_IPCONFIG_METHOD_AUTO)
+               __connman_service_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_UNKNOWN,
+                                               CONNMAN_SERVICE_STATE_READY);
+
        settings_changed(service);
 }
 
 static void service_ip_release(struct connman_ipconfig *ipconfig)
 {
        struct connman_service *service = connman_ipconfig_get_data(ipconfig);
+       enum connman_ipconfig_method method = CONNMAN_IPCONFIG_METHOD_UNKNOWN;
+       enum connman_ipconfig_type type = CONNMAN_IPCONFIG_TYPE_UNKNOWN;
 
        connman_info("%s ip release", connman_ipconfig_get_ifname(ipconfig));
 
+       type = __connman_ipconfig_get_config_type(ipconfig);
+       method = __connman_ipconfig_get_method(ipconfig);
+
+       if (type == CONNMAN_IPCONFIG_TYPE_IPV6 &&
+                       method == CONNMAN_IPCONFIG_METHOD_OFF) {
+               __connman_service_indicate_state(service,
+                                       CONNMAN_SERVICE_STATE_UNKNOWN,
+                                       CONNMAN_SERVICE_STATE_DISCONNECT);
+               __connman_ipconfig_disable(ipconfig);
+       }
+
        settings_changed(service);
 }
 
-- 
1.7.0.4

_______________________________________________
connman mailing list
connman@connman.net
http://lists.connman.net/listinfo/connman

Reply via email to