From: Gabor Juhos <juhosg@openwrt.org>
Date: Wed, 30 Jan 2008 07:35:01 +0000 (+0000)
Subject: netfilter: fix RTSP on 2.6.24
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=3dae29dc4a5d7b16d812dc758e16d999cda1ffd7;p=openwrt%2Fstaging%2Fwigyori.git

netfilter: fix RTSP on 2.6.24

SVN-Revision: 10319
---

diff --git a/target/linux/generic-2.6/patches-2.6.24/190-netfilter_rtsp.patch b/target/linux/generic-2.6/patches-2.6.24/190-netfilter_rtsp.patch
index 0dc8596e5d..56d0b7df25 100644
--- a/target/linux/generic-2.6/patches-2.6.24/190-netfilter_rtsp.patch
+++ b/target/linux/generic-2.6/patches-2.6.24/190-netfilter_rtsp.patch
@@ -53,7 +53,7 @@ Index: linux-2.6.23-rc9/include/linux/netfilter/nf_conntrack_rtsp.h
 +#endif
 +};
 +
-+extern unsigned int (*nf_nat_rtsp_hook)(struct sk_buff **pskb,
++extern unsigned int (*nf_nat_rtsp_hook)(struct sk_buff *skb,
 +				 enum ip_conntrack_info ctinfo,
 +				 unsigned int matchoff, unsigned int matchlen,
 +				 struct ip_ct_rtsp_expect *prtspexp,
@@ -441,7 +441,7 @@ Index: linux-2.6.23-rc9/net/netfilter/nf_conntrack_rtsp.c
 +static char *rtsp_buffer;
 +static DEFINE_SPINLOCK(rtsp_buffer_lock);
 +
-+unsigned int (*nf_nat_rtsp_hook)(struct sk_buff **pskb,
++unsigned int (*nf_nat_rtsp_hook)(struct sk_buff *skb,
 +				 enum ip_conntrack_info ctinfo,
 +				 unsigned int matchoff, unsigned int matchlen,struct ip_ct_rtsp_expect* prtspexp,
 +				 struct nf_conntrack_expect *exp);
@@ -635,7 +635,7 @@ Index: linux-2.6.23-rc9/net/netfilter/nf_conntrack_rtsp.c
 +/* outbound packet: client->server */
 +
 +static inline int
-+help_out(struct sk_buff **pskb, unsigned char *rb_ptr, unsigned int datalen,
++help_out(struct sk_buff *skb, unsigned char *rb_ptr, unsigned int datalen,
 +                struct nf_conn *ct, enum ip_conntrack_info ctinfo)
 +{
 +	struct ip_ct_rtsp_expect expinfo;
@@ -717,7 +717,7 @@ Index: linux-2.6.23-rc9/net/netfilter/nf_conntrack_rtsp.c
 +
 +		if (nf_nat_rtsp_hook)
 +			/* pass the request off to the nat helper */
-+			ret = nf_nat_rtsp_hook(pskb, ctinfo, hdrsoff, hdrslen, &expinfo, exp);
++			ret = nf_nat_rtsp_hook(skb, ctinfo, hdrsoff, hdrslen, &expinfo, exp);
 +		else if (nf_ct_expect_related(exp) != 0) {
 +			INFOP("nf_ct_expect_related failed\n");
 +			ret  = NF_DROP;
@@ -732,13 +732,13 @@ Index: linux-2.6.23-rc9/net/netfilter/nf_conntrack_rtsp.c
 +
 +
 +static inline int
-+help_in(struct sk_buff **pskb, size_t pktlen,
++help_in(struct sk_buff *skb, size_t pktlen,
 + struct nf_conn* ct, enum ip_conntrack_info ctinfo)
 +{
 + return NF_ACCEPT;
 +}
 +
-+static int help(struct sk_buff **pskb, unsigned int protoff,
++static int help(struct sk_buff *skb, unsigned int protoff,
 +		struct nf_conn *ct, enum ip_conntrack_info ctinfo) 
 +{
 +	struct tcphdr _tcph, *th;
@@ -754,20 +754,20 @@ Index: linux-2.6.23-rc9/net/netfilter/nf_conntrack_rtsp.c
 +	}
 +
 +	/* Not whole TCP header? */
-+	th = skb_header_pointer(*pskb,protoff, sizeof(_tcph), &_tcph);
++	th = skb_header_pointer(skb, protoff, sizeof(_tcph), &_tcph);
 +
 +	if (!th)
 +		return NF_ACCEPT;
 +   
 +	/* No data ? */
 +	dataoff = protoff + th->doff*4;
-+	datalen = (*pskb)->len - dataoff;
-+	if (dataoff >= (*pskb)->len)
++	datalen = skb->len - dataoff;
++	if (dataoff >= skb->len)
 +		return NF_ACCEPT;
 +
 +	spin_lock_bh(&rtsp_buffer_lock);
-+	rb_ptr = skb_header_pointer(*pskb, dataoff,
-+				    (*pskb)->len - dataoff, rtsp_buffer);
++	rb_ptr = skb_header_pointer(skb, dataoff,
++				    skb->len - dataoff, rtsp_buffer);
 +	BUG_ON(rb_ptr == NULL);
 +
 +#if 0
@@ -784,7 +784,7 @@ Index: linux-2.6.23-rc9/net/netfilter/nf_conntrack_rtsp.c
 +
 +	switch (CTINFO2DIR(ctinfo)) {
 +	case IP_CT_DIR_ORIGINAL:
-+		ret = help_out(pskb, rb_ptr, datalen, ct, ctinfo);
++		ret = help_out(skb, rb_ptr, datalen, ct, ctinfo);
 +		break;
 +	case IP_CT_DIR_REPLY:
 +		DEBUGP("IP_CT_DIR_REPLY\n");
@@ -978,7 +978,7 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 + *
 + * In:
 + *   ct, ctinfo = conntrack context
-+ *   pskb       = packet
++ *   skb        = packet
 + *   tranoff    = Transport header offset from TCP data
 + *   tranlen    = Transport header length (incl. CRLF)
 + *   rport_lo   = replacement low  port (host endian)
@@ -992,7 +992,7 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 +rtsp_mangle_tran(enum ip_conntrack_info ctinfo,
 +                 struct nf_conntrack_expect* exp,
 +								 struct ip_ct_rtsp_expect* prtspexp,
-+                 struct sk_buff** pskb, uint tranoff, uint tranlen)
++                 struct sk_buff* skb, uint tranoff, uint tranlen)
 +{
 +    char*       ptcp;
 +    uint        tcplen;
@@ -1013,7 +1013,7 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 +    uint    extaddrlen;
 +    int     is_stun;
 +
-+    get_skb_tcpdata(*pskb, &ptcp, &tcplen);
++    get_skb_tcpdata(skb, &ptcp, &tcplen);
 +    ptran = ptcp+tranoff;
 +
 +    if (tranoff+tranlen > tcplen || tcplen-tranoff < tranlen ||
@@ -1145,14 +1145,14 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 +                if (dstact == DSTACT_STRIP || (dstact == DSTACT_AUTO && !is_stun))
 +                {
 +                    diff = nextfieldoff-off;
-+                    if (!nf_nat_mangle_tcp_packet(pskb, ct, ctinfo,
++                    if (!nf_nat_mangle_tcp_packet(skb, ct, ctinfo,
 +                                                         off, diff, NULL, 0))
 +                    {
 +                        /* mangle failed, all we can do is bail */
 +			nf_ct_unexpect_related(exp);
 +                        return 0;
 +                    }
-+                    get_skb_tcpdata(*pskb, &ptcp, &tcplen);
++                    get_skb_tcpdata(skb, &ptcp, &tcplen);
 +                    ptran = ptcp+tranoff;
 +                    tranlen -= diff;
 +                    nextparamoff -= diff;
@@ -1215,14 +1215,14 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 +                     * parameter 4 below is offset from start of tcp data.
 +                     */
 +                    diff = origlen-rbuflen;
-+                    if (!nf_nat_mangle_tcp_packet(pskb, ct, ctinfo,
++                    if (!nf_nat_mangle_tcp_packet(skb, ct, ctinfo,
 +                                              origoff, origlen, rbuf, rbuflen))
 +                    {
 +                        /* mangle failed, all we can do is bail */
 +			nf_ct_unexpect_related(exp);
 +                        return 0;
 +                    }
-+                    get_skb_tcpdata(*pskb, &ptcp, &tcplen);
++                    get_skb_tcpdata(skb, &ptcp, &tcplen);
 +                    ptran = ptcp+tranoff;
 +                    tranlen -= diff;
 +                    nextparamoff -= diff;
@@ -1240,7 +1240,7 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 +}
 +
 +static uint
-+help_out(struct sk_buff **pskb, enum ip_conntrack_info ctinfo,
++help_out(struct sk_buff *skb, enum ip_conntrack_info ctinfo,
 +	 unsigned int matchoff, unsigned int matchlen, struct ip_ct_rtsp_expect* prtspexp, 
 +	 struct nf_conntrack_expect* exp)
 +{
@@ -1252,10 +1252,10 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 +    uint    linelen;
 +    uint    off;
 +
-+    //struct iphdr* iph = (struct iphdr*)(*pskb)->nh.iph;
++    //struct iphdr* iph = (struct iphdr*)skb->nh.iph;
 +    //struct tcphdr* tcph = (struct tcphdr*)((void*)iph + iph->ihl*4);
 +
-+    get_skb_tcpdata(*pskb, &ptcp, &tcplen);
++    get_skb_tcpdata(skb, &ptcp, &tcplen);
 +    hdrsoff = matchoff;//exp->seq - ntohl(tcph->seq);
 +    hdrslen = matchlen;
 +    off = hdrsoff;
@@ -1278,12 +1278,12 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 +        {
 +            uint oldtcplen = tcplen;
 +	    DEBUGP("hdr: Transport\n");
-+            if (!rtsp_mangle_tran(ctinfo, exp, prtspexp, pskb, lineoff, linelen))
++            if (!rtsp_mangle_tran(ctinfo, exp, prtspexp, skb, lineoff, linelen))
 +            {
 +		DEBUGP("hdr: Transport mangle failed");
 +                break;
 +            }
-+            get_skb_tcpdata(*pskb, &ptcp, &tcplen);
++            get_skb_tcpdata(skb, &ptcp, &tcplen);
 +            hdrslen -= (oldtcplen-tcplen);
 +            off -= (oldtcplen-tcplen);
 +            lineoff -= (oldtcplen-tcplen);
@@ -1296,7 +1296,7 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 +}
 +
 +static unsigned int
-+help(struct sk_buff **pskb, enum ip_conntrack_info ctinfo, 
++help(struct sk_buff *skb, enum ip_conntrack_info ctinfo, 
 +     unsigned int matchoff, unsigned int matchlen, struct ip_ct_rtsp_expect* prtspexp,
 +     struct nf_conntrack_expect* exp)
 +{
@@ -1306,7 +1306,7 @@ Index: linux-2.6.23-rc9/net/ipv4/netfilter/nf_nat_rtsp.c
 +    switch (dir)
 +    {
 +    case IP_CT_DIR_ORIGINAL:
-+        rc = help_out(pskb, ctinfo, matchoff, matchlen, prtspexp, exp);
++        rc = help_out(skb, ctinfo, matchoff, matchlen, prtspexp, exp);
 +        break;
 +    case IP_CT_DIR_REPLY:
 +	DEBUGP("unmangle ! %u\n", ctinfo);