patch-2.1.15 linux/net/ipv4/ip_masq_app.c

Next file: linux/net/ipv4/ip_masq_ftp.c
Previous file: linux/net/ipv4/ip_masq.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.14/linux/net/ipv4/ip_masq_app.c linux/net/ipv4/ip_masq_app.c
@@ -327,7 +327,7 @@
         if ( (mapp = ms->app) == NULL)
                 return 0;
         
-        iph = (*skb_p)->h.iph;
+        iph = (*skb_p)->nh.iph;
         th = (struct tcphdr *)&(((char *)iph)[iph->ihl*4]);
         
         /*
@@ -390,7 +390,7 @@
         if ( (mapp = ms->app) == NULL)
                 return 0;
         
-        iph = (*skb_p)->h.iph;
+        iph = (*skb_p)->nh.iph;
         th = (struct tcphdr *)&(((char *)iph)[iph->ihl*4]);
         
         /*
@@ -488,7 +488,7 @@
 
 int ip_masq_app_init(void)
 {
-        
+
         register_symtab (&ip_masq_app_syms);
 #ifdef CONFIG_PROC_FS        
 	proc_net_register(&proc_net_ip_masq_app);
@@ -539,7 +539,6 @@
                         return skb;
 
                 }
-                n_skb->free = skb->free;
                 skb_reserve(n_skb, MAX_HEADER);
                 skb_put(n_skb, skb->len + diff);
 
@@ -549,14 +548,15 @@
                  *	like skb->protocol (PPP driver wants it).
                  */
                 offset = n_skb->data - skb->data;
+                n_skb->nh.raw = skb->nh.raw + offset;
                 n_skb->h.raw = skb->h.raw + offset;
                 n_skb->when = skb->when;
                 n_skb->dev = skb->dev;
                 n_skb->mac.raw = skb->mac.raw + offset;
-                n_skb->ip_hdr = (struct iphdr *)(((char *)skb->ip_hdr)+offset);
                 n_skb->pkt_type = skb->pkt_type;
                 n_skb->protocol = skb->protocol;
                 n_skb->ip_summed = skb->ip_summed;
+		n_skb->dst = dst_clone(skb->dst);
 
                 /*
                  * Copy pkt in new buffer
@@ -600,7 +600,7 @@
                 /*
                  * 	update ip header
                  */
-                iph = n_skb->h.iph;
+                iph = n_skb->nh.iph;
                 iph->check = 0;
                 iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl);
                 iph->tot_len = htons(skb_len + diff);

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov