]> err.no Git - linux-2.6/blobdiff - net/ipv4/xfrm4_mode_transport.c
Merge Linux 2.6.23
[linux-2.6] / net / ipv4 / xfrm4_mode_transport.c
index 124f24bc4dbce4a9e47c859b9895100975ab0d96..601047161ea6102ff80fb4e89ebd25672dae2378 100644 (file)
@@ -26,9 +26,7 @@ static int xfrm4_transport_output(struct xfrm_state *x, struct sk_buff *skb)
        struct iphdr *iph = ip_hdr(skb);
        int ihl = iph->ihl * 4;
 
-       skb->h.raw = skb->nh.raw;
-       skb->h.raw += ihl;
-
+       skb->transport_header = skb->network_header + ihl;
        skb_push(skb, x->props.header_len);
        skb_reset_network_header(skb);
        memmove(skb_network_header(skb), iph, ihl);
@@ -45,14 +43,15 @@ static int xfrm4_transport_output(struct xfrm_state *x, struct sk_buff *skb)
  */
 static int xfrm4_transport_input(struct xfrm_state *x, struct sk_buff *skb)
 {
-       int ihl = skb->data - skb->h.raw;
+       int ihl = skb->data - skb_transport_header(skb);
 
-       if (skb->h.raw != skb->nh.raw) {
-               memmove(skb->h.raw, skb_network_header(skb), ihl);
-               skb->nh.raw = skb->h.raw;
+       if (skb->transport_header != skb->network_header) {
+               memmove(skb_transport_header(skb),
+                       skb_network_header(skb), ihl);
+               skb->network_header = skb->transport_header;
        }
        ip_hdr(skb)->tot_len = htons(skb->len + ihl);
-       skb->h.raw = skb->data;
+       skb_reset_transport_header(skb);
        return 0;
 }