[PATCH] don't try to do any NAT on untracked connections
authorHarald Welte <laforge@netfilter.org>
Mon, 8 Aug 2005 09:50:55 +0000 (11:50 +0200)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 8 Aug 2005 18:48:28 +0000 (11:48 -0700)
With the introduction of 'rustynat' in 2.6.11, the old tricks of preventing
NAT of 'untracked' connections (e.g. NOTRACK target in 'raw' table) are no
longer sufficient.

The ip_conntrack_untracked.status |= IPS_NAT_DONE_MASK effectively
prevents iteration of the 'nat' table, but doesn't prevent nat_packet()
to be executed.  Since nr_manips is gone in 'rustynat', nat_packet() now
implicitly thinks that it has to do NAT on the packet.

This patch fixes that problem by explicitly checking for
ip_conntrack_untracked in ip_nat_fn().

Signed-off-by: Harald Welte <laforge@netfilter.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
net/ipv4/netfilter/ip_nat_standalone.c

index bc59d0d6e89ef5bf16512ea6cc0a5d246d6a4f2d..91d5ea1dbbc921b2a891283a53f7abb69783fd98 100644 (file)
@@ -102,6 +102,10 @@ ip_nat_fn(unsigned int hooknum,
                return NF_ACCEPT;
        }
 
+       /* Don't try to NAT if this packet is not conntracked */
+       if (ct == &ip_conntrack_untracked)
+               return NF_ACCEPT;
+
        switch (ctinfo) {
        case IP_CT_RELATED:
        case IP_CT_RELATED+IP_CT_IS_REPLY: