service: Add __connman_service_disconnect_all()
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Thu, 31 Mar 2011 08:02:25 +0000 (10:02 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 31 Mar 2011 10:28:49 +0000 (12:28 +0200)
src/connman.h
src/service.c

index 01dca1b..d597340 100644 (file)
@@ -517,6 +517,7 @@ int __connman_service_request_login(struct connman_service *service);
 int __connman_service_lookup(const char *pattern, const char **path);
 int __connman_service_connect(struct connman_service *service);
 int __connman_service_disconnect(struct connman_service *service);
+int __connman_service_disconnect_all(void);
 int __connman_service_create_and_connect(DBusMessage *msg);
 void __connman_service_auto_connect(void);
 struct connman_service *__connman_service_connect_type(enum connman_service_type type);
index ae1f6fd..7a9185d 100644 (file)
@@ -3908,6 +3908,30 @@ int __connman_service_disconnect(struct connman_service *service)
        return err;
 }
 
+int __connman_service_disconnect_all(void)
+{
+       GSequenceIter *iter;
+
+       DBG("");
+
+       iter = g_sequence_get_begin_iter(service_list);
+
+       while (g_sequence_iter_is_end(iter) == FALSE) {
+               struct connman_service *service = g_sequence_get(iter);
+
+               service->ignore = TRUE;
+
+               set_reconnect_state(service, FALSE);
+
+               __connman_service_disconnect(service);
+
+               iter = g_sequence_iter_next(iter);
+       }
+
+       return 0;
+
+}
+
 /**
  * __connman_service_lookup:
  * @pattern: search pattern