|
@@ -168,13 +168,14 @@ out:
|
|
|
/* Creation primitives. */
|
|
|
|
|
|
static __inline__ struct nf_ct_frag6_queue *
|
|
|
-fq_find(__be32 id, struct in6_addr *src, struct in6_addr *dst)
|
|
|
+fq_find(__be32 id, u32 user, struct in6_addr *src, struct in6_addr *dst)
|
|
|
{
|
|
|
struct inet_frag_queue *q;
|
|
|
struct ip6_create_arg arg;
|
|
|
unsigned int hash;
|
|
|
|
|
|
arg.id = id;
|
|
|
+ arg.user = user;
|
|
|
arg.src = src;
|
|
|
arg.dst = dst;
|
|
|
|
|
@@ -559,7 +560,7 @@ find_prev_fhdr(struct sk_buff *skb, u8 *prevhdrp, int *prevhoff, int *fhoff)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-struct sk_buff *nf_ct_frag6_gather(struct sk_buff *skb)
|
|
|
+struct sk_buff *nf_ct_frag6_gather(struct sk_buff *skb, u32 user)
|
|
|
{
|
|
|
struct sk_buff *clone;
|
|
|
struct net_device *dev = skb->dev;
|
|
@@ -605,7 +606,7 @@ struct sk_buff *nf_ct_frag6_gather(struct sk_buff *skb)
|
|
|
if (atomic_read(&nf_init_frags.mem) > nf_init_frags.high_thresh)
|
|
|
nf_ct_frag6_evictor();
|
|
|
|
|
|
- fq = fq_find(fhdr->identification, &hdr->saddr, &hdr->daddr);
|
|
|
+ fq = fq_find(fhdr->identification, user, &hdr->saddr, &hdr->daddr);
|
|
|
if (fq == NULL) {
|
|
|
pr_debug("Can't find and can't create new queue\n");
|
|
|
goto ret_orig;
|