Do not install routes in the PF_KEY kernel interface if interface lookup failed.
This commit is contained in:
@@ -1795,22 +1795,30 @@ METHOD(kernel_ipsec_t, add_policy, status_t,
|
|||||||
route->dst_net = chunk_clone(policy->src.net->get_address(policy->src.net));
|
route->dst_net = chunk_clone(policy->src.net->get_address(policy->src.net));
|
||||||
route->prefixlen = policy->src.mask;
|
route->prefixlen = policy->src.mask;
|
||||||
|
|
||||||
switch (charon->kernel_interface->add_route(charon->kernel_interface,
|
if (route->if_name)
|
||||||
route->dst_net, route->prefixlen, route->gateway,
|
|
||||||
route->src_ip, route->if_name))
|
|
||||||
{
|
{
|
||||||
default:
|
switch (charon->kernel_interface->add_route(
|
||||||
DBG1(DBG_KNL, "unable to install source route for %H",
|
charon->kernel_interface, route->dst_net,
|
||||||
route->src_ip);
|
route->prefixlen, route->gateway,
|
||||||
/* FALL */
|
route->src_ip, route->if_name))
|
||||||
case ALREADY_DONE:
|
{
|
||||||
/* route exists, do not uninstall */
|
default:
|
||||||
route_entry_destroy(route);
|
DBG1(DBG_KNL, "unable to install source route for %H",
|
||||||
break;
|
route->src_ip);
|
||||||
case SUCCESS:
|
/* FALL */
|
||||||
/* cache the installed route */
|
case ALREADY_DONE:
|
||||||
policy->route = route;
|
/* route exists, do not uninstall */
|
||||||
break;
|
route_entry_destroy(route);
|
||||||
|
break;
|
||||||
|
case SUCCESS:
|
||||||
|
/* cache the installed route */
|
||||||
|
policy->route = route;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
route_entry_destroy(route);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user