aboutsummaryrefslogtreecommitdiffstats
path: root/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2014-02-07 11:37:30 +0100
committerTobias Brunner <tobias@strongswan.org>2014-02-12 13:52:01 +0100
commitf0f78b74d4cf111f5fbaac8a581e29e33d782aa6 (patch)
treea2e8d3664dd6bee013ab78edb30f963b0866ba24 /src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c
parent5e75f50b704194c8b1444b7dad4d2e74fe5d51e4 (diff)
downloadstrongswan-f0f78b74d4cf111f5fbaac8a581e29e33d782aa6.tar.bz2
strongswan-f0f78b74d4cf111f5fbaac8a581e29e33d782aa6.tar.xz
kernel-netlink: Don't cache route entries if installation fails
Fixes #500.
Diffstat (limited to 'src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c')
-rw-r--r--src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c
index d27075082..0cbdef1a7 100644
--- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c
+++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c
@@ -1962,10 +1962,13 @@ METHOD(kernel_net_t, add_route, status_t,
this->routes_lock->unlock(this->routes_lock);
return ALREADY_DONE;
}
- found = route_entry_clone(&route);
- this->routes->put(this->routes, found, found);
status = manage_srcroute(this, RTM_NEWROUTE, NLM_F_CREATE | NLM_F_EXCL,
dst_net, prefixlen, gateway, src_ip, if_name);
+ if (status == SUCCESS)
+ {
+ found = route_entry_clone(&route);
+ this->routes->put(this->routes, found, found);
+ }
this->routes_lock->unlock(this->routes_lock);
return status;
}