X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fipv4%2Fnetfilter%2Fip_fw_compat_masq.c;h=07fc794c1210c6ccadff9f4d6144f61f1f8f1aa9;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=fbd8b9bfeb288a656261a0278f4af7ca4411a7b1;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/net/ipv4/netfilter/ip_fw_compat_masq.c b/net/ipv4/netfilter/ip_fw_compat_masq.c index fbd8b9bfe..07fc794c1 100644 --- a/net/ipv4/netfilter/ip_fw_compat_masq.c +++ b/net/ipv4/netfilter/ip_fw_compat_masq.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -144,7 +145,8 @@ check_for_demasq(struct sk_buff **pskb) switch ((*pskb)->nh.iph->protocol) { case IPPROTO_ICMP: /* ICMP errors. */ - ct = icmp_error_track(*pskb, &ctinfo, NF_IP_PRE_ROUTING); + protocol->error(*pskb, &ctinfo, NF_IP_PRE_ROUTING); + ct = (struct ip_conntrack *)(*pskb)->nfct; if (ct) { /* We only do SNAT in the compatibility layer. So we can manipulate ICMP errors from @@ -165,7 +167,8 @@ check_for_demasq(struct sk_buff **pskb) case IPPROTO_UDP: IP_NF_ASSERT(((*pskb)->nh.iph->frag_off & htons(IP_OFFSET)) == 0); - if (!get_tuple((*pskb)->nh.iph, *pskb, (*pskb)->nh.iph->ihl*4, &tuple, protocol)) { + if (!ip_ct_get_tuple((*pskb)->nh.iph, *pskb, + (*pskb)->nh.iph->ihl*4, &tuple, protocol)) { if (net_ratelimit()) printk("ip_fw_compat_masq: Can't get tuple\n"); return NF_ACCEPT; @@ -184,7 +187,7 @@ check_for_demasq(struct sk_buff **pskb) NULL, NULL, NULL); /* Put back the reference gained from find_get */ - nf_conntrack_put(&h->ctrack->infos[0]); + nf_conntrack_put(&h->ctrack->ct_general); if (ret == NF_ACCEPT) { struct ip_conntrack *ct; ct = ip_conntrack_get(*pskb, &ctinfo); @@ -203,7 +206,7 @@ check_for_demasq(struct sk_buff **pskb) } else { if (h) /* Put back the reference gained from find_get */ - nf_conntrack_put(&h->ctrack->infos[0]); + nf_conntrack_put(&h->ctrack->ct_general); ret = NF_ACCEPT; }