aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/reassembly.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/reassembly.c')
-rw-r--r--net/ipv6/reassembly.c32
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
423static void ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb, 423static 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
696static int ipv6_frag_rcv(struct sk_buff **skbp) 696static 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;