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