ipvs: fix CHECKSUM_PARTIAL for TUN method
authorJulian Anastasov <ja@ssi.bg>
Sun, 17 Oct 2010 13:29:40 +0000 (16:29 +0300)
committerSimon Horman <horms@verge.net.au>
Thu, 21 Oct 2010 08:51:11 +0000 (10:51 +0200)
  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>
net/netfilter/ipvs/ip_vs_xmit.c

index 94b53b4..63cc0fe 100644 (file)
@@ -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;                                                  \
 })