diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
| -rw-r--r-- | net/ipv6/ip6_output.c | 65 | 
1 files changed, 0 insertions, 65 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 3deaa4e2e8e..5552d13ae92 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -544,71 +544,6 @@ static void ip6_copy_metadata(struct sk_buff *to, struct sk_buff *from)  	skb_copy_secmark(to, from);  } -int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr) -{ -	u16 offset = sizeof(struct ipv6hdr); -	struct ipv6_opt_hdr *exthdr = -				(struct ipv6_opt_hdr *)(ipv6_hdr(skb) + 1); -	unsigned int packet_len = skb->tail - skb->network_header; -	int found_rhdr = 0; -	*nexthdr = &ipv6_hdr(skb)->nexthdr; - -	while (offset + 1 <= packet_len) { - -		switch (**nexthdr) { - -		case NEXTHDR_HOP: -			break; -		case NEXTHDR_ROUTING: -			found_rhdr = 1; -			break; -		case NEXTHDR_DEST: -#if IS_ENABLED(CONFIG_IPV6_MIP6) -			if (ipv6_find_tlv(skb, offset, IPV6_TLV_HAO) >= 0) -				break; -#endif -			if (found_rhdr) -				return offset; -			break; -		default : -			return offset; -		} - -		offset += ipv6_optlen(exthdr); -		*nexthdr = &exthdr->nexthdr; -		exthdr = (struct ipv6_opt_hdr *)(skb_network_header(skb) + -						 offset); -	} - -	return offset; -} - -void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt) -{ -	static atomic_t ipv6_fragmentation_id; -	int old, new; - -	if (rt && !(rt->dst.flags & DST_NOPEER)) { -		struct inet_peer *peer; -		struct net *net; - -		net = dev_net(rt->dst.dev); -		peer = inet_getpeer_v6(net->ipv6.peers, &rt->rt6i_dst.addr, 1); -		if (peer) { -			fhdr->identification = htonl(inet_getid(peer, 0)); -			inet_putpeer(peer); -			return; -		} -	} -	do { -		old = atomic_read(&ipv6_fragmentation_id); -		new = old + 1; -		if (!new) -			new = 1; -	} while (atomic_cmpxchg(&ipv6_fragmentation_id, old, new) != old); -	fhdr->identification = htonl(new); -} -  int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *))  {  	struct sk_buff *frag;  |