Commit 2c71474b authored by David S. Miller's avatar David S. Miller

[NETFILTER]: Fix icmp_reply_translation args.

parent 9767ae13
...@@ -35,7 +35,7 @@ extern unsigned int ...@@ -35,7 +35,7 @@ extern unsigned int
do_masquerade(struct sk_buff **pskb, const struct net_device *dev); do_masquerade(struct sk_buff **pskb, const struct net_device *dev);
extern unsigned int extern unsigned int
check_for_masq_error(struct sk_buff *pskb); check_for_masq_error(struct sk_buff **pskb);
extern unsigned int extern unsigned int
check_for_demasq(struct sk_buff **pskb); check_for_demasq(struct sk_buff **pskb);
...@@ -167,7 +167,7 @@ fw_in(unsigned int hooknum, ...@@ -167,7 +167,7 @@ fw_in(unsigned int hooknum,
/* Handle ICMP errors from client here */ /* Handle ICMP errors from client here */
if ((*pskb)->nh.iph->protocol == IPPROTO_ICMP if ((*pskb)->nh.iph->protocol == IPPROTO_ICMP
&& (*pskb)->nfct) && (*pskb)->nfct)
check_for_masq_error(*pskb); check_for_masq_error(pskb);
} }
return NF_ACCEPT; return NF_ACCEPT;
......
...@@ -103,19 +103,19 @@ do_masquerade(struct sk_buff **pskb, const struct net_device *dev) ...@@ -103,19 +103,19 @@ do_masquerade(struct sk_buff **pskb, const struct net_device *dev)
} }
void void
check_for_masq_error(struct sk_buff *skb) check_for_masq_error(struct sk_buff **pskb)
{ {
enum ip_conntrack_info ctinfo; enum ip_conntrack_info ctinfo;
struct ip_conntrack *ct; struct ip_conntrack *ct;
ct = ip_conntrack_get(skb, &ctinfo); ct = ip_conntrack_get(*pskb, &ctinfo);
/* Wouldn't be here if not tracked already => masq'ed ICMP /* Wouldn't be here if not tracked already => masq'ed ICMP
ping or error related to masq'd connection */ ping or error related to masq'd connection */
IP_NF_ASSERT(ct); IP_NF_ASSERT(ct);
if (ctinfo == IP_CT_RELATED) { if (ctinfo == IP_CT_RELATED) {
icmp_reply_translation(skb, ct, NF_IP_PRE_ROUTING, icmp_reply_translation(pskb, ct, NF_IP_PRE_ROUTING,
CTINFO2DIR(ctinfo)); CTINFO2DIR(ctinfo));
icmp_reply_translation(skb, ct, NF_IP_POST_ROUTING, icmp_reply_translation(pskb, ct, NF_IP_POST_ROUTING,
CTINFO2DIR(ctinfo)); CTINFO2DIR(ctinfo));
} }
} }
...@@ -152,10 +152,10 @@ check_for_demasq(struct sk_buff **pskb) ...@@ -152,10 +152,10 @@ check_for_demasq(struct sk_buff **pskb)
&& skb_linearize(*pskb, GFP_ATOMIC) != 0) && skb_linearize(*pskb, GFP_ATOMIC) != 0)
return NF_DROP; return NF_DROP;
icmp_reply_translation(*pskb, ct, icmp_reply_translation(pskb, ct,
NF_IP_PRE_ROUTING, NF_IP_PRE_ROUTING,
CTINFO2DIR(ctinfo)); CTINFO2DIR(ctinfo));
icmp_reply_translation(*pskb, ct, icmp_reply_translation(pskb, ct,
NF_IP_POST_ROUTING, NF_IP_POST_ROUTING,
CTINFO2DIR(ctinfo)); CTINFO2DIR(ctinfo));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment