diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-04-25 18:04:18 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-25 22:25:31 -0700 | 
| commit | 9c70220b73908f64792422a2c39c593c4792f2c5 (patch) | |
| tree | 2090ea10aaa2714a5e095bae8cc02e743c378a3a /net/ipv6/ndisc.c | |
| parent | a27ef749e7be3b06fb58df53d94eb97a21f18707 (diff) | |
| download | olio-linux-3.10-9c70220b73908f64792422a2c39c593c4792f2c5.tar.xz olio-linux-3.10-9c70220b73908f64792422a2c39c593c4792f2c5.zip  | |
[SK_BUFF]: Introduce skb_transport_header(skb)
For the places where we need a pointer to the transport header, it is
still legal to touch skb->h.raw directly if just adding to,
subtracting from or setting it to another layer header.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
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  |