summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJukka Rissanen <jukka.rissanen@nokia.com>2011-02-10 17:52:17 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2011-02-11 12:26:42 +0100
commit13c581fa10b354a09a14ee0a25abc1be7fc13773 (patch)
tree6413675c52e5af806be4622192a5681a80fa1c55 /src
parent389b7de973f7445ac1b7f59129f6671ce6c5bdd3 (diff)
downloadconnman-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.c28
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);
}