mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
brcm-2.4: potential fix for pptp nat
SVN-Revision: 15970
This commit is contained in:
parent
d4e02b91d7
commit
6eef580c7e
@ -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);
|
Loading…
Reference in New Issue
Block a user