nfsd: minor write_pool_threads exit cleanup
[safe/jmp/linux-2.6] / net / ipv4 / xfrm4_mode_transport.c
index dc8834e..fd840c7 100644 (file)
  *
  * The IP header will be moved forward to make space for the encapsulation
  * header.
- *
- * On exit, skb->h will be set to the start of the payload to be processed
- * by x->type->output and skb->nh will be set to the top IP header.
  */
 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_push(skb, x->props.header_len);
-       skb_reset_network_header(skb);
+       skb_set_network_header(skb, -x->props.header_len);
+       skb->mac_header = skb->network_header +
+                         offsetof(struct iphdr, protocol);
+       skb->transport_header = skb->network_header + ihl;
+       __skb_pull(skb, ihl);
        memmove(skb_network_header(skb), iph, ihl);
        return 0;
 }
@@ -47,10 +44,10 @@ static int xfrm4_transport_input(struct xfrm_state *x, struct sk_buff *skb)
 {
        int ihl = skb->data - skb_transport_header(skb);
 
-       if (skb->h.raw != skb->nh.raw) {
+       if (skb->transport_header != skb->network_header) {
                memmove(skb_transport_header(skb),
                        skb_network_header(skb), ihl);
-               skb->nh.raw = skb->h.raw;
+               skb->network_header = skb->transport_header;
        }
        ip_hdr(skb)->tot_len = htons(skb->len + ihl);
        skb_reset_transport_header(skb);