From: Patrik Flykt <[email protected]>

In order to connect a provider/VPN, ConnMan needs to have a
IP network connection through any of the services associated
with a network.
---
 include/service.h |    1 +
 src/service.c     |   27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/include/service.h b/include/service.h
index 36c8658..eb10d94 100644
--- a/include/service.h
+++ b/include/service.h
@@ -94,6 +94,7 @@ void connman_service_unref(struct connman_service *service);
 
 enum connman_service_type connman_service_get_type(struct connman_service 
*service);
 char *connman_service_get_interface(struct connman_service *service);
+connman_bool_t connman_service_connected_network(void);
 
 const char *connman_service_get_domainname(struct connman_service *service);
 char **connman_service_get_nameservers(struct connman_service *service);
diff --git a/src/service.c b/src/service.c
index 51cda8f..8ad33d7 100644
--- a/src/service.c
+++ b/src/service.c
@@ -461,6 +461,33 @@ static connman_bool_t is_connected(struct connman_service 
*service)
        return is_connected_state(service, state);
 }
 
+connman_bool_t connman_service_connected_network(void)
+{
+       GHashTableIter iter;
+       gpointer key, value;
+
+       g_hash_table_iter_init(&iter, service_hash);
+
+       while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
+               GSequenceIter *iter = value;
+               struct connman_service *service = g_sequence_get(iter);
+
+               switch (service->type) {
+               case CONNMAN_SERVICE_TYPE_UNKNOWN:
+               case CONNMAN_SERVICE_TYPE_SYSTEM:
+               case CONNMAN_SERVICE_TYPE_GPS:
+               case CONNMAN_SERVICE_TYPE_VPN:
+               case CONNMAN_SERVICE_TYPE_GADGET:
+                       continue;
+
+               default:
+                       if (is_connected(service) == TRUE)
+                               return TRUE;
+               }
+       }
+       return FALSE;
+}
+
 static void update_nameservers(struct connman_service *service)
 {
        const char *ifname;
-- 
1.7.2.5

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to