You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
freifunkist-firmware/target/linux/generic-2.4/patches/625-netfilter_nat_pptp_fix....

53 lines
1.7 KiB

--- a/net/ipv4/netfilter/ip_conntrack_pptp.c
+++ b/net/ipv4/netfilter/ip_conntrack_pptp.c
@@ -134,12 +134,11 @@ static int pptp_expectfn(struct ip_connt
}
/* timeout GRE data connections */
-static int pptp_timeout_related(struct ip_conntrack *ct)
+static int pptp_timeout_related(struct ip_conntrack *ct, const struct iphdr *iph)
{
struct list_head *cur_item, *next;
struct ip_conntrack_expect *exp;
enum ip_conntrack_info ctinfo;
- struct iphdr *iph;
/* FIXME: do we have to lock something ? */
for (cur_item = ct->sibling_list.next;
@@ -245,7 +244,8 @@ pptp_inbound_pkt(struct tcphdr *tcph,
struct pptp_pkt_hdr *pptph,
size_t datalen,
struct ip_conntrack *ct,
- enum ip_conntrack_info ctinfo)
+ enum ip_conntrack_info ctinfo,
+ const struct iphdr *iph)
{
struct PptpControlHeader *ctlh;
union pptp_ctrl_union pptpReq;
@@ -377,7 +377,7 @@ pptp_inbound_pkt(struct tcphdr *tcph,
info->cstate = PPTP_CALL_NONE;
/* untrack this call id, unexpect GRE packets */
- pptp_timeout_related(ct);
+ pptp_timeout_related(ct, iph);
break;
case PPTP_WAN_ERROR_NOTIFY:
@@ -539,7 +539,7 @@ conntrack_pptp_help(const struct iphdr *
info->cstate = PPTP_CALL_NONE;
/* untrack this call id, unexpect GRE packets */
- pptp_timeout_related(ct);
+ pptp_timeout_related(ct, iph);
}
@@ -571,7 +571,7 @@ conntrack_pptp_help(const struct iphdr *
ret = pptp_outbound_pkt(tcph, pptph, datalen, ct, ctinfo);
else
/* server -> client (PAC -> PNS) */
- ret = pptp_inbound_pkt(tcph, pptph, datalen, ct, ctinfo);
+ ret = pptp_inbound_pkt(tcph, pptph, datalen, ct, ctinfo, iph);
DEBUGP("sstate: %d->%d, cstate: %d->%d\n",
oldsstate, info->sstate, oldcstate, info->cstate);
UNLOCK_BH(&ip_pptp_lock);