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