[SK_BUFF]: Introduce skb_network_header_len
[deliverable/linux.git] / net / ipv6 / reassembly.c
index ef29a7bb97cef3b4d422fd0ebaefccd81a6ca970..6dfacfa7a599925b61df3392206ea172116ae0d6 100644 (file)
@@ -679,7 +679,7 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff **skb_in,
        /* Yes, and fold redundant checksum back. 8) */
        if (head->ip_summed == CHECKSUM_COMPLETE)
                head->csum = csum_partial(skb_network_header(head),
-                                         head->h.raw - head->nh.raw,
+                                         skb_network_header_len(head),
                                          head->csum);
 
        rcu_read_lock();
@@ -715,18 +715,20 @@ static int ipv6_frag_rcv(struct sk_buff **skbp)
        /* Jumbo payload inhibits frag. header */
        if (hdr->payload_len==0) {
                IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS);
-               icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, skb->h.raw-skb->nh.raw);
+               icmpv6_param_prob(skb, ICMPV6_HDR_FIELD,
+                                 skb_network_header_len(skb));
                return -1;
        }
        if (!pskb_may_pull(skb, (skb_transport_offset(skb) +
                                 sizeof(struct frag_hdr)))) {
                IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS);
-               icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, skb->h.raw-skb->nh.raw);
+               icmpv6_param_prob(skb, ICMPV6_HDR_FIELD,
+                                 skb_network_header_len(skb));
                return -1;
        }
 
        hdr = ipv6_hdr(skb);
-       fhdr = (struct frag_hdr *)skb->h.raw;
+       fhdr = (struct frag_hdr *)skb_transport_header(skb);
 
        if (!(fhdr->frag_off & htons(0xFFF9))) {
                /* It is not a fragmented frame */
This page took 0.0281940000000001 seconds and 5 git commands to generate.