diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2005-12-19 14:23:23 -0800 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2005-12-19 14:23:23 -0800 |
commit | 399c180ac5f0cb66ef9479358e0b8b6bafcbeafe (patch) | |
tree | 4014154b7800e96058d94f78dc34a53681e8d5e5 /net/xfrm/xfrm_state.c | |
parent | 9e999993c71e1506378d26d81f842277aff8a250 (diff) | |
download | op-kernel-dev-399c180ac5f0cb66ef9479358e0b8b6bafcbeafe.zip op-kernel-dev-399c180ac5f0cb66ef9479358e0b8b6bafcbeafe.tar.gz |
[IPSEC]: Perform SA switchover immediately.
When we insert a new xfrm_state which potentially
subsumes an existing one, make sure all cached
bundles are flushed so that the new SA is used
immediately.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/xfrm/xfrm_state.c')
-rw-r--r-- | net/xfrm/xfrm_state.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index 7cf48aa..479effc 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -431,6 +431,8 @@ void xfrm_state_insert(struct xfrm_state *x) spin_lock_bh(&xfrm_state_lock); __xfrm_state_insert(x); spin_unlock_bh(&xfrm_state_lock); + + xfrm_flush_all_bundles(); } EXPORT_SYMBOL(xfrm_state_insert); @@ -478,6 +480,9 @@ out: spin_unlock_bh(&xfrm_state_lock); xfrm_state_put_afinfo(afinfo); + if (!err) + xfrm_flush_all_bundles(); + if (x1) { xfrm_state_delete(x1); xfrm_state_put(x1); |