From 54fa727d7ccdd73f444ac0e6436ab64f534f5243 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 20 Aug 2010 02:08:15 +0200 Subject: [PATCH] Service lookup based on interface index This routine allows to go from an interface index to a service pointer. --- src/connman.h | 1 + src/service.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/connman.h b/src/connman.h index fb9433e..f5b03c8 100644 --- a/src/connman.h +++ b/src/connman.h @@ -454,6 +454,7 @@ const char *__connman_service_default(void); void __connman_service_put(struct connman_service *service); struct connman_service *__connman_service_lookup_from_network(struct connman_network *network); +struct connman_service *__connman_service_lookup_from_index(int index); struct connman_service *__connman_service_create_from_network(struct connman_network *network); struct connman_service *__connman_service_create_from_provider(struct connman_provider *provider); void __connman_service_update_from_network(struct connman_network *network); diff --git a/src/service.c b/src/service.c index 4c09054..a57fe23 100644 --- a/src/service.c +++ b/src/service.c @@ -3277,6 +3277,25 @@ struct connman_service *__connman_service_lookup_from_network(struct connman_net return service; } +struct connman_service *__connman_service_lookup_from_index(int index) +{ + struct connman_service *service; + GSequenceIter *iter; + + iter = g_sequence_get_begin_iter(service_list); + + while (g_sequence_iter_is_end(iter) == FALSE) { + service = g_sequence_get(iter); + + if (connman_ipconfig_get_index(service->ipconfig) == index) + return service; + + iter = g_sequence_iter_next(iter); + } + + return NULL; +} + const char *__connman_service_get_path(struct connman_service *service) { return service->path; -- 2.7.4