Service lookup based on interface index
authorSamuel Ortiz <sameo@linux.intel.com>
Fri, 20 Aug 2010 00:08:15 +0000 (02:08 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Fri, 20 Aug 2010 21:25:13 +0000 (23:25 +0200)
This routine allows to go from an interface index to a service pointer.

src/connman.h
src/service.c

index fb9433e..f5b03c8 100644 (file)
@@ -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);
index 4c09054..a57fe23 100644 (file)
@@ -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;