From 6ca38bb364a54d052178cb1f0361145d1b6952e6 Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Thu, 31 Mar 2011 10:02:25 +0200 Subject: [PATCH] service: Add __connman_service_disconnect_all() --- src/connman.h | 1 + src/service.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/connman.h b/src/connman.h index 01dca1b..d597340 100644 --- a/src/connman.h +++ b/src/connman.h @@ -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); diff --git a/src/service.c b/src/service.c index ae1f6fd..7a9185d 100644 --- a/src/service.c +++ b/src/service.c @@ -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 -- 2.7.4