diff options
Diffstat (limited to 'include/net/flow.h')
-rw-r--r-- | include/net/flow.h | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/include/net/flow.h b/include/net/flow.h index 809970b7dfee..bb08692a20b0 100644 --- a/include/net/flow.h +++ b/include/net/flow.h | |||
@@ -86,11 +86,26 @@ struct flowi { | |||
86 | 86 | ||
87 | struct net; | 87 | struct net; |
88 | struct sock; | 88 | struct sock; |
89 | typedef int (*flow_resolve_t)(struct net *net, struct flowi *key, u16 family, | 89 | struct flow_cache_ops; |
90 | u8 dir, void **objp, atomic_t **obj_refp); | 90 | |
91 | struct flow_cache_object { | ||
92 | const struct flow_cache_ops *ops; | ||
93 | }; | ||
94 | |||
95 | struct flow_cache_ops { | ||
96 | struct flow_cache_object *(*get)(struct flow_cache_object *); | ||
97 | int (*check)(struct flow_cache_object *); | ||
98 | void (*delete)(struct flow_cache_object *); | ||
99 | }; | ||
100 | |||
101 | typedef struct flow_cache_object *(*flow_resolve_t)( | ||
102 | struct net *net, struct flowi *key, u16 family, | ||
103 | u8 dir, struct flow_cache_object *oldobj, void *ctx); | ||
104 | |||
105 | extern struct flow_cache_object *flow_cache_lookup( | ||
106 | struct net *net, struct flowi *key, u16 family, | ||
107 | u8 dir, flow_resolve_t resolver, void *ctx); | ||
91 | 108 | ||
92 | extern void *flow_cache_lookup(struct net *net, struct flowi *key, u16 family, | ||
93 | u8 dir, flow_resolve_t resolver); | ||
94 | extern void flow_cache_flush(void); | 109 | extern void flow_cache_flush(void); |
95 | extern atomic_t flow_cache_genid; | 110 | extern atomic_t flow_cache_genid; |
96 | 111 | ||