浏览代码

[NETFILTER]: Avoid unncessary checksum validation in UDP connection tracking

Signed-off-by: Keir Fraser <Keir.Fraser@xl.cam.ac.uk>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Keir Fraser 20 年之前
父节点
当前提交
e3be8ba792
共有 1 个文件被更改,包括 1 次插入0 次删除
  1. 1 0
      net/ipv4/netfilter/ip_conntrack_proto_udp.c

+ 1 - 0
net/ipv4/netfilter/ip_conntrack_proto_udp.c

@@ -120,6 +120,7 @@ static int udp_error(struct sk_buff *skb, enum ip_conntrack_info *ctinfo,
 	 * and moreover root might send raw packets.
 	 * and moreover root might send raw packets.
 	 * FIXME: Source route IP option packets --RR */
 	 * FIXME: Source route IP option packets --RR */
 	if (hooknum == NF_IP_PRE_ROUTING
 	if (hooknum == NF_IP_PRE_ROUTING
+	    && skb->ip_summed != CHECKSUM_UNNECESSARY
 	    && csum_tcpudp_magic(iph->saddr, iph->daddr, udplen, IPPROTO_UDP,
 	    && csum_tcpudp_magic(iph->saddr, iph->daddr, udplen, IPPROTO_UDP,
 			         skb->ip_summed == CHECKSUM_HW ? skb->csum
 			         skb->ip_summed == CHECKSUM_HW ? skb->csum
 			      	 : skb_checksum(skb, iph->ihl*4, udplen, 0))) {
 			      	 : skb_checksum(skb, iph->ihl*4, udplen, 0))) {