diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2007-10-18 04:44:34 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-10-18 04:44:34 +0200 |
commit | 2588fe1d782f1686847493ad643157d5d10bf602 (patch) | |
tree | 7513851819330d4ff6aadc9f76b1b45bc03f8f82 /include/net/inet_frag.h | |
parent | [INET]: Omit double hash calculations in xxx_frag_intern (diff) | |
download | linux-2588fe1d782f1686847493ad643157d5d10bf602.tar.xz linux-2588fe1d782f1686847493ad643157d5d10bf602.zip |
[INET]: Consolidate xxx_frag_intern
This routine checks for the existence of a given entry
in the hash table and inserts the new one if needed.
The ->equal callback is used to compare two frag_queue-s
together, but this one is temporary and will be removed
later. The netfilter code and the ipv6 one use the same
routine to compare frags.
The inet_frag_intern() always returns non-NULL pointer,
so convert the inet_frag_queue into protocol specific
one (with the container_of) without any checks.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/inet_frag.h')
-rw-r--r-- | include/net/inet_frag.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/net/inet_frag.h b/include/net/inet_frag.h index 911c2cd02941..133e187fbc98 100644 --- a/include/net/inet_frag.h +++ b/include/net/inet_frag.h @@ -41,6 +41,8 @@ struct inet_frags { unsigned int (*hashfn)(struct inet_frag_queue *); void (*destructor)(struct inet_frag_queue *); void (*skb_free)(struct sk_buff *); + int (*equal)(struct inet_frag_queue *q1, + struct inet_frag_queue *q2); }; void inet_frags_init(struct inet_frags *); @@ -50,6 +52,8 @@ void inet_frag_kill(struct inet_frag_queue *q, struct inet_frags *f); void inet_frag_destroy(struct inet_frag_queue *q, struct inet_frags *f, int *work); int inet_frag_evictor(struct inet_frags *f); +struct inet_frag_queue *inet_frag_intern(struct inet_frag_queue *q, + struct inet_frags *f, unsigned int hash); static inline void inet_frag_put(struct inet_frag_queue *q, struct inet_frags *f) { |