diff options
Diffstat (limited to 'net/ipv6/ip6_input.c')
-rw-r--r-- | net/ipv6/ip6_input.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c index 61e7a6c8141d..be0ee8a34f9b 100644 --- a/net/ipv6/ip6_input.c +++ b/net/ipv6/ip6_input.c | |||
@@ -96,12 +96,12 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt | |||
96 | if (unlikely(!pskb_may_pull(skb, sizeof(*hdr)))) | 96 | if (unlikely(!pskb_may_pull(skb, sizeof(*hdr)))) |
97 | goto err; | 97 | goto err; |
98 | 98 | ||
99 | hdr = skb->nh.ipv6h; | 99 | hdr = ipv6_hdr(skb); |
100 | 100 | ||
101 | if (hdr->version != 6) | 101 | if (hdr->version != 6) |
102 | goto err; | 102 | goto err; |
103 | 103 | ||
104 | skb->h.raw = (u8 *)(hdr + 1); | 104 | skb->transport_header = skb->network_header + sizeof(*hdr); |
105 | IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr); | 105 | IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr); |
106 | 106 | ||
107 | pkt_len = ntohs(hdr->payload_len); | 107 | pkt_len = ntohs(hdr->payload_len); |
@@ -116,7 +116,7 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt | |||
116 | IP6_INC_STATS_BH(idev, IPSTATS_MIB_INHDRERRORS); | 116 | IP6_INC_STATS_BH(idev, IPSTATS_MIB_INHDRERRORS); |
117 | goto drop; | 117 | goto drop; |
118 | } | 118 | } |
119 | hdr = skb->nh.ipv6h; | 119 | hdr = ipv6_hdr(skb); |
120 | } | 120 | } |
121 | 121 | ||
122 | if (hdr->nexthdr == NEXTHDR_HOP) { | 122 | if (hdr->nexthdr == NEXTHDR_HOP) { |
@@ -160,10 +160,10 @@ static inline int ip6_input_finish(struct sk_buff *skb) | |||
160 | rcu_read_lock(); | 160 | rcu_read_lock(); |
161 | resubmit: | 161 | resubmit: |
162 | idev = ip6_dst_idev(skb->dst); | 162 | idev = ip6_dst_idev(skb->dst); |
163 | if (!pskb_pull(skb, skb->h.raw - skb->data)) | 163 | if (!pskb_pull(skb, skb_transport_offset(skb))) |
164 | goto discard; | 164 | goto discard; |
165 | nhoff = IP6CB(skb)->nhoff; | 165 | nhoff = IP6CB(skb)->nhoff; |
166 | nexthdr = skb->nh.raw[nhoff]; | 166 | nexthdr = skb_network_header(skb)[nhoff]; |
167 | 167 | ||
168 | raw_sk = sk_head(&raw_v6_htable[nexthdr & (MAX_INET_PROTOS - 1)]); | 168 | raw_sk = sk_head(&raw_v6_htable[nexthdr & (MAX_INET_PROTOS - 1)]); |
169 | if (raw_sk && !ipv6_raw_deliver(skb, nexthdr)) | 169 | if (raw_sk && !ipv6_raw_deliver(skb, nexthdr)) |
@@ -181,9 +181,9 @@ resubmit: | |||
181 | indefinitely. */ | 181 | indefinitely. */ |
182 | nf_reset(skb); | 182 | nf_reset(skb); |
183 | 183 | ||
184 | skb_postpull_rcsum(skb, skb->nh.raw, | 184 | skb_postpull_rcsum(skb, skb_network_header(skb), |
185 | skb->h.raw - skb->nh.raw); | 185 | skb_network_header_len(skb)); |
186 | hdr = skb->nh.ipv6h; | 186 | hdr = ipv6_hdr(skb); |
187 | if (ipv6_addr_is_multicast(&hdr->daddr) && | 187 | if (ipv6_addr_is_multicast(&hdr->daddr) && |
188 | !ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, | 188 | !ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, |
189 | &hdr->saddr) && | 189 | &hdr->saddr) && |
@@ -234,7 +234,7 @@ int ip6_mc_input(struct sk_buff *skb) | |||
234 | 234 | ||
235 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INMCASTPKTS); | 235 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INMCASTPKTS); |
236 | 236 | ||
237 | hdr = skb->nh.ipv6h; | 237 | hdr = ipv6_hdr(skb); |
238 | deliver = likely(!(skb->dev->flags & (IFF_PROMISC|IFF_ALLMULTI))) || | 238 | deliver = likely(!(skb->dev->flags & (IFF_PROMISC|IFF_ALLMULTI))) || |
239 | ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, NULL); | 239 | ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, NULL); |
240 | 240 | ||