diff options
Diffstat (limited to 'net/ipv6/exthdrs.c')
| -rw-r--r-- | net/ipv6/exthdrs.c | 41 | 
1 files changed, 14 insertions, 27 deletions
diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c index 0ff2bf12ecd..1e89efd38a0 100644 --- a/net/ipv6/exthdrs.c +++ b/net/ipv6/exthdrs.c @@ -102,7 +102,7 @@ EXPORT_SYMBOL_GPL(ipv6_find_tlv);  struct tlvtype_proc {  	int	type; -	int	(*func)(struct sk_buff **skbp, int offset); +	int	(*func)(struct sk_buff *skb, int offset);  };  /********************* @@ -111,10 +111,8 @@ struct tlvtype_proc {  /* An unknown option is detected, decide what to do */ -static int ip6_tlvopt_unknown(struct sk_buff **skbp, int optoff) +static int ip6_tlvopt_unknown(struct sk_buff *skb, int optoff)  { -	struct sk_buff *skb = *skbp; -  	switch ((skb_network_header(skb)[optoff] & 0xC0) >> 6) {  	case 0: /* ignore */  		return 1; @@ -139,9 +137,8 @@ static int ip6_tlvopt_unknown(struct sk_buff **skbp, int optoff)  /* Parse tlv encoded option header (hop-by-hop or destination) */ -static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff **skbp) +static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff *skb)  { -	struct sk_buff *skb = *skbp;  	struct tlvtype_proc *curr;  	const unsigned char *nh = skb_network_header(skb);  	int off = skb_network_header_len(skb); @@ -172,13 +169,13 @@ static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff **skbp)  					/* type specific length/alignment  					   checks will be performed in the  					   func(). */ -					if (curr->func(skbp, off) == 0) +					if (curr->func(skb, off) == 0)  						return 0;  					break;  				}  			}  			if (curr->type < 0) { -				if (ip6_tlvopt_unknown(skbp, off) == 0) +				if (ip6_tlvopt_unknown(skb, off) == 0)  					return 0;  			}  			break; @@ -198,9 +195,8 @@ bad:   *****************************/  #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE) -static int ipv6_dest_hao(struct sk_buff **skbp, int optoff) +static int ipv6_dest_hao(struct sk_buff *skb, int optoff)  { -	struct sk_buff *skb = *skbp;  	struct ipv6_destopt_hao *hao;  	struct inet6_skb_parm *opt = IP6CB(skb);  	struct ipv6hdr *ipv6h = ipv6_hdr(skb); @@ -271,9 +267,8 @@ static struct tlvtype_proc tlvprocdestopt_lst[] = {  	{-1,			NULL}  }; -static int ipv6_destopt_rcv(struct sk_buff **skbp) +static int ipv6_destopt_rcv(struct sk_buff *skb)  { -	struct sk_buff *skb = *skbp;  	struct inet6_skb_parm *opt = IP6CB(skb);  #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)  	__u16 dstbuf; @@ -295,9 +290,8 @@ static int ipv6_destopt_rcv(struct sk_buff **skbp)  #endif  	dst = dst_clone(skb->dst); -	if (ip6_parse_tlv(tlvprocdestopt_lst, skbp)) { +	if (ip6_parse_tlv(tlvprocdestopt_lst, skb)) {  		dst_release(dst); -		skb = *skbp;  		skb->transport_header += (skb_transport_header(skb)[1] + 1) << 3;  		opt = IP6CB(skb);  #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE) @@ -328,10 +322,8 @@ void __init ipv6_destopt_init(void)    NONE header. No data in packet.   ********************************/ -static int ipv6_nodata_rcv(struct sk_buff **skbp) +static int ipv6_nodata_rcv(struct sk_buff *skb)  { -	struct sk_buff *skb = *skbp; -  	kfree_skb(skb);  	return 0;  } @@ -351,9 +343,8 @@ void __init ipv6_nodata_init(void)    Routing header.   ********************************/ -static int ipv6_rthdr_rcv(struct sk_buff **skbp) +static int ipv6_rthdr_rcv(struct sk_buff *skb)  { -	struct sk_buff *skb = *skbp;  	struct inet6_skb_parm *opt = IP6CB(skb);  	struct in6_addr *addr = NULL;  	struct in6_addr daddr; @@ -565,9 +556,8 @@ static inline struct inet6_dev *ipv6_skb_idev(struct sk_buff *skb)  /* Router Alert as of RFC 2711 */ -static int ipv6_hop_ra(struct sk_buff **skbp, int optoff) +static int ipv6_hop_ra(struct sk_buff *skb, int optoff)  { -	struct sk_buff *skb = *skbp;  	const unsigned char *nh = skb_network_header(skb);  	if (nh[optoff + 1] == 2) { @@ -582,9 +572,8 @@ static int ipv6_hop_ra(struct sk_buff **skbp, int optoff)  /* Jumbo payload */ -static int ipv6_hop_jumbo(struct sk_buff **skbp, int optoff) +static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff)  { -	struct sk_buff *skb = *skbp;  	const unsigned char *nh = skb_network_header(skb);  	u32 pkt_len; @@ -635,9 +624,8 @@ static struct tlvtype_proc tlvprochopopt_lst[] = {  	{ -1, }  }; -int ipv6_parse_hopopts(struct sk_buff **skbp) +int ipv6_parse_hopopts(struct sk_buff *skb)  { -	struct sk_buff *skb = *skbp;  	struct inet6_skb_parm *opt = IP6CB(skb);  	/* @@ -654,8 +642,7 @@ int ipv6_parse_hopopts(struct sk_buff **skbp)  	}  	opt->hop = sizeof(struct ipv6hdr); -	if (ip6_parse_tlv(tlvprochopopt_lst, skbp)) { -		skb = *skbp; +	if (ip6_parse_tlv(tlvprochopopt_lst, skb)) {  		skb->transport_header += (skb_transport_header(skb)[1] + 1) << 3;  		opt = IP6CB(skb);  		opt->nhoff = sizeof(struct ipv6hdr);  |