diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2006-11-16 05:36:50 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-12-03 00:23:39 -0500 |
commit | f6ab028804bdc580fe0915494dbf31f5ea473ca7 (patch) | |
tree | 4bf0fedcfaab7103682bc6209f196104fa9df8fb /net/ipv4 | |
parent | b51655b958dfb1176bfcf99466231fdbef8751ff (diff) |
[NET]: Make mangling a checksum (0 -> 0xffff on the wire) explicit.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/ipvs/ip_vs_proto_udp.c | 6 | ||||
-rw-r--r-- | net/ipv4/netfilter/ip_nat_helper.c | 2 | ||||
-rw-r--r-- | net/ipv4/netfilter/ip_nat_proto_udp.c | 2 | ||||
-rw-r--r-- | net/ipv4/udp.c | 4 |
4 files changed, 7 insertions, 7 deletions
diff --git a/net/ipv4/ipvs/ip_vs_proto_udp.c b/net/ipv4/ipvs/ip_vs_proto_udp.c index 261581e6a814..3647397e416d 100644 --- a/net/ipv4/ipvs/ip_vs_proto_udp.c +++ b/net/ipv4/ipvs/ip_vs_proto_udp.c | |||
@@ -125,7 +125,7 @@ udp_fast_csum_update(struct udphdr *uhdr, __be32 oldip, __be32 newip, | |||
125 | ip_vs_check_diff(oldport ^ htons(0xFFFF), | 125 | ip_vs_check_diff(oldport ^ htons(0xFFFF), |
126 | newport, uhdr->check)); | 126 | newport, uhdr->check)); |
127 | if (!uhdr->check) | 127 | if (!uhdr->check) |
128 | uhdr->check = -1; | 128 | uhdr->check = CSUM_MANGLED_0; |
129 | } | 129 | } |
130 | 130 | ||
131 | static int | 131 | static int |
@@ -173,7 +173,7 @@ udp_snat_handler(struct sk_buff **pskb, | |||
173 | cp->protocol, | 173 | cp->protocol, |
174 | (*pskb)->csum); | 174 | (*pskb)->csum); |
175 | if (udph->check == 0) | 175 | if (udph->check == 0) |
176 | udph->check = -1; | 176 | udph->check = CSUM_MANGLED_0; |
177 | IP_VS_DBG(11, "O-pkt: %s O-csum=%d (+%zd)\n", | 177 | IP_VS_DBG(11, "O-pkt: %s O-csum=%d (+%zd)\n", |
178 | pp->name, udph->check, | 178 | pp->name, udph->check, |
179 | (char*)&(udph->check) - (char*)udph); | 179 | (char*)&(udph->check) - (char*)udph); |
@@ -228,7 +228,7 @@ udp_dnat_handler(struct sk_buff **pskb, | |||
228 | cp->protocol, | 228 | cp->protocol, |
229 | (*pskb)->csum); | 229 | (*pskb)->csum); |
230 | if (udph->check == 0) | 230 | if (udph->check == 0) |
231 | udph->check = -1; | 231 | udph->check = CSUM_MANGLED_0; |
232 | (*pskb)->ip_summed = CHECKSUM_UNNECESSARY; | 232 | (*pskb)->ip_summed = CHECKSUM_UNNECESSARY; |
233 | } | 233 | } |
234 | return 1; | 234 | return 1; |
diff --git a/net/ipv4/netfilter/ip_nat_helper.c b/net/ipv4/netfilter/ip_nat_helper.c index 3bf858480558..3e7fd64c2162 100644 --- a/net/ipv4/netfilter/ip_nat_helper.c +++ b/net/ipv4/netfilter/ip_nat_helper.c | |||
@@ -264,7 +264,7 @@ ip_nat_mangle_udp_packet(struct sk_buff **pskb, | |||
264 | csum_partial((char *)udph, | 264 | csum_partial((char *)udph, |
265 | datalen, 0)); | 265 | datalen, 0)); |
266 | if (!udph->check) | 266 | if (!udph->check) |
267 | udph->check = -1; | 267 | udph->check = CSUM_MANGLED_0; |
268 | } else | 268 | } else |
269 | udph->check = nf_proto_csum_update(*pskb, | 269 | udph->check = nf_proto_csum_update(*pskb, |
270 | htons(oldlen) ^ htons(0xFFFF), | 270 | htons(oldlen) ^ htons(0xFFFF), |
diff --git a/net/ipv4/netfilter/ip_nat_proto_udp.c b/net/ipv4/netfilter/ip_nat_proto_udp.c index 4bbec7730d18..82f8a6ab07ec 100644 --- a/net/ipv4/netfilter/ip_nat_proto_udp.c +++ b/net/ipv4/netfilter/ip_nat_proto_udp.c | |||
@@ -121,7 +121,7 @@ udp_manip_pkt(struct sk_buff **pskb, | |||
121 | *portptr ^ htons(0xFFFF), newport, | 121 | *portptr ^ htons(0xFFFF), newport, |
122 | hdr->check, 0); | 122 | hdr->check, 0); |
123 | if (!hdr->check) | 123 | if (!hdr->check) |
124 | hdr->check = -1; | 124 | hdr->check = CSUM_MANGLED_0; |
125 | } | 125 | } |
126 | *portptr = newport; | 126 | *portptr = newport; |
127 | return 1; | 127 | return 1; |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index f9c4ed7207bb..dc19ba1e73b5 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -441,7 +441,7 @@ static void udp4_hwcsum_outgoing(struct sock *sk, struct sk_buff *skb, | |||
441 | 441 | ||
442 | uh->check = csum_tcpudp_magic(src, dst, len, IPPROTO_UDP, csum); | 442 | uh->check = csum_tcpudp_magic(src, dst, len, IPPROTO_UDP, csum); |
443 | if (uh->check == 0) | 443 | if (uh->check == 0) |
444 | uh->check = -1; | 444 | uh->check = CSUM_MANGLED_0; |
445 | } | 445 | } |
446 | } | 446 | } |
447 | 447 | ||
@@ -490,7 +490,7 @@ int udp_push_pending_frames(struct sock *sk, struct udp_sock *up) | |||
490 | uh->check = csum_tcpudp_magic(fl->fl4_src, fl->fl4_dst, up->len, | 490 | uh->check = csum_tcpudp_magic(fl->fl4_src, fl->fl4_dst, up->len, |
491 | sk->sk_protocol, csum ); | 491 | sk->sk_protocol, csum ); |
492 | if (uh->check == 0) | 492 | if (uh->check == 0) |
493 | uh->check = -1; | 493 | uh->check = CSUM_MANGLED_0; |
494 | 494 | ||
495 | send: | 495 | send: |
496 | err = ip_push_pending_frames(sk); | 496 | err = ip_push_pending_frames(sk); |