diff --git a/src/libcharon/plugins/updown/updown_listener.c b/src/libcharon/plugins/updown/updown_listener.c index 95d5cded4..c7ee7bf87 100644 --- a/src/libcharon/plugins/updown/updown_listener.c +++ b/src/libcharon/plugins/updown/updown_listener.c @@ -289,7 +289,9 @@ static void invoke_once(private_updown_listener_t *this, ike_sa_t *ike_sa, config->get_name(config)); if (up) { - if (charon->kernel->get_interface(charon->kernel, me, &iface)) + host = charon->kernel->get_nexthop(charon->kernel, other, -1, me, + &iface); + if (host && iface) { cache_iface(this, child_sa->get_reqid(child_sa), iface); } @@ -297,6 +299,7 @@ static void invoke_once(private_updown_listener_t *this, ike_sa_t *ike_sa, { iface = NULL; } + DESTROY_IF(host); } else {