diff -Nru linux-2.4.20/net/ipv4/netfilter/ip_nat_core.c linux-2.4.20-pom2patch/net/ipv4/netfilter/ip_nat_core.c
--- linux-2.4.20/net/ipv4/netfilter/ip_nat_core.c	2003-05-02 12:58:01.000000000 -0500
+++ linux-2.4.20-pom2patch/net/ipv4/netfilter/ip_nat_core.c	2003-05-02 12:59:57.000000000 -0500
@@ -924,7 +924,7 @@
 		   packet, except it was never src/dst reversed, so
 		   where we would normally apply a dst manip, we apply
 		   a src, and vice versa. */
-		if (info->manips[i].hooknum == opposite_hook[hooknum]) {
+		if (info->manips[i].hooknum == hooknum) {
 			DEBUGP("icmp_reply: inner %s -> %u.%u.%u.%u %u\n",
 			       info->manips[i].maniptype == IP_NAT_MANIP_SRC
 			       ? "DST" : "SRC",
@@ -935,9 +935,9 @@
 				  &info->manips[i].manip,
 				  !info->manips[i].maniptype,
 				  &skb->nfcache);
-		/* Outer packet needs to have IP header NATed like
-                   it's a reply. */
-		} else if (info->manips[i].hooknum == hooknum) {
+			/* Outer packet needs to have IP header NATed like
+	                   it's a reply. */
+
 			/* Use mapping to map outer packet: 0 give no
                            per-proto mapping */
 			DEBUGP("icmp_reply: outer %s -> %u.%u.%u.%u\n",
