aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Haley <brian.haley@hp.com>2006-11-10 17:54:51 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-12-03 00:22:13 -0500
commitd3a1be9cba86c4385a5fe46673bbb4730551f454 (patch)
tree24bcb9244dcb894c333c33c0f1dd88e1ddcc2267
parentf465e489c457821751f6253abaaf28c10f9d8895 (diff)
[IPv6]: Only modify checksum for UDP
Only change upper-layer checksum from 0 to 0xFFFF for UDP (as RFC 768 states), not for others as RFC 4443 doesn't require it. Signed-off-by: Brian Haley <brian.haley@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv6/icmp.c2
-rw-r--r--net/ipv6/raw.c2
2 files changed, 1 insertions, 3 deletions
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
index 52cca93ff2f8..bd51847acd57 100644
--- a/net/ipv6/icmp.c
+++ b/net/ipv6/icmp.c
@@ -247,8 +247,6 @@ static int icmpv6_push_pending_frames(struct sock *sk, struct flowi *fl, struct
247 len, fl->proto, tmp_csum); 247 len, fl->proto, tmp_csum);
248 icmp6h->icmp6_cksum = tmp_csum; 248 icmp6h->icmp6_cksum = tmp_csum;
249 } 249 }
250 if (icmp6h->icmp6_cksum == 0)
251 icmp6h->icmp6_cksum = -1;
252 ip6_push_pending_frames(sk); 250 ip6_push_pending_frames(sk);
253out: 251out:
254 return err; 252 return err;
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index 18a90075f942..813fa1d96862 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -536,7 +536,7 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,
536 &fl->fl6_dst, 536 &fl->fl6_dst,
537 total_len, fl->proto, tmp_csum); 537 total_len, fl->proto, tmp_csum);
538 538
539 if (tmp_csum == 0) 539 if (tmp_csum == 0 && fl->proto == IPPROTO_UDP)
540 tmp_csum = -1; 540 tmp_csum = -1;
541 541
542 csum = tmp_csum; 542 csum = tmp_csum;