service: Allow state downgrade from online to ready
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Wed, 24 Aug 2011 08:36:40 +0000 (11:36 +0300)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 24 Aug 2011 09:45:23 +0000 (11:45 +0200)
src/connman.h
src/service.c

index 17add6d..d74e653 100644 (file)
@@ -560,6 +560,7 @@ void __connman_service_notify(struct connman_service *service,
 
 int __connman_service_counter_register(const char *counter);
 void __connman_service_counter_unregister(const char *counter);
+void __connman_service_downgrade_state(struct connman_service *service);
 
 struct connman_session;
 struct service_entry;
index 2819d51..0380dbe 100644 (file)
@@ -5158,6 +5158,25 @@ __connman_service_create_from_provider(struct connman_provider *provider)
        return service;
 }
 
+void __connman_service_downgrade_state(struct connman_service *service)
+{
+       if (service == NULL)
+               return;
+
+       DBG("service %p state4 %d state6 %d", service, service->state_ipv4,
+                                               service->state_ipv6);
+
+       if (service->state_ipv4 == CONNMAN_SERVICE_STATE_ONLINE)
+               __connman_service_ipconfig_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_READY,
+                                               CONNMAN_IPCONFIG_TYPE_IPV4);
+
+       if (service->state_ipv6 == CONNMAN_SERVICE_STATE_ONLINE)
+               __connman_service_ipconfig_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_READY,
+                                               CONNMAN_IPCONFIG_TYPE_IPV6);
+}
+
 static int service_load(struct connman_service *service)
 {
        const char *ident = service->profile;