diff options
-rw-r--r-- | src/libcharon/plugins/lookip/lookip_listener.c | 7 | ||||
-rw-r--r-- | src/libcharon/plugins/lookip/lookip_listener.h | 5 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/libcharon/plugins/lookip/lookip_listener.c b/src/libcharon/plugins/lookip/lookip_listener.c index 9be4e09ea..91d1235ec 100644 --- a/src/libcharon/plugins/lookip/lookip_listener.c +++ b/src/libcharon/plugins/lookip/lookip_listener.c @@ -224,11 +224,12 @@ METHOD(listener_t, ike_updown, bool, return TRUE; } -METHOD(lookip_listener_t, lookup, void, +METHOD(lookip_listener_t, lookup, int, private_lookip_listener_t *this, host_t *vip, lookip_callback_t cb, void *user) { entry_t *entry; + int matches = 0; this->lock->read_lock(this->lock); if (vip) @@ -237,6 +238,7 @@ METHOD(lookip_listener_t, lookup, void, if (entry) { cb(user, TRUE, entry->vip, entry->other, entry->id, entry->name); + matches ++; } } else @@ -247,10 +249,13 @@ METHOD(lookip_listener_t, lookup, void, while (enumerator->enumerate(enumerator, &vip, &entry)) { cb(user, TRUE, entry->vip, entry->other, entry->id, entry->name); + matches++; } enumerator->destroy(enumerator); } this->lock->unlock(this->lock); + + return matches; } METHOD(lookip_listener_t, add_listener, void, diff --git a/src/libcharon/plugins/lookip/lookip_listener.h b/src/libcharon/plugins/lookip/lookip_listener.h index 63378fbb8..8d1278a5f 100644 --- a/src/libcharon/plugins/lookip/lookip_listener.h +++ b/src/libcharon/plugins/lookip/lookip_listener.h @@ -58,9 +58,10 @@ struct lookip_listener_t { * @param vip virtual IP to look up, NULL to get all entries * @param cb callback function to invoke * @param user user data to pass to callback function + * @return number of matches */ - void (*lookup)(lookip_listener_t *this, host_t *vip, - lookip_callback_t cb, void *user); + int (*lookup)(lookip_listener_t *this, host_t *vip, + lookip_callback_t cb, void *user); /** * Register a listener function that gets notified about virtual IP changes. |