[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>
This commit is contained in:
Brian Haley 2006-11-10 14:54:51 -08:00 committed by David S. Miller
parent f465e489c4
commit d3a1be9cba
2 changed files with 1 additions and 3 deletions

View File

@ -247,8 +247,6 @@ static int icmpv6_push_pending_frames(struct sock *sk, struct flowi *fl, struct
len, fl->proto, tmp_csum); len, fl->proto, tmp_csum);
icmp6h->icmp6_cksum = tmp_csum; icmp6h->icmp6_cksum = tmp_csum;
} }
if (icmp6h->icmp6_cksum == 0)
icmp6h->icmp6_cksum = -1;
ip6_push_pending_frames(sk); ip6_push_pending_frames(sk);
out: out:
return err; return err;

View File

@ -536,7 +536,7 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,
&fl->fl6_dst, &fl->fl6_dst,
total_len, fl->proto, tmp_csum); total_len, fl->proto, tmp_csum);
if (tmp_csum == 0) if (tmp_csum == 0 && fl->proto == IPPROTO_UDP)
tmp_csum = -1; tmp_csum = -1;
csum = tmp_csum; csum = tmp_csum;