diff options
Diffstat (limited to 'net/ipv6/reassembly.c')
-rw-r--r-- | net/ipv6/reassembly.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c index 6f9a9046510f..7034c54e5010 100644 --- a/net/ipv6/reassembly.c +++ b/net/ipv6/reassembly.c | |||
@@ -1,9 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * IPv6 fragment reassembly | 2 | * IPv6 fragment reassembly |
3 | * Linux INET6 implementation | 3 | * Linux INET6 implementation |
4 | * | 4 | * |
5 | * Authors: | 5 | * Authors: |
6 | * Pedro Roque <roque@di.fc.ul.pt> | 6 | * Pedro Roque <roque@di.fc.ul.pt> |
7 | * | 7 | * |
8 | * $Id: reassembly.c,v 1.26 2001/03/07 22:00:57 davem Exp $ | 8 | * $Id: reassembly.c,v 1.26 2001/03/07 22:00:57 davem Exp $ |
9 | * | 9 | * |
@@ -15,8 +15,8 @@ | |||
15 | * 2 of the License, or (at your option) any later version. | 15 | * 2 of the License, or (at your option) any later version. |
16 | */ | 16 | */ |
17 | 17 | ||
18 | /* | 18 | /* |
19 | * Fixes: | 19 | * Fixes: |
20 | * Andi Kleen Make it work with multiple hosts. | 20 | * Andi Kleen Make it work with multiple hosts. |
21 | * More RFC compliance. | 21 | * More RFC compliance. |
22 | * | 22 | * |
@@ -343,7 +343,7 @@ static struct frag_queue *ip6_frag_intern(struct frag_queue *fq_in) | |||
343 | hash = ip6qhashfn(fq_in->id, &fq_in->saddr, &fq_in->daddr); | 343 | hash = ip6qhashfn(fq_in->id, &fq_in->saddr, &fq_in->daddr); |
344 | #ifdef CONFIG_SMP | 344 | #ifdef CONFIG_SMP |
345 | hlist_for_each_entry(fq, n, &ip6_frag_hash[hash], list) { | 345 | hlist_for_each_entry(fq, n, &ip6_frag_hash[hash], list) { |
346 | if (fq->id == fq_in->id && | 346 | if (fq->id == fq_in->id && |
347 | ipv6_addr_equal(&fq_in->saddr, &fq->saddr) && | 347 | ipv6_addr_equal(&fq_in->saddr, &fq->saddr) && |
348 | ipv6_addr_equal(&fq_in->daddr, &fq->daddr)) { | 348 | ipv6_addr_equal(&fq_in->daddr, &fq->daddr)) { |
349 | atomic_inc(&fq->refcnt); | 349 | atomic_inc(&fq->refcnt); |
@@ -406,7 +406,7 @@ fq_find(__be32 id, struct in6_addr *src, struct in6_addr *dst, | |||
406 | read_lock(&ip6_frag_lock); | 406 | read_lock(&ip6_frag_lock); |
407 | hash = ip6qhashfn(id, src, dst); | 407 | hash = ip6qhashfn(id, src, dst); |
408 | hlist_for_each_entry(fq, n, &ip6_frag_hash[hash], list) { | 408 | hlist_for_each_entry(fq, n, &ip6_frag_hash[hash], list) { |
409 | if (fq->id == id && | 409 | if (fq->id == id && |
410 | ipv6_addr_equal(src, &fq->saddr) && | 410 | ipv6_addr_equal(src, &fq->saddr) && |
411 | ipv6_addr_equal(dst, &fq->daddr)) { | 411 | ipv6_addr_equal(dst, &fq->daddr)) { |
412 | atomic_inc(&fq->refcnt); | 412 | atomic_inc(&fq->refcnt); |
@@ -420,7 +420,7 @@ fq_find(__be32 id, struct in6_addr *src, struct in6_addr *dst, | |||
420 | } | 420 | } |
421 | 421 | ||
422 | 422 | ||
423 | static void ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb, | 423 | static void ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb, |
424 | struct frag_hdr *fhdr, int nhoff) | 424 | struct frag_hdr *fhdr, int nhoff) |
425 | { | 425 | { |
426 | struct sk_buff *prev, *next; | 426 | struct sk_buff *prev, *next; |
@@ -436,13 +436,13 @@ static void ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb, | |||
436 | if ((unsigned int)end > IPV6_MAXPLEN) { | 436 | if ((unsigned int)end > IPV6_MAXPLEN) { |
437 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), | 437 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), |
438 | IPSTATS_MIB_INHDRERRORS); | 438 | IPSTATS_MIB_INHDRERRORS); |
439 | icmpv6_param_prob(skb,ICMPV6_HDR_FIELD, (u8*)&fhdr->frag_off - skb->nh.raw); | 439 | icmpv6_param_prob(skb,ICMPV6_HDR_FIELD, (u8*)&fhdr->frag_off - skb->nh.raw); |
440 | return; | 440 | return; |
441 | } | 441 | } |
442 | 442 | ||
443 | if (skb->ip_summed == CHECKSUM_COMPLETE) | 443 | if (skb->ip_summed == CHECKSUM_COMPLETE) |
444 | skb->csum = csum_sub(skb->csum, | 444 | skb->csum = csum_sub(skb->csum, |
445 | csum_partial(skb->nh.raw, (u8*)(fhdr+1)-skb->nh.raw, 0)); | 445 | csum_partial(skb->nh.raw, (u8*)(fhdr+1)-skb->nh.raw, 0)); |
446 | 446 | ||
447 | /* Is this the final fragment? */ | 447 | /* Is this the final fragment? */ |
448 | if (!(fhdr->frag_off & htons(IP6_MF))) { | 448 | if (!(fhdr->frag_off & htons(IP6_MF))) { |
@@ -464,7 +464,7 @@ static void ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb, | |||
464 | */ | 464 | */ |
465 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), | 465 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), |
466 | IPSTATS_MIB_INHDRERRORS); | 466 | IPSTATS_MIB_INHDRERRORS); |
467 | icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, | 467 | icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, |
468 | offsetof(struct ipv6hdr, payload_len)); | 468 | offsetof(struct ipv6hdr, payload_len)); |
469 | return; | 469 | return; |
470 | } | 470 | } |
@@ -482,7 +482,7 @@ static void ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb, | |||
482 | /* Point into the IP datagram 'data' part. */ | 482 | /* Point into the IP datagram 'data' part. */ |
483 | if (!pskb_pull(skb, (u8 *) (fhdr + 1) - skb->data)) | 483 | if (!pskb_pull(skb, (u8 *) (fhdr + 1) - skb->data)) |
484 | goto err; | 484 | goto err; |
485 | 485 | ||
486 | if (pskb_trim_rcsum(skb, end - offset)) | 486 | if (pskb_trim_rcsum(skb, end - offset)) |
487 | goto err; | 487 | goto err; |
488 | 488 | ||
@@ -640,7 +640,7 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff **skb_in, | |||
640 | * header in order to calculate ICV correctly. */ | 640 | * header in order to calculate ICV correctly. */ |
641 | nhoff = fq->nhoffset; | 641 | nhoff = fq->nhoffset; |
642 | head->nh.raw[nhoff] = head->h.raw[0]; | 642 | head->nh.raw[nhoff] = head->h.raw[0]; |
643 | memmove(head->head + sizeof(struct frag_hdr), head->head, | 643 | memmove(head->head + sizeof(struct frag_hdr), head->head, |
644 | (head->data - head->head) - sizeof(struct frag_hdr)); | 644 | (head->data - head->head) - sizeof(struct frag_hdr)); |
645 | head->mac.raw += sizeof(struct frag_hdr); | 645 | head->mac.raw += sizeof(struct frag_hdr); |
646 | head->nh.raw += sizeof(struct frag_hdr); | 646 | head->nh.raw += sizeof(struct frag_hdr); |
@@ -695,7 +695,7 @@ out_fail: | |||
695 | 695 | ||
696 | static int ipv6_frag_rcv(struct sk_buff **skbp) | 696 | static int ipv6_frag_rcv(struct sk_buff **skbp) |
697 | { | 697 | { |
698 | struct sk_buff *skb = *skbp; | 698 | struct sk_buff *skb = *skbp; |
699 | struct net_device *dev = skb->dev; | 699 | struct net_device *dev = skb->dev; |
700 | struct frag_hdr *fhdr; | 700 | struct frag_hdr *fhdr; |
701 | struct frag_queue *fq; | 701 | struct frag_queue *fq; |