diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-05-21 19:35:10 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-05-21 19:35:10 +0000 |
commit | 58a43af3506199c82f06fcd9980a9846c168461d (patch) | |
tree | 2429bebec4b10b4c7d548bcfc21736cfad66dd55 /target/linux/generic-2.4/patches | |
parent | 7637d8284b9b55248ad05ef89154b0770550bc48 (diff) |
brcm-2.4: potential fix for pptp nat
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15970 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic-2.4/patches')
-rw-r--r-- | target/linux/generic-2.4/patches/625-netfilter_nat_pptp_fix.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/target/linux/generic-2.4/patches/625-netfilter_nat_pptp_fix.patch b/target/linux/generic-2.4/patches/625-netfilter_nat_pptp_fix.patch new file mode 100644 index 000000000..c65c9614d --- /dev/null +++ b/target/linux/generic-2.4/patches/625-netfilter_nat_pptp_fix.patch @@ -0,0 +1,53 @@ +--- 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); |