flow: virtualize flow cache entry methods
This allows to validate the cached object before returning it. It also allows to destruct object properly, if the last reference was held in flow cache. This is also a prepartion for caching bundles in the flow cache. In return for virtualizing the methods, we save on: - not having to regenerate the whole flow cache on policy removal: each flow matching a killed policy gets refreshed as the getter function notices it smartly. - we do not have to call flow_cache_flush from policy gc, since the flow cache now properly deletes the object if it had any references Signed-off-by: Timo Teras <timo.teras@iki.fi> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
8020eb82d4
commit
fe1a5f031e
@ -19,6 +19,7 @@
|
||||
#include <net/route.h>
|
||||
#include <net/ipv6.h>
|
||||
#include <net/ip6_fib.h>
|
||||
#include <net/flow.h>
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
@ -481,6 +482,7 @@ struct xfrm_policy {
|
||||
atomic_t refcnt;
|
||||
struct timer_list timer;
|
||||
|
||||
struct flow_cache_object flo;
|
||||
u32 priority;
|
||||
u32 index;
|
||||
struct xfrm_mark mark;
|
||||
|
Reference in New Issue
Block a user