From: Brian Haley Date: Fri, 10 Nov 2006 22:54:51 +0000 (-0800) Subject: [IPv6]: Only modify checksum for UDP X-Git-Tag: v2.6.20-rc2~6^2~13^2~400 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=d3a1be9cba86c4385a5fe46673bbb4730551f454;p=linux-2.6-omap-h63xx.git [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 Signed-off-by: David S. Miller --- diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c index 52cca93ff2f..bd51847acd5 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 len, fl->proto, tmp_csum); icmp6h->icmp6_cksum = tmp_csum; } - if (icmp6h->icmp6_cksum == 0) - icmp6h->icmp6_cksum = -1; ip6_push_pending_frames(sk); out: return err; diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 18a90075f94..813fa1d9686 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, &fl->fl6_dst, total_len, fl->proto, tmp_csum); - if (tmp_csum == 0) + if (tmp_csum == 0 && fl->proto == IPPROTO_UDP) tmp_csum = -1; csum = tmp_csum;