kernel-pfkey: Also use interface returned by get_nexthop() for IPsec policies

An exception is if the local address is virtual, in which case we want
the route to be via TUN device.
This commit is contained in:
Tobias Brunner
2016-06-10 13:57:27 +02:00
parent d1f8628420
commit 50798628c5
@@ -2315,13 +2315,15 @@ static bool install_route(private_kernel_pfkey_ipsec_t *this,
if (!dst->is_anyaddr(dst))
{
route->gateway = charon->kernel->get_nexthop(charon->kernel, dst, -1,
src, NULL);
src, &route->if_name);
/* if the IP is virtual, we install the route over the interface it has
* been installed on. Otherwise we use the interface we use for IKE, as
* this is required for example on Linux. */
if (is_virtual)
{
free(route->if_name);
route->if_name = NULL;
src = route->src_ip;
}
}