]> Pileus Git - ~andy/linux/blobdiff - net/ipv6/esp6.c
[SK_BUFF]: Introduce skb_transport_offset()
[~andy/linux] / net / ipv6 / esp6.c
index 7aff380e74ef9f9eea0be386b8f420b6783db4e6..35905867ded161b46b88a67a0523de6c0daf0e7b 100644 (file)
 static int esp6_output(struct xfrm_state *x, struct sk_buff *skb)
 {
        int err;
-       int hdr_len;
        struct ipv6hdr *top_iph;
        struct ipv6_esp_hdr *esph;
        struct crypto_blkcipher *tfm;
        struct blkcipher_desc desc;
-       struct esp_data *esp;
        struct sk_buff *trailer;
        int blksize;
        int clen;
        int alen;
        int nfrags;
-
-       esp = x->data;
-       hdr_len = skb->h.raw - skb->data +
-                 sizeof(*esph) + esp->conf.ivlen;
+       struct esp_data *esp = x->data;
+       int hdr_len = (skb_transport_offset(skb) +
+                      sizeof(*esph) + esp->conf.ivlen);
 
        /* Strip IP+ESP header. */
        __skb_pull(skb, hdr_len);