[NETFILTER]: Don't checksum CHECKSUM_UNNECESSARY skbs in TCP connection tracking
authorPatrick McHardy <kaber@trash.net>
Tue, 3 May 2005 21:23:50 +0000 (14:23 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 May 2005 21:23:50 +0000 (14:23 -0700)
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/netfilter/ip_conntrack_proto_tcp.c

index 2b87c1974be605d5bdb1ee769188d7e03fb2ddc8..721ddbf522b422d554479a7ab15c0955798f16ee 100644 (file)
@@ -819,6 +819,7 @@ static int tcp_error(struct sk_buff *skb,
         */
        /* FIXME: Source route IP option packets --RR */
        if (hooknum == NF_IP_PRE_ROUTING
+           && skb->ip_summed != CHECKSUM_UNNECESSARY
            && csum_tcpudp_magic(iph->saddr, iph->daddr, tcplen, IPPROTO_TCP,
                                 skb->ip_summed == CHECKSUM_HW ? skb->csum
                                 : skb_checksum(skb, iph->ihl*4, tcplen, 0))) {