• Herbert Xu's avatar
    [IPSEC] Kill spurious hard expire messages · 4666faab
    Herbert Xu authored
    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: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    4666faab
xfrm_state.c 23.8 KB