diff options
Diffstat (limited to 'net/ipv6/ndisc.c')
| -rw-r--r-- | net/ipv6/ndisc.c | 17 | 
1 files changed, 9 insertions, 8 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 8b946f56287..f9a85ab594d 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c @@ -760,7 +760,7 @@ static void ndisc_solicit(struct neighbour *neigh, struct sk_buff *skb)  static void ndisc_recv_ns(struct sk_buff *skb)  { -	struct nd_msg *msg = (struct nd_msg *)skb->h.raw; +	struct nd_msg *msg = (struct nd_msg *)skb_transport_header(skb);  	struct in6_addr *saddr = &ipv6_hdr(skb)->saddr;  	struct in6_addr *daddr = &ipv6_hdr(skb)->daddr;  	u8 *lladdr = NULL; @@ -938,7 +938,7 @@ out:  static void ndisc_recv_na(struct sk_buff *skb)  { -	struct nd_msg *msg = (struct nd_msg *)skb->h.raw; +	struct nd_msg *msg = (struct nd_msg *)skb_transport_header(skb);  	struct in6_addr *saddr = &ipv6_hdr(skb)->saddr;  	struct in6_addr *daddr = &ipv6_hdr(skb)->daddr;  	u8 *lladdr = NULL; @@ -1040,7 +1040,7 @@ out:  static void ndisc_recv_rs(struct sk_buff *skb)  { -	struct rs_msg *rs_msg = (struct rs_msg *) skb->h.raw; +	struct rs_msg *rs_msg = (struct rs_msg *)skb_transport_header(skb);  	unsigned long ndoptlen = skb->len - sizeof(*rs_msg);  	struct neighbour *neigh;  	struct inet6_dev *idev; @@ -1097,7 +1097,7 @@ out:  static void ndisc_router_discovery(struct sk_buff *skb)  { -	struct ra_msg *ra_msg = (struct ra_msg *) skb->h.raw; +	struct ra_msg *ra_msg = (struct ra_msg *)skb_transport_header(skb);  	struct neighbour *neigh = NULL;  	struct inet6_dev *in6_dev;  	struct rt6_info *rt = NULL; @@ -1108,7 +1108,8 @@ static void ndisc_router_discovery(struct sk_buff *skb)  	__u8 * opt = (__u8 *)(ra_msg + 1); -	optlen = (skb->tail - skb->h.raw) - sizeof(struct ra_msg); +	optlen = (skb->tail - skb_transport_header(skb)) - +		  sizeof(struct ra_msg);  	if (!(ipv6_addr_type(&ipv6_hdr(skb)->saddr) & IPV6_ADDR_LINKLOCAL)) {  		ND_PRINTK2(KERN_WARNING @@ -1357,7 +1358,7 @@ static void ndisc_redirect_rcv(struct sk_buff *skb)  		return;  	} -	optlen = skb->tail - skb->h.raw; +	optlen = skb->tail - skb_transport_header(skb);  	optlen -= sizeof(struct icmp6hdr) + 2 * sizeof(struct in6_addr);  	if (optlen < 0) { @@ -1584,9 +1585,9 @@ int ndisc_rcv(struct sk_buff *skb)  	if (!pskb_may_pull(skb, skb->len))  		return 0; -	msg = (struct nd_msg *) skb->h.raw; +	msg = (struct nd_msg *)skb_transport_header(skb); -	__skb_push(skb, skb->data-skb->h.raw); +	__skb_push(skb, skb->data - skb_transport_header(skb));  	if (ipv6_hdr(skb)->hop_limit != 255) {  		ND_PRINTK2(KERN_WARNING  |