[IPSEC] Kill spurious hard expire messages
authorHerbert Xu <herbert@gondor.apana.org.au>
Sun, 19 Jun 2005 05:43:22 +0000 (22:43 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 19 Jun 2005 05:43:22 +0000 (22:43 -0700)
commit4666faab095230ec8aa62da6c33391287f281154
tree36d61925bb02dd7de537ff65d35190eeebbf47fa
parent26b15dad9f1c19d6d4f7b999b07eaa6d98e4b375
[IPSEC] Kill spurious hard expire messages

This patch ensures that the hard state/policy expire notifications are
only sent when the state/policy is successfully removed from their
respective tables.

As it is, it's possible for a state/policy to both expire through
reaching a hard limit, as well as being deleted by the user.

Note that this behaviour isn't actually forbidden by RFC 2367.
However, it is a quality of implementation issue.

As an added bonus, the restructuring in this patch will help
eventually in moving the expire notifications from softirq
context into process context, thus improving their reliability.

One important side-effect from this change is that SAs reaching
their hard byte/packet limits are now deleted immediately, just
like SAs that have reached their hard time limits.

Previously they were announced immediately but only deleted after
30 seconds.

This is bad because it prevents the system from issuing an ACQUIRE
command until the existing state was deleted by the user or expires
after the time is up.

In the scenario where the expire notification was lost this introduces
a 30 second delay into the system for no good reason.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
include/net/xfrm.h
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_state.c