aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/netfilter/nf_conntrack_reasm.c15
-rw-r--r--net/ipv6/reassembly.c17
2 files changed, 17 insertions, 15 deletions
diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
index 2a0d698b24d5..ad8066200f9d 100644
--- a/net/ipv6/netfilter/nf_conntrack_reasm.c
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
@@ -183,7 +183,7 @@ static void nf_ct_frag6_expire(unsigned long data)
183 183
184 spin_lock(&fq->q.lock); 184 spin_lock(&fq->q.lock);
185 185
186 if (fq->q.last_in & COMPLETE) 186 if (fq->q.last_in & INET_FRAG_COMPLETE)
187 goto out; 187 goto out;
188 188
189 fq_kill(fq); 189 fq_kill(fq);
@@ -225,7 +225,7 @@ static int nf_ct_frag6_queue(struct nf_ct_frag6_queue *fq, struct sk_buff *skb,
225 struct sk_buff *prev, *next; 225 struct sk_buff *prev, *next;
226 int offset, end; 226 int offset, end;
227 227
228 if (fq->q.last_in & COMPLETE) { 228 if (fq->q.last_in & INET_FRAG_COMPLETE) {
229 pr_debug("Allready completed\n"); 229 pr_debug("Allready completed\n");
230 goto err; 230 goto err;
231 } 231 }
@@ -252,11 +252,11 @@ static int nf_ct_frag6_queue(struct nf_ct_frag6_queue *fq, struct sk_buff *skb,
252 * or have different end, the segment is corrupted. 252 * or have different end, the segment is corrupted.
253 */ 253 */
254 if (end < fq->q.len || 254 if (end < fq->q.len ||
255 ((fq->q.last_in & LAST_IN) && end != fq->q.len)) { 255 ((fq->q.last_in & INET_FRAG_LAST_IN) && end != fq->q.len)) {
256 pr_debug("already received last fragment\n"); 256 pr_debug("already received last fragment\n");
257 goto err; 257 goto err;
258 } 258 }
259 fq->q.last_in |= LAST_IN; 259 fq->q.last_in |= INET_FRAG_LAST_IN;
260 fq->q.len = end; 260 fq->q.len = end;
261 } else { 261 } else {
262 /* Check if the fragment is rounded to 8 bytes. 262 /* Check if the fragment is rounded to 8 bytes.
@@ -271,7 +271,7 @@ static int nf_ct_frag6_queue(struct nf_ct_frag6_queue *fq, struct sk_buff *skb,
271 } 271 }
272 if (end > fq->q.len) { 272 if (end > fq->q.len) {
273 /* Some bits beyond end -> corruption. */ 273 /* Some bits beyond end -> corruption. */
274 if (fq->q.last_in & LAST_IN) { 274 if (fq->q.last_in & INET_FRAG_LAST_IN) {
275 pr_debug("last packet already reached.\n"); 275 pr_debug("last packet already reached.\n");
276 goto err; 276 goto err;
277 } 277 }
@@ -383,7 +383,7 @@ static int nf_ct_frag6_queue(struct nf_ct_frag6_queue *fq, struct sk_buff *skb,
383 */ 383 */
384 if (offset == 0) { 384 if (offset == 0) {
385 fq->nhoffset = nhoff; 385 fq->nhoffset = nhoff;
386 fq->q.last_in |= FIRST_IN; 386 fq->q.last_in |= INET_FRAG_FIRST_IN;
387 } 387 }
388 write_lock(&nf_frags.lock); 388 write_lock(&nf_frags.lock);
389 list_move_tail(&fq->q.lru_list, &nf_init_frags.lru_list); 389 list_move_tail(&fq->q.lru_list, &nf_init_frags.lru_list);
@@ -645,7 +645,8 @@ struct sk_buff *nf_ct_frag6_gather(struct sk_buff *skb)
645 goto ret_orig; 645 goto ret_orig;
646 } 646 }
647 647
648 if (fq->q.last_in == (FIRST_IN|LAST_IN) && fq->q.meat == fq->q.len) { 648 if (fq->q.last_in == (INET_FRAG_FIRST_IN | INET_FRAG_LAST_IN) &&
649 fq->q.meat == fq->q.len) {
649 ret_skb = nf_ct_frag6_reasm(fq, dev); 650 ret_skb = nf_ct_frag6_reasm(fq, dev);
650 if (ret_skb == NULL) 651 if (ret_skb == NULL)
651 pr_debug("Can't reassemble fragmented packets\n"); 652 pr_debug("Can't reassemble fragmented packets\n");
diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
index 4e1447634f36..7b247e3a16fe 100644
--- a/net/ipv6/reassembly.c
+++ b/net/ipv6/reassembly.c
@@ -202,7 +202,7 @@ static void ip6_frag_expire(unsigned long data)
202 202
203 spin_lock(&fq->q.lock); 203 spin_lock(&fq->q.lock);
204 204
205 if (fq->q.last_in & COMPLETE) 205 if (fq->q.last_in & INET_FRAG_COMPLETE)
206 goto out; 206 goto out;
207 207
208 fq_kill(fq); 208 fq_kill(fq);
@@ -217,7 +217,7 @@ static void ip6_frag_expire(unsigned long data)
217 rcu_read_unlock(); 217 rcu_read_unlock();
218 218
219 /* Don't send error if the first segment did not arrive. */ 219 /* Don't send error if the first segment did not arrive. */
220 if (!(fq->q.last_in&FIRST_IN) || !fq->q.fragments) 220 if (!(fq->q.last_in & INET_FRAG_FIRST_IN) || !fq->q.fragments)
221 goto out; 221 goto out;
222 222
223 /* 223 /*
@@ -265,7 +265,7 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
265 struct net_device *dev; 265 struct net_device *dev;
266 int offset, end; 266 int offset, end;
267 267
268 if (fq->q.last_in & COMPLETE) 268 if (fq->q.last_in & INET_FRAG_COMPLETE)
269 goto err; 269 goto err;
270 270
271 offset = ntohs(fhdr->frag_off) & ~0x7; 271 offset = ntohs(fhdr->frag_off) & ~0x7;
@@ -294,9 +294,9 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
294 * or have different end, the segment is corrupted. 294 * or have different end, the segment is corrupted.
295 */ 295 */
296 if (end < fq->q.len || 296 if (end < fq->q.len ||
297 ((fq->q.last_in & LAST_IN) && end != fq->q.len)) 297 ((fq->q.last_in & INET_FRAG_LAST_IN) && end != fq->q.len))
298 goto err; 298 goto err;
299 fq->q.last_in |= LAST_IN; 299 fq->q.last_in |= INET_FRAG_LAST_IN;
300 fq->q.len = end; 300 fq->q.len = end;
301 } else { 301 } else {
302 /* Check if the fragment is rounded to 8 bytes. 302 /* Check if the fragment is rounded to 8 bytes.
@@ -314,7 +314,7 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
314 } 314 }
315 if (end > fq->q.len) { 315 if (end > fq->q.len) {
316 /* Some bits beyond end -> corruption. */ 316 /* Some bits beyond end -> corruption. */
317 if (fq->q.last_in & LAST_IN) 317 if (fq->q.last_in & INET_FRAG_LAST_IN)
318 goto err; 318 goto err;
319 fq->q.len = end; 319 fq->q.len = end;
320 } 320 }
@@ -417,10 +417,11 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
417 */ 417 */
418 if (offset == 0) { 418 if (offset == 0) {
419 fq->nhoffset = nhoff; 419 fq->nhoffset = nhoff;
420 fq->q.last_in |= FIRST_IN; 420 fq->q.last_in |= INET_FRAG_FIRST_IN;
421 } 421 }
422 422
423 if (fq->q.last_in == (FIRST_IN | LAST_IN) && fq->q.meat == fq->q.len) 423 if (fq->q.last_in == (INET_FRAG_FIRST_IN | INET_FRAG_LAST_IN) &&
424 fq->q.meat == fq->q.len)
424 return ip6_frag_reasm(fq, prev, dev); 425 return ip6_frag_reasm(fq, prev, dev);
425 426
426 write_lock(&ip6_frags.lock); 427 write_lock(&ip6_frags.lock);