|
@@ -165,25 +165,13 @@ icmp_error_message(struct sk_buff *skb,
|
|
|
|
|
|
h = nf_conntrack_find_get(&innertuple);
|
|
|
if (!h) {
|
|
|
- /* Locally generated ICMPs will match inverted if they
|
|
|
- haven't been SNAT'ed yet */
|
|
|
- /* FIXME: NAT code has to handle half-done double NAT --RR */
|
|
|
- if (hooknum == NF_IP_LOCAL_OUT)
|
|
|
- h = nf_conntrack_find_get(&origtuple);
|
|
|
-
|
|
|
- if (!h) {
|
|
|
- pr_debug("icmp_error_message: no match\n");
|
|
|
- return -NF_ACCEPT;
|
|
|
- }
|
|
|
-
|
|
|
- /* Reverse direction from that found */
|
|
|
- if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
|
|
|
- *ctinfo += IP_CT_IS_REPLY;
|
|
|
- } else {
|
|
|
- if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
|
|
|
- *ctinfo += IP_CT_IS_REPLY;
|
|
|
+ pr_debug("icmp_error_message: no match\n");
|
|
|
+ return -NF_ACCEPT;
|
|
|
}
|
|
|
|
|
|
+ if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
|
|
|
+ *ctinfo += IP_CT_IS_REPLY;
|
|
|
+
|
|
|
/* Update skb to refer to this connection */
|
|
|
skb->nfct = &nf_ct_tuplehash_to_ctrack(h)->ct_general;
|
|
|
skb->nfctinfo = *ctinfo;
|