From cc8ce72c12fe82290506de485f04da43ec5d4763 Mon Sep 17 00:00:00 2001 From: Patrik Flykt Date: Fri, 30 Sep 2011 12:06:30 +0300 Subject: [PATCH] service: Add interface name matching in __connman_service_lookup(). Fixes BMC#23419 --- src/service.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/service.c b/src/service.c index ae15470..22f8320 100644 --- a/src/service.c +++ b/src/service.c @@ -4588,6 +4588,8 @@ int __connman_service_lookup(const char *pattern, const char **path) { GHashTableIter iter; gpointer key, value; + struct connman_device *device; + const char *ifname; g_hash_table_iter_init(&iter, service_hash); @@ -4600,6 +4602,20 @@ int __connman_service_lookup(const char *pattern, const char **path) *path = (const char *) service->path; return 0; } + + if (service->network == NULL) + continue; + + device = connman_network_get_device(service->network); + if (device == NULL) + continue; + + ifname = connman_device_get_string(device, "Interface"); + if (ifname != NULL && g_strcmp0(ifname, pattern) == 0) { + *path = (const char *) service->path; + return 0; + } + } return -ENXIO; -- 2.7.4