Changeset 10319


Ignore:
Timestamp:
2008-01-30T08:35:01+01:00 (10 years ago)
Author:
juhosg
Message:

[kernel] netfilter: fix RTSP on 2.6.24

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic-2.6/patches-2.6.24/190-netfilter_rtsp.patch

    r10291 r10319  
    5454+}; 
    5555+ 
    56 +extern unsigned int (*nf_nat_rtsp_hook)(struct sk_buff **pskb, 
     56+extern unsigned int (*nf_nat_rtsp_hook)(struct sk_buff *skb, 
    5757+                                enum ip_conntrack_info ctinfo, 
    5858+                                unsigned int matchoff, unsigned int matchlen, 
     
    442442+static DEFINE_SPINLOCK(rtsp_buffer_lock); 
    443443+ 
    444 +unsigned int (*nf_nat_rtsp_hook)(struct sk_buff **pskb, 
     444+unsigned int (*nf_nat_rtsp_hook)(struct sk_buff *skb, 
    445445+                                enum ip_conntrack_info ctinfo, 
    446446+                                unsigned int matchoff, unsigned int matchlen,struct ip_ct_rtsp_expect* prtspexp, 
     
    636636+ 
    637637+static inline int 
    638 +help_out(struct sk_buff **pskb, unsigned char *rb_ptr, unsigned int datalen, 
     638+help_out(struct sk_buff *skb, unsigned char *rb_ptr, unsigned int datalen, 
    639639+                struct nf_conn *ct, enum ip_conntrack_info ctinfo) 
    640640+{ 
     
    718718+               if (nf_nat_rtsp_hook) 
    719719+                       /* pass the request off to the nat helper */ 
    720 +                       ret = nf_nat_rtsp_hook(pskb, ctinfo, hdrsoff, hdrslen, &expinfo, exp); 
     720+                       ret = nf_nat_rtsp_hook(skb, ctinfo, hdrsoff, hdrslen, &expinfo, exp); 
    721721+               else if (nf_ct_expect_related(exp) != 0) { 
    722722+                       INFOP("nf_ct_expect_related failed\n"); 
     
    733733+ 
    734734+static inline int 
    735 +help_in(struct sk_buff **pskb, size_t pktlen, 
     735+help_in(struct sk_buff *skb, size_t pktlen, 
    736736+ struct nf_conn* ct, enum ip_conntrack_info ctinfo) 
    737737+{ 
     
    739739+} 
    740740+ 
    741 +static int help(struct sk_buff **pskb, unsigned int protoff, 
     741+static int help(struct sk_buff *skb, unsigned int protoff, 
    742742+               struct nf_conn *ct, enum ip_conntrack_info ctinfo)  
    743743+{ 
     
    755755+ 
    756756+       /* Not whole TCP header? */ 
    757 +       th = skb_header_pointer(*pskb,protoff, sizeof(_tcph), &_tcph); 
     757+       th = skb_header_pointer(skb, protoff, sizeof(_tcph), &_tcph); 
    758758+ 
    759759+       if (!th) 
     
    762762+       /* No data ? */ 
    763763+       dataoff = protoff + th->doff*4; 
    764 +       datalen = (*pskb)->len - dataoff; 
    765 +       if (dataoff >= (*pskb)->len) 
     764+       datalen = skb->len - dataoff; 
     765+       if (dataoff >= skb->len) 
    766766+               return NF_ACCEPT; 
    767767+ 
    768768+       spin_lock_bh(&rtsp_buffer_lock); 
    769 +       rb_ptr = skb_header_pointer(*pskb, dataoff, 
    770 +                                   (*pskb)->len - dataoff, rtsp_buffer); 
     769+       rb_ptr = skb_header_pointer(skb, dataoff, 
     770+                                   skb->len - dataoff, rtsp_buffer); 
    771771+       BUG_ON(rb_ptr == NULL); 
    772772+ 
     
    785785+       switch (CTINFO2DIR(ctinfo)) { 
    786786+       case IP_CT_DIR_ORIGINAL: 
    787 +               ret = help_out(pskb, rb_ptr, datalen, ct, ctinfo); 
     787+               ret = help_out(skb, rb_ptr, datalen, ct, ctinfo); 
    788788+               break; 
    789789+       case IP_CT_DIR_REPLY: 
     
    979979+ * In: 
    980980+ *   ct, ctinfo = conntrack context 
    981 + *   pskb       = packet 
     981+ *   skb        = packet 
    982982+ *   tranoff    = Transport header offset from TCP data 
    983983+ *   tranlen    = Transport header length (incl. CRLF) 
     
    993993+                 struct nf_conntrack_expect* exp, 
    994994+                                                                struct ip_ct_rtsp_expect* prtspexp, 
    995 +                 struct sk_buff** pskb, uint tranoff, uint tranlen) 
     995+                 struct sk_buff* skb, uint tranoff, uint tranlen) 
    996996+{ 
    997997+    char*       ptcp; 
     
    10141014+    int     is_stun; 
    10151015+ 
    1016 +    get_skb_tcpdata(*pskb, &ptcp, &tcplen); 
     1016+    get_skb_tcpdata(skb, &ptcp, &tcplen); 
    10171017+    ptran = ptcp+tranoff; 
    10181018+ 
     
    11461146+                { 
    11471147+                    diff = nextfieldoff-off; 
    1148 +                    if (!nf_nat_mangle_tcp_packet(pskb, ct, ctinfo, 
     1148+                    if (!nf_nat_mangle_tcp_packet(skb, ct, ctinfo, 
    11491149+                                                         off, diff, NULL, 0)) 
    11501150+                    { 
     
    11531153+                        return 0; 
    11541154+                    } 
    1155 +                    get_skb_tcpdata(*pskb, &ptcp, &tcplen); 
     1155+                    get_skb_tcpdata(skb, &ptcp, &tcplen); 
    11561156+                    ptran = ptcp+tranoff; 
    11571157+                    tranlen -= diff; 
     
    12161216+                     */ 
    12171217+                    diff = origlen-rbuflen; 
    1218 +                    if (!nf_nat_mangle_tcp_packet(pskb, ct, ctinfo, 
     1218+                    if (!nf_nat_mangle_tcp_packet(skb, ct, ctinfo, 
    12191219+                                              origoff, origlen, rbuf, rbuflen)) 
    12201220+                    { 
     
    12231223+                        return 0; 
    12241224+                    } 
    1225 +                    get_skb_tcpdata(*pskb, &ptcp, &tcplen); 
     1225+                    get_skb_tcpdata(skb, &ptcp, &tcplen); 
    12261226+                    ptran = ptcp+tranoff; 
    12271227+                    tranlen -= diff; 
     
    12411241+ 
    12421242+static uint 
    1243 +help_out(struct sk_buff **pskb, enum ip_conntrack_info ctinfo, 
     1243+help_out(struct sk_buff *skb, enum ip_conntrack_info ctinfo, 
    12441244+        unsigned int matchoff, unsigned int matchlen, struct ip_ct_rtsp_expect* prtspexp,  
    12451245+        struct nf_conntrack_expect* exp) 
     
    12531253+    uint    off; 
    12541254+ 
    1255 +    //struct iphdr* iph = (struct iphdr*)(*pskb)->nh.iph; 
     1255+    //struct iphdr* iph = (struct iphdr*)skb->nh.iph; 
    12561256+    //struct tcphdr* tcph = (struct tcphdr*)((void*)iph + iph->ihl*4); 
    12571257+ 
    1258 +    get_skb_tcpdata(*pskb, &ptcp, &tcplen); 
     1258+    get_skb_tcpdata(skb, &ptcp, &tcplen); 
    12591259+    hdrsoff = matchoff;//exp->seq - ntohl(tcph->seq); 
    12601260+    hdrslen = matchlen; 
     
    12791279+            uint oldtcplen = tcplen; 
    12801280+           DEBUGP("hdr: Transport\n"); 
    1281 +            if (!rtsp_mangle_tran(ctinfo, exp, prtspexp, pskb, lineoff, linelen)) 
     1281+            if (!rtsp_mangle_tran(ctinfo, exp, prtspexp, skb, lineoff, linelen)) 
    12821282+            { 
    12831283+               DEBUGP("hdr: Transport mangle failed"); 
    12841284+                break; 
    12851285+            } 
    1286 +            get_skb_tcpdata(*pskb, &ptcp, &tcplen); 
     1286+            get_skb_tcpdata(skb, &ptcp, &tcplen); 
    12871287+            hdrslen -= (oldtcplen-tcplen); 
    12881288+            off -= (oldtcplen-tcplen); 
     
    12971297+ 
    12981298+static unsigned int 
    1299 +help(struct sk_buff **pskb, enum ip_conntrack_info ctinfo,  
     1299+help(struct sk_buff *skb, enum ip_conntrack_info ctinfo,  
    13001300+     unsigned int matchoff, unsigned int matchlen, struct ip_ct_rtsp_expect* prtspexp, 
    13011301+     struct nf_conntrack_expect* exp) 
     
    13071307+    { 
    13081308+    case IP_CT_DIR_ORIGINAL: 
    1309 +        rc = help_out(pskb, ctinfo, matchoff, matchlen, prtspexp, exp); 
     1309+        rc = help_out(skb, ctinfo, matchoff, matchlen, prtspexp, exp); 
    13101310+        break; 
    13111311+    case IP_CT_DIR_REPLY: 
Note: See TracChangeset for help on using the changeset viewer.