ipv6: Remove privacy config option.
The code for privacy extentions is very mature, and making it configurable only gives marginal memory/code savings in exchange for obfuscation and hard to read code via CPP ifdef'ery. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									d5d45d4294
								
							
						
					
					
						commit
						5d9efa7ee9
					
				| @ -21,13 +21,11 @@ struct ipv6_devconf { | |||||||
| 	__s32		force_mld_version; | 	__s32		force_mld_version; | ||||||
| 	__s32		mldv1_unsolicited_report_interval; | 	__s32		mldv1_unsolicited_report_interval; | ||||||
| 	__s32		mldv2_unsolicited_report_interval; | 	__s32		mldv2_unsolicited_report_interval; | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	__s32		use_tempaddr; | 	__s32		use_tempaddr; | ||||||
| 	__s32		temp_valid_lft; | 	__s32		temp_valid_lft; | ||||||
| 	__s32		temp_prefered_lft; | 	__s32		temp_prefered_lft; | ||||||
| 	__s32		regen_max_retry; | 	__s32		regen_max_retry; | ||||||
| 	__s32		max_desync_factor; | 	__s32		max_desync_factor; | ||||||
| #endif |  | ||||||
| 	__s32		max_addresses; | 	__s32		max_addresses; | ||||||
| 	__s32		accept_ra_defrtr; | 	__s32		accept_ra_defrtr; | ||||||
| 	__s32		accept_ra_pinfo; | 	__s32		accept_ra_pinfo; | ||||||
|  | |||||||
| @ -66,11 +66,10 @@ struct inet6_ifaddr { | |||||||
| 	struct hlist_node	addr_lst; | 	struct hlist_node	addr_lst; | ||||||
| 	struct list_head	if_list; | 	struct list_head	if_list; | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	struct list_head	tmp_list; | 	struct list_head	tmp_list; | ||||||
| 	struct inet6_ifaddr	*ifpub; | 	struct inet6_ifaddr	*ifpub; | ||||||
| 	int			regen_count; | 	int			regen_count; | ||||||
| #endif | 
 | ||||||
| 	bool			tokenized; | 	bool			tokenized; | ||||||
| 
 | 
 | ||||||
| 	struct rcu_head		rcu; | 	struct rcu_head		rcu; | ||||||
| @ -192,11 +191,9 @@ struct inet6_dev { | |||||||
| 	__u32			if_flags; | 	__u32			if_flags; | ||||||
| 	int			dead; | 	int			dead; | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	u8			rndid[8]; | 	u8			rndid[8]; | ||||||
| 	struct timer_list	regen_timer; | 	struct timer_list	regen_timer; | ||||||
| 	struct list_head	tempaddr_list; | 	struct list_head	tempaddr_list; | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| 	struct in6_addr		token; | 	struct in6_addr		token; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -21,24 +21,6 @@ menuconfig IPV6 | |||||||
| 
 | 
 | ||||||
| if IPV6 | if IPV6 | ||||||
| 
 | 
 | ||||||
| config IPV6_PRIVACY |  | ||||||
| 	bool "IPv6: Privacy Extensions (RFC 3041) support" |  | ||||||
| 	---help--- |  | ||||||
| 	  Privacy Extensions for Stateless Address Autoconfiguration in IPv6 |  | ||||||
| 	  support.  With this option, additional periodically-altered |  | ||||||
| 	  pseudo-random global-scope unicast address(es) will be assigned to |  | ||||||
| 	  your interface(s). |  | ||||||
| 	 |  | ||||||
| 	  We use our standard pseudo-random algorithm to generate the |  | ||||||
|           randomized interface identifier, instead of one described in RFC 3041. |  | ||||||
| 
 |  | ||||||
| 	  By default the kernel does not generate temporary addresses. |  | ||||||
| 	  To use temporary addresses, do |  | ||||||
| 	 |  | ||||||
| 	        echo 2 >/proc/sys/net/ipv6/conf/all/use_tempaddr  |  | ||||||
| 
 |  | ||||||
| 	  See <file:Documentation/networking/ip-sysctl.txt> for details. |  | ||||||
| 
 |  | ||||||
| config IPV6_ROUTER_PREF | config IPV6_ROUTER_PREF | ||||||
| 	bool "IPv6: Router Preference (RFC 4191) support" | 	bool "IPv6: Router Preference (RFC 4191) support" | ||||||
| 	---help--- | 	---help--- | ||||||
|  | |||||||
| @ -83,11 +83,7 @@ | |||||||
| #include <linux/if_tunnel.h> | #include <linux/if_tunnel.h> | ||||||
| #include <linux/rtnetlink.h> | #include <linux/rtnetlink.h> | ||||||
| #include <linux/netconf.h> | #include <linux/netconf.h> | ||||||
| 
 |  | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| #include <linux/random.h> | #include <linux/random.h> | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #include <linux/uaccess.h> | #include <linux/uaccess.h> | ||||||
| #include <asm/unaligned.h> | #include <asm/unaligned.h> | ||||||
| 
 | 
 | ||||||
| @ -124,11 +120,9 @@ static inline void addrconf_sysctl_unregister(struct inet6_dev *idev) | |||||||
| } | } | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| static void __ipv6_regen_rndid(struct inet6_dev *idev); | static void __ipv6_regen_rndid(struct inet6_dev *idev); | ||||||
| static void __ipv6_try_regen_rndid(struct inet6_dev *idev, struct in6_addr *tmpaddr); | static void __ipv6_try_regen_rndid(struct inet6_dev *idev, struct in6_addr *tmpaddr); | ||||||
| static void ipv6_regen_rndid(unsigned long data); | static void ipv6_regen_rndid(unsigned long data); | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| static int ipv6_generate_eui64(u8 *eui, struct net_device *dev); | static int ipv6_generate_eui64(u8 *eui, struct net_device *dev); | ||||||
| static int ipv6_count_addresses(struct inet6_dev *idev); | static int ipv6_count_addresses(struct inet6_dev *idev); | ||||||
| @ -183,13 +177,11 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = { | |||||||
| 	.rtr_solicits		= MAX_RTR_SOLICITATIONS, | 	.rtr_solicits		= MAX_RTR_SOLICITATIONS, | ||||||
| 	.rtr_solicit_interval	= RTR_SOLICITATION_INTERVAL, | 	.rtr_solicit_interval	= RTR_SOLICITATION_INTERVAL, | ||||||
| 	.rtr_solicit_delay	= MAX_RTR_SOLICITATION_DELAY, | 	.rtr_solicit_delay	= MAX_RTR_SOLICITATION_DELAY, | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	.use_tempaddr 		= 0, | 	.use_tempaddr 		= 0, | ||||||
| 	.temp_valid_lft		= TEMP_VALID_LIFETIME, | 	.temp_valid_lft		= TEMP_VALID_LIFETIME, | ||||||
| 	.temp_prefered_lft	= TEMP_PREFERRED_LIFETIME, | 	.temp_prefered_lft	= TEMP_PREFERRED_LIFETIME, | ||||||
| 	.regen_max_retry	= REGEN_MAX_RETRY, | 	.regen_max_retry	= REGEN_MAX_RETRY, | ||||||
| 	.max_desync_factor	= MAX_DESYNC_FACTOR, | 	.max_desync_factor	= MAX_DESYNC_FACTOR, | ||||||
| #endif |  | ||||||
| 	.max_addresses		= IPV6_MAX_ADDRESSES, | 	.max_addresses		= IPV6_MAX_ADDRESSES, | ||||||
| 	.accept_ra_defrtr	= 1, | 	.accept_ra_defrtr	= 1, | ||||||
| 	.accept_ra_pinfo	= 1, | 	.accept_ra_pinfo	= 1, | ||||||
| @ -221,13 +213,11 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = { | |||||||
| 	.rtr_solicits		= MAX_RTR_SOLICITATIONS, | 	.rtr_solicits		= MAX_RTR_SOLICITATIONS, | ||||||
| 	.rtr_solicit_interval	= RTR_SOLICITATION_INTERVAL, | 	.rtr_solicit_interval	= RTR_SOLICITATION_INTERVAL, | ||||||
| 	.rtr_solicit_delay	= MAX_RTR_SOLICITATION_DELAY, | 	.rtr_solicit_delay	= MAX_RTR_SOLICITATION_DELAY, | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	.use_tempaddr		= 0, | 	.use_tempaddr		= 0, | ||||||
| 	.temp_valid_lft		= TEMP_VALID_LIFETIME, | 	.temp_valid_lft		= TEMP_VALID_LIFETIME, | ||||||
| 	.temp_prefered_lft	= TEMP_PREFERRED_LIFETIME, | 	.temp_prefered_lft	= TEMP_PREFERRED_LIFETIME, | ||||||
| 	.regen_max_retry	= REGEN_MAX_RETRY, | 	.regen_max_retry	= REGEN_MAX_RETRY, | ||||||
| 	.max_desync_factor	= MAX_DESYNC_FACTOR, | 	.max_desync_factor	= MAX_DESYNC_FACTOR, | ||||||
| #endif |  | ||||||
| 	.max_addresses		= IPV6_MAX_ADDRESSES, | 	.max_addresses		= IPV6_MAX_ADDRESSES, | ||||||
| 	.accept_ra_defrtr	= 1, | 	.accept_ra_defrtr	= 1, | ||||||
| 	.accept_ra_pinfo	= 1, | 	.accept_ra_pinfo	= 1, | ||||||
| @ -371,7 +361,6 @@ static struct inet6_dev *ipv6_add_dev(struct net_device *dev) | |||||||
| 	} | 	} | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	INIT_LIST_HEAD(&ndev->tempaddr_list); | 	INIT_LIST_HEAD(&ndev->tempaddr_list); | ||||||
| 	setup_timer(&ndev->regen_timer, ipv6_regen_rndid, (unsigned long)ndev); | 	setup_timer(&ndev->regen_timer, ipv6_regen_rndid, (unsigned long)ndev); | ||||||
| 	if ((dev->flags&IFF_LOOPBACK) || | 	if ((dev->flags&IFF_LOOPBACK) || | ||||||
| @ -384,7 +373,7 @@ static struct inet6_dev *ipv6_add_dev(struct net_device *dev) | |||||||
| 		in6_dev_hold(ndev); | 		in6_dev_hold(ndev); | ||||||
| 		ipv6_regen_rndid((unsigned long) ndev); | 		ipv6_regen_rndid((unsigned long) ndev); | ||||||
| 	} | 	} | ||||||
| #endif | 
 | ||||||
| 	ndev->token = in6addr_any; | 	ndev->token = in6addr_any; | ||||||
| 
 | 
 | ||||||
| 	if (netif_running(dev) && addrconf_qdisc_ok(dev)) | 	if (netif_running(dev) && addrconf_qdisc_ok(dev)) | ||||||
| @ -865,12 +854,10 @@ ipv6_add_addr(struct inet6_dev *idev, const struct in6_addr *addr, | |||||||
| 	/* Add to inet6_dev unicast addr list. */ | 	/* Add to inet6_dev unicast addr list. */ | ||||||
| 	ipv6_link_dev_addr(idev, ifa); | 	ipv6_link_dev_addr(idev, ifa); | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	if (ifa->flags&IFA_F_TEMPORARY) { | 	if (ifa->flags&IFA_F_TEMPORARY) { | ||||||
| 		list_add(&ifa->tmp_list, &idev->tempaddr_list); | 		list_add(&ifa->tmp_list, &idev->tempaddr_list); | ||||||
| 		in6_ifa_hold(ifa); | 		in6_ifa_hold(ifa); | ||||||
| 	} | 	} | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| 	in6_ifa_hold(ifa); | 	in6_ifa_hold(ifa); | ||||||
| 	write_unlock(&idev->lock); | 	write_unlock(&idev->lock); | ||||||
| @ -913,7 +900,7 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp) | |||||||
| 	spin_unlock_bh(&addrconf_hash_lock); | 	spin_unlock_bh(&addrconf_hash_lock); | ||||||
| 
 | 
 | ||||||
| 	write_lock_bh(&idev->lock); | 	write_lock_bh(&idev->lock); | ||||||
| #ifdef CONFIG_IPV6_PRIVACY | 
 | ||||||
| 	if (ifp->flags&IFA_F_TEMPORARY) { | 	if (ifp->flags&IFA_F_TEMPORARY) { | ||||||
| 		list_del(&ifp->tmp_list); | 		list_del(&ifp->tmp_list); | ||||||
| 		if (ifp->ifpub) { | 		if (ifp->ifpub) { | ||||||
| @ -922,7 +909,6 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp) | |||||||
| 		} | 		} | ||||||
| 		__in6_ifa_put(ifp); | 		__in6_ifa_put(ifp); | ||||||
| 	} | 	} | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| 	list_for_each_entry_safe(ifa, ifn, &idev->addr_list, if_list) { | 	list_for_each_entry_safe(ifa, ifn, &idev->addr_list, if_list) { | ||||||
| 		if (ifa == ifp) { | 		if (ifa == ifp) { | ||||||
| @ -1013,7 +999,6 @@ out: | |||||||
| 	in6_ifa_put(ifp); | 	in6_ifa_put(ifp); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, struct inet6_ifaddr *ift) | static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, struct inet6_ifaddr *ift) | ||||||
| { | { | ||||||
| 	struct inet6_dev *idev = ifp->idev; | 	struct inet6_dev *idev = ifp->idev; | ||||||
| @ -1116,7 +1101,6 @@ retry: | |||||||
| out: | out: | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  *	Choose an appropriate source address (RFC3484) |  *	Choose an appropriate source address (RFC3484) | ||||||
| @ -1131,9 +1115,7 @@ enum { | |||||||
| #endif | #endif | ||||||
| 	IPV6_SADDR_RULE_OIF, | 	IPV6_SADDR_RULE_OIF, | ||||||
| 	IPV6_SADDR_RULE_LABEL, | 	IPV6_SADDR_RULE_LABEL, | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	IPV6_SADDR_RULE_PRIVACY, | 	IPV6_SADDR_RULE_PRIVACY, | ||||||
| #endif |  | ||||||
| 	IPV6_SADDR_RULE_ORCHID, | 	IPV6_SADDR_RULE_ORCHID, | ||||||
| 	IPV6_SADDR_RULE_PREFIX, | 	IPV6_SADDR_RULE_PREFIX, | ||||||
| 	IPV6_SADDR_RULE_MAX | 	IPV6_SADDR_RULE_MAX | ||||||
| @ -1247,7 +1229,6 @@ static int ipv6_get_saddr_eval(struct net *net, | |||||||
| 				      &score->ifa->addr, score->addr_type, | 				      &score->ifa->addr, score->addr_type, | ||||||
| 				      score->ifa->idev->dev->ifindex) == dst->label; | 				      score->ifa->idev->dev->ifindex) == dst->label; | ||||||
| 		break; | 		break; | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	case IPV6_SADDR_RULE_PRIVACY: | 	case IPV6_SADDR_RULE_PRIVACY: | ||||||
| 	    { | 	    { | ||||||
| 		/* Rule 7: Prefer public address
 | 		/* Rule 7: Prefer public address
 | ||||||
| @ -1259,7 +1240,6 @@ static int ipv6_get_saddr_eval(struct net *net, | |||||||
| 		ret = (!(score->ifa->flags & IFA_F_TEMPORARY)) ^ preftmp; | 		ret = (!(score->ifa->flags & IFA_F_TEMPORARY)) ^ preftmp; | ||||||
| 		break; | 		break; | ||||||
| 	    } | 	    } | ||||||
| #endif |  | ||||||
| 	case IPV6_SADDR_RULE_ORCHID: | 	case IPV6_SADDR_RULE_ORCHID: | ||||||
| 		/* Rule 8-: Prefer ORCHID vs ORCHID or
 | 		/* Rule 8-: Prefer ORCHID vs ORCHID or
 | ||||||
| 		 *	    non-ORCHID vs non-ORCHID | 		 *	    non-ORCHID vs non-ORCHID | ||||||
| @ -1588,7 +1568,6 @@ static void addrconf_dad_stop(struct inet6_ifaddr *ifp, int dad_failed) | |||||||
| 		if (dad_failed) | 		if (dad_failed) | ||||||
| 			ipv6_ifa_notify(0, ifp); | 			ipv6_ifa_notify(0, ifp); | ||||||
| 		in6_ifa_put(ifp); | 		in6_ifa_put(ifp); | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	} else if (ifp->flags&IFA_F_TEMPORARY) { | 	} else if (ifp->flags&IFA_F_TEMPORARY) { | ||||||
| 		struct inet6_ifaddr *ifpub; | 		struct inet6_ifaddr *ifpub; | ||||||
| 		spin_lock_bh(&ifp->lock); | 		spin_lock_bh(&ifp->lock); | ||||||
| @ -1602,7 +1581,6 @@ static void addrconf_dad_stop(struct inet6_ifaddr *ifp, int dad_failed) | |||||||
| 			spin_unlock_bh(&ifp->lock); | 			spin_unlock_bh(&ifp->lock); | ||||||
| 		} | 		} | ||||||
| 		ipv6_del_addr(ifp); | 		ipv6_del_addr(ifp); | ||||||
| #endif |  | ||||||
| 	} else | 	} else | ||||||
| 		ipv6_del_addr(ifp); | 		ipv6_del_addr(ifp); | ||||||
| } | } | ||||||
| @ -1851,7 +1829,6 @@ static int ipv6_inherit_eui64(u8 *eui, struct inet6_dev *idev) | |||||||
| 	return err; | 	return err; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| /* (re)generation of randomized interface identifier (RFC 3041 3.2, 3.5) */ | /* (re)generation of randomized interface identifier (RFC 3041 3.2, 3.5) */ | ||||||
| static void __ipv6_regen_rndid(struct inet6_dev *idev) | static void __ipv6_regen_rndid(struct inet6_dev *idev) | ||||||
| { | { | ||||||
| @ -1919,7 +1896,6 @@ static void  __ipv6_try_regen_rndid(struct inet6_dev *idev, struct in6_addr *tmp | |||||||
| 	if (tmpaddr && memcmp(idev->rndid, &tmpaddr->s6_addr[8], 8) == 0) | 	if (tmpaddr && memcmp(idev->rndid, &tmpaddr->s6_addr[8], 8) == 0) | ||||||
| 		__ipv6_regen_rndid(idev); | 		__ipv6_regen_rndid(idev); | ||||||
| } | } | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  *	Add prefix route. |  *	Add prefix route. | ||||||
| @ -2207,9 +2183,7 @@ ok: | |||||||
| 		if (ifp) { | 		if (ifp) { | ||||||
| 			int flags; | 			int flags; | ||||||
| 			unsigned long now; | 			unsigned long now; | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 			struct inet6_ifaddr *ift; | 			struct inet6_ifaddr *ift; | ||||||
| #endif |  | ||||||
| 			u32 stored_lft; | 			u32 stored_lft; | ||||||
| 
 | 
 | ||||||
| 			/* update lifetime (RFC2462 5.5.3 e) */ | 			/* update lifetime (RFC2462 5.5.3 e) */ | ||||||
| @ -2250,7 +2224,6 @@ ok: | |||||||
| 			} else | 			} else | ||||||
| 				spin_unlock(&ifp->lock); | 				spin_unlock(&ifp->lock); | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 			read_lock_bh(&in6_dev->lock); | 			read_lock_bh(&in6_dev->lock); | ||||||
| 			/* update all temporary addresses in the list */ | 			/* update all temporary addresses in the list */ | ||||||
| 			list_for_each_entry(ift, &in6_dev->tempaddr_list, | 			list_for_each_entry(ift, &in6_dev->tempaddr_list, | ||||||
| @ -2315,7 +2288,7 @@ ok: | |||||||
| 			} else { | 			} else { | ||||||
| 				read_unlock_bh(&in6_dev->lock); | 				read_unlock_bh(&in6_dev->lock); | ||||||
| 			} | 			} | ||||||
| #endif | 
 | ||||||
| 			in6_ifa_put(ifp); | 			in6_ifa_put(ifp); | ||||||
| 			addrconf_verify(0); | 			addrconf_verify(0); | ||||||
| 		} | 		} | ||||||
| @ -2995,7 +2968,6 @@ static int addrconf_ifdown(struct net_device *dev, int how) | |||||||
| 	if (!how) | 	if (!how) | ||||||
| 		idev->if_flags &= ~(IF_RS_SENT|IF_RA_RCVD|IF_READY); | 		idev->if_flags &= ~(IF_RS_SENT|IF_RA_RCVD|IF_READY); | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	if (how && del_timer(&idev->regen_timer)) | 	if (how && del_timer(&idev->regen_timer)) | ||||||
| 		in6_dev_put(idev); | 		in6_dev_put(idev); | ||||||
| 
 | 
 | ||||||
| @ -3015,7 +2987,6 @@ static int addrconf_ifdown(struct net_device *dev, int how) | |||||||
| 		in6_ifa_put(ifa); | 		in6_ifa_put(ifa); | ||||||
| 		write_lock_bh(&idev->lock); | 		write_lock_bh(&idev->lock); | ||||||
| 	} | 	} | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| 	while (!list_empty(&idev->addr_list)) { | 	while (!list_empty(&idev->addr_list)) { | ||||||
| 		ifa = list_first_entry(&idev->addr_list, | 		ifa = list_first_entry(&idev->addr_list, | ||||||
| @ -3528,7 +3499,6 @@ restart: | |||||||
| 					in6_ifa_put(ifp); | 					in6_ifa_put(ifp); | ||||||
| 					goto restart; | 					goto restart; | ||||||
| 				} | 				} | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 			} else if ((ifp->flags&IFA_F_TEMPORARY) && | 			} else if ((ifp->flags&IFA_F_TEMPORARY) && | ||||||
| 				   !(ifp->flags&IFA_F_TENTATIVE)) { | 				   !(ifp->flags&IFA_F_TENTATIVE)) { | ||||||
| 				unsigned long regen_advance = ifp->idev->cnf.regen_max_retry * | 				unsigned long regen_advance = ifp->idev->cnf.regen_max_retry * | ||||||
| @ -3556,7 +3526,6 @@ restart: | |||||||
| 				} else if (time_before(ifp->tstamp + ifp->prefered_lft * HZ - regen_advance * HZ, next)) | 				} else if (time_before(ifp->tstamp + ifp->prefered_lft * HZ - regen_advance * HZ, next)) | ||||||
| 					next = ifp->tstamp + ifp->prefered_lft * HZ - regen_advance * HZ; | 					next = ifp->tstamp + ifp->prefered_lft * HZ - regen_advance * HZ; | ||||||
| 				spin_unlock(&ifp->lock); | 				spin_unlock(&ifp->lock); | ||||||
| #endif |  | ||||||
| 			} else { | 			} else { | ||||||
| 				/* ifp->prefered_lft <= ifp->valid_lft */ | 				/* ifp->prefered_lft <= ifp->valid_lft */ | ||||||
| 				if (time_before(ifp->tstamp + ifp->prefered_lft * HZ, next)) | 				if (time_before(ifp->tstamp + ifp->prefered_lft * HZ, next)) | ||||||
| @ -4128,13 +4097,11 @@ static inline void ipv6_store_devconf(struct ipv6_devconf *cnf, | |||||||
| 		jiffies_to_msecs(cnf->mldv1_unsolicited_report_interval); | 		jiffies_to_msecs(cnf->mldv1_unsolicited_report_interval); | ||||||
| 	array[DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = | 	array[DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = | ||||||
| 		jiffies_to_msecs(cnf->mldv2_unsolicited_report_interval); | 		jiffies_to_msecs(cnf->mldv2_unsolicited_report_interval); | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 	array[DEVCONF_USE_TEMPADDR] = cnf->use_tempaddr; | 	array[DEVCONF_USE_TEMPADDR] = cnf->use_tempaddr; | ||||||
| 	array[DEVCONF_TEMP_VALID_LFT] = cnf->temp_valid_lft; | 	array[DEVCONF_TEMP_VALID_LFT] = cnf->temp_valid_lft; | ||||||
| 	array[DEVCONF_TEMP_PREFERED_LFT] = cnf->temp_prefered_lft; | 	array[DEVCONF_TEMP_PREFERED_LFT] = cnf->temp_prefered_lft; | ||||||
| 	array[DEVCONF_REGEN_MAX_RETRY] = cnf->regen_max_retry; | 	array[DEVCONF_REGEN_MAX_RETRY] = cnf->regen_max_retry; | ||||||
| 	array[DEVCONF_MAX_DESYNC_FACTOR] = cnf->max_desync_factor; | 	array[DEVCONF_MAX_DESYNC_FACTOR] = cnf->max_desync_factor; | ||||||
| #endif |  | ||||||
| 	array[DEVCONF_MAX_ADDRESSES] = cnf->max_addresses; | 	array[DEVCONF_MAX_ADDRESSES] = cnf->max_addresses; | ||||||
| 	array[DEVCONF_ACCEPT_RA_DEFRTR] = cnf->accept_ra_defrtr; | 	array[DEVCONF_ACCEPT_RA_DEFRTR] = cnf->accept_ra_defrtr; | ||||||
| 	array[DEVCONF_ACCEPT_RA_PINFO] = cnf->accept_ra_pinfo; | 	array[DEVCONF_ACCEPT_RA_PINFO] = cnf->accept_ra_pinfo; | ||||||
| @ -4828,7 +4795,6 @@ static struct addrconf_sysctl_table | |||||||
| 			.mode		= 0644, | 			.mode		= 0644, | ||||||
| 			.proc_handler	= proc_dointvec_ms_jiffies, | 			.proc_handler	= proc_dointvec_ms_jiffies, | ||||||
| 		}, | 		}, | ||||||
| #ifdef CONFIG_IPV6_PRIVACY |  | ||||||
| 		{ | 		{ | ||||||
| 			.procname	= "use_tempaddr", | 			.procname	= "use_tempaddr", | ||||||
| 			.data		= &ipv6_devconf.use_tempaddr, | 			.data		= &ipv6_devconf.use_tempaddr, | ||||||
| @ -4864,7 +4830,6 @@ static struct addrconf_sysctl_table | |||||||
| 			.mode		= 0644, | 			.mode		= 0644, | ||||||
| 			.proc_handler	= proc_dointvec, | 			.proc_handler	= proc_dointvec, | ||||||
| 		}, | 		}, | ||||||
| #endif |  | ||||||
| 		{ | 		{ | ||||||
| 			.procname	= "max_addresses", | 			.procname	= "max_addresses", | ||||||
| 			.data		= &ipv6_devconf.max_addresses, | 			.data		= &ipv6_devconf.max_addresses, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user