diff options
author | Jukka Rissanen <jukka.rissanen@nokia.com> | 2011-02-10 17:52:17 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-02-11 12:26:42 +0100 |
commit | 13c581fa10b354a09a14ee0a25abc1be7fc13773 (patch) | |
tree | 6413675c52e5af806be4622192a5681a80fa1c55 /src | |
parent | 389b7de973f7445ac1b7f59129f6671ce6c5bdd3 (diff) | |
download | connman-13c581fa10b354a09a14ee0a25abc1be7fc13773.tar.gz connman-13c581fa10b354a09a14ee0a25abc1be7fc13773.tar.bz2 connman-13c581fa10b354a09a14ee0a25abc1be7fc13773.zip |
service: IPv6 autoconf will change the service state
Diffstat (limited to 'src')
-rw-r--r-- | src/service.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c index 5db3baee..1b8e42a7 100644 --- a/src/service.c +++ b/src/service.c @@ -4123,18 +4123,46 @@ 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); + + DBG("service %p ipconfig %p type %d method %d", service, ipconfig, + type, method); + + if (type == CONNMAN_IPCONFIG_TYPE_IPV6 && + method == CONNMAN_IPCONFIG_METHOD_AUTO) + __connman_service_indicate_state(service, + CONNMAN_SERVICE_STATE_READY, + CONNMAN_IPCONFIG_TYPE_IPV6); + 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); + + DBG("service %p ipconfig %p type %d method %d", service, ipconfig, + type, method); + + if (type == CONNMAN_IPCONFIG_TYPE_IPV6 && + method == CONNMAN_IPCONFIG_METHOD_OFF) + __connman_service_indicate_state(service, + CONNMAN_SERVICE_STATE_DISCONNECT, + CONNMAN_IPCONFIG_TYPE_IPV6); + settings_changed(service); } |