aboutsummaryrefslogtreecommitdiffstats
path: root/net/netfilter
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2006-08-29 19:44:56 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 17:53:53 -0400
commit84fa7933a33f806bbbaae6775e87459b1ec584c0 (patch)
tree5be404225d90f640997b12f631e9b496b3fd0d61 /net/netfilter
parent8584d6df39db5601965f9bc5e3bf2fea833ad7bb (diff)
[NET]: Replace CHECKSUM_HW by CHECKSUM_PARTIAL/CHECKSUM_COMPLETE
Replace CHECKSUM_HW by CHECKSUM_PARTIAL (for outgoing packets, whose checksum still needs to be completed) and CHECKSUM_COMPLETE (for incoming packets, device supplied full checksum). Patch originally from Herbert Xu, updated by myself for 2.6.18-rc3. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/netfilter')
-rw-r--r--net/netfilter/nf_conntrack_proto_tcp.c3
-rw-r--r--net/netfilter/nf_conntrack_proto_udp.c3
-rw-r--r--net/netfilter/nfnetlink_queue.c6
3 files changed, 5 insertions, 7 deletions
diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
index af8adcba23a..308d2abd7ee 100644
--- a/net/netfilter/nf_conntrack_proto_tcp.c
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
@@ -823,8 +823,7 @@ static int tcp_error(struct sk_buff *skb,
823 823
824 /* Checksum invalid? Ignore. 824 /* Checksum invalid? Ignore.
825 * We skip checking packets on the outgoing path 825 * We skip checking packets on the outgoing path
826 * because the semantic of CHECKSUM_HW is different there 826 * because the checksum is assumed to be correct.
827 * and moreover root might send raw packets.
828 */ 827 */
829 /* FIXME: Source route IP option packets --RR */ 828 /* FIXME: Source route IP option packets --RR */
830 if (nf_conntrack_checksum && 829 if (nf_conntrack_checksum &&
diff --git a/net/netfilter/nf_conntrack_proto_udp.c b/net/netfilter/nf_conntrack_proto_udp.c
index ae07ebe3ab3..d36e03139e8 100644
--- a/net/netfilter/nf_conntrack_proto_udp.c
+++ b/net/netfilter/nf_conntrack_proto_udp.c
@@ -131,8 +131,7 @@ static int udp_error(struct sk_buff *skb, unsigned int dataoff,
131 131
132 /* Checksum invalid? Ignore. 132 /* Checksum invalid? Ignore.
133 * We skip checking packets on the outgoing path 133 * We skip checking packets on the outgoing path
134 * because the semantic of CHECKSUM_HW is different there 134 * because the checksum is assumed to be correct.
135 * and moreover root might send raw packets.
136 * FIXME: Source route IP option packets --RR */ 135 * FIXME: Source route IP option packets --RR */
137 if (nf_conntrack_checksum && 136 if (nf_conntrack_checksum &&
138 ((pf == PF_INET && hooknum == NF_IP_PRE_ROUTING) || 137 ((pf == PF_INET && hooknum == NF_IP_PRE_ROUTING) ||
diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
index 49ef41e34c4..eddfbe4441a 100644
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -377,9 +377,9 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
377 break; 377 break;
378 378
379 case NFQNL_COPY_PACKET: 379 case NFQNL_COPY_PACKET:
380 if (entskb->ip_summed == CHECKSUM_HW && 380 if ((entskb->ip_summed == CHECKSUM_PARTIAL ||
381 (*errp = skb_checksum_help(entskb, 381 entskb->ip_summed == CHECKSUM_COMPLETE) &&
382 outdev == NULL))) { 382 (*errp = skb_checksum_help(entskb))) {
383 spin_unlock_bh(&queue->lock); 383 spin_unlock_bh(&queue->lock);
384 return NULL; 384 return NULL;
385 } 385 }