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:
@@ -2315,13 +2315,15 @@ static bool install_route(private_kernel_pfkey_ipsec_t *this,
|
|||||||
if (!dst->is_anyaddr(dst))
|
if (!dst->is_anyaddr(dst))
|
||||||
{
|
{
|
||||||
route->gateway = charon->kernel->get_nexthop(charon->kernel, dst, -1,
|
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
|
/* 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
|
* been installed on. Otherwise we use the interface we use for IKE, as
|
||||||
* this is required for example on Linux. */
|
* this is required for example on Linux. */
|
||||||
if (is_virtual)
|
if (is_virtual)
|
||||||
{
|
{
|
||||||
|
free(route->if_name);
|
||||||
|
route->if_name = NULL;
|
||||||
src = route->src_ip;
|
src = route->src_ip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user