aboutsummaryrefslogtreecommitdiffstats
path: root/net/netfilter/ipvs
diff options
context:
space:
mode:
authorJulian Anastasov <ja@ssi.bg>2010-10-17 16:29:40 +0300
committerSimon Horman <horms@verge.net.au>2010-10-21 10:51:11 +0200
commit4256f1aaa662697c1faa0984b7a698c2c8c57735 (patch)
treef54bf7b9183169422eb926b613411f07e94bf95c /net/netfilter/ipvs
parentipvs: stop ICMP from FORWARD to local (diff)
downloadlinux-dev-4256f1aaa662697c1faa0984b7a698c2c8c57735.tar.xz
linux-dev-4256f1aaa662697c1faa0984b7a698c2c8c57735.zip
ipvs: fix CHECKSUM_PARTIAL for TUN method
The recent change in IP_VS_XMIT_TUNNEL to set CHECKSUM_NONE is not correct. After adding IPIP header skb->csum becomes invalid but the CHECKSUM_PARTIAL case must be supported. So, use skb_forward_csum() which is most suitable for us to allow local clients to send IPIP to remote real server. Signed-off-by: Julian Anastasov <ja@ssi.bg> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'net/netfilter/ipvs')
-rw-r--r--net/netfilter/ipvs/ip_vs_xmit.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
index 94b53b441028..63cc0feaaef6 100644
--- a/net/netfilter/ipvs/ip_vs_xmit.c
+++ b/net/netfilter/ipvs/ip_vs_xmit.c
@@ -222,7 +222,7 @@ ip_vs_dst_reset(struct ip_vs_dest *dest)
__ret = ip_vs_confirm_conntrack(skb, cp); \
if (__ret == NF_ACCEPT) { \
nf_reset(skb); \
- (skb)->ip_summed = CHECKSUM_NONE; \
+ skb_forward_csum(skb); \
} \
__ret; \
})