|
@@ -131,7 +131,7 @@ void ip6_expire_frag_queue(struct net *net, struct frag_queue *fq,
|
|
|
|
|
|
spin_lock(&fq->q.lock);
|
|
|
|
|
|
- if (fq->q.last_in & INET_FRAG_COMPLETE)
|
|
|
+ if (fq->q.flags & INET_FRAG_COMPLETE)
|
|
|
goto out;
|
|
|
|
|
|
inet_frag_kill(&fq->q, frags);
|
|
@@ -141,13 +141,13 @@ void ip6_expire_frag_queue(struct net *net, struct frag_queue *fq,
|
|
|
if (!dev)
|
|
|
goto out_rcu_unlock;
|
|
|
|
|
|
- if (!(fq->q.last_in & INET_FRAG_EVICTED))
|
|
|
+ if (!(fq->q.flags & INET_FRAG_EVICTED))
|
|
|
IP6_INC_STATS_BH(net, __in6_dev_get(dev),
|
|
|
IPSTATS_MIB_REASMTIMEOUT);
|
|
|
IP6_INC_STATS_BH(net, __in6_dev_get(dev), IPSTATS_MIB_REASMFAILS);
|
|
|
|
|
|
/* Don't send error if the first segment did not arrive. */
|
|
|
- if (!(fq->q.last_in & INET_FRAG_FIRST_IN) || !fq->q.fragments)
|
|
|
+ if (!(fq->q.flags & INET_FRAG_FIRST_IN) || !fq->q.fragments)
|
|
|
goto out_rcu_unlock;
|
|
|
|
|
|
/*
|
|
@@ -209,7 +209,7 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
|
|
|
struct net *net = dev_net(skb_dst(skb)->dev);
|
|
|
u8 ecn;
|
|
|
|
|
|
- if (fq->q.last_in & INET_FRAG_COMPLETE)
|
|
|
+ if (fq->q.flags & INET_FRAG_COMPLETE)
|
|
|
goto err;
|
|
|
|
|
|
offset = ntohs(fhdr->frag_off) & ~0x7;
|
|
@@ -240,9 +240,9 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
|
|
|
* or have different end, the segment is corrupted.
|
|
|
*/
|
|
|
if (end < fq->q.len ||
|
|
|
- ((fq->q.last_in & INET_FRAG_LAST_IN) && end != fq->q.len))
|
|
|
+ ((fq->q.flags & INET_FRAG_LAST_IN) && end != fq->q.len))
|
|
|
goto err;
|
|
|
- fq->q.last_in |= INET_FRAG_LAST_IN;
|
|
|
+ fq->q.flags |= INET_FRAG_LAST_IN;
|
|
|
fq->q.len = end;
|
|
|
} else {
|
|
|
/* Check if the fragment is rounded to 8 bytes.
|
|
@@ -260,7 +260,7 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
|
|
|
}
|
|
|
if (end > fq->q.len) {
|
|
|
/* Some bits beyond end -> corruption. */
|
|
|
- if (fq->q.last_in & INET_FRAG_LAST_IN)
|
|
|
+ if (fq->q.flags & INET_FRAG_LAST_IN)
|
|
|
goto err;
|
|
|
fq->q.len = end;
|
|
|
}
|
|
@@ -335,10 +335,10 @@ found:
|
|
|
*/
|
|
|
if (offset == 0) {
|
|
|
fq->nhoffset = nhoff;
|
|
|
- fq->q.last_in |= INET_FRAG_FIRST_IN;
|
|
|
+ fq->q.flags |= INET_FRAG_FIRST_IN;
|
|
|
}
|
|
|
|
|
|
- if (fq->q.last_in == (INET_FRAG_FIRST_IN | INET_FRAG_LAST_IN) &&
|
|
|
+ if (fq->q.flags == (INET_FRAG_FIRST_IN | INET_FRAG_LAST_IN) &&
|
|
|
fq->q.meat == fq->q.len) {
|
|
|
int res;
|
|
|
unsigned long orefdst = skb->_skb_refdst;
|