[IPV6]: ROUTE: Add router_probe_interval sysctl.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
YOSHIFUJI Hideaki 2006-03-20 17:05:47 -08:00 committed by David S. Miller
parent 930d6ff2e2
commit 52e1635631
5 changed files with 22 additions and 1 deletions

View File

@ -789,6 +789,12 @@ mtu - INTEGER
Default Maximum Transfer Unit Default Maximum Transfer Unit
Default: 1280 (IPv6 required minimum) Default: 1280 (IPv6 required minimum)
router_probe_interval - INTEGER
Minimum interval (in seconds) between Router Probing described
in RFC4191.
Default: 60
router_solicitation_delay - INTEGER router_solicitation_delay - INTEGER
Number of seconds to wait after interface is brought up Number of seconds to wait after interface is brought up
before sending Router Solicitations. before sending Router Solicitations.

View File

@ -149,6 +149,7 @@ struct ipv6_devconf {
__s32 accept_ra_pinfo; __s32 accept_ra_pinfo;
#ifdef CONFIG_IPV6_ROUTER_PREF #ifdef CONFIG_IPV6_ROUTER_PREF
__s32 accept_ra_rtr_pref; __s32 accept_ra_rtr_pref;
__s32 rtr_probe_interval;
#endif #endif
void *sysctl; void *sysctl;
}; };
@ -175,6 +176,7 @@ enum {
DEVCONF_ACCEPT_RA_DEFRTR, DEVCONF_ACCEPT_RA_DEFRTR,
DEVCONF_ACCEPT_RA_PINFO, DEVCONF_ACCEPT_RA_PINFO,
DEVCONF_ACCEPT_RA_RTR_PREF, DEVCONF_ACCEPT_RA_RTR_PREF,
DEVCONF_RTR_PROBE_INTERVAL,
DEVCONF_MAX DEVCONF_MAX
}; };

View File

@ -534,6 +534,7 @@ enum {
NET_IPV6_ACCEPT_RA_DEFRTR=18, NET_IPV6_ACCEPT_RA_DEFRTR=18,
NET_IPV6_ACCEPT_RA_PINFO=19, NET_IPV6_ACCEPT_RA_PINFO=19,
NET_IPV6_ACCEPT_RA_RTR_PREF=20, NET_IPV6_ACCEPT_RA_RTR_PREF=20,
NET_IPV6_RTR_PROBE_INTERVAL=21,
__NET_IPV6_MAX __NET_IPV6_MAX
}; };

View File

@ -169,6 +169,7 @@ struct ipv6_devconf ipv6_devconf = {
.accept_ra_pinfo = 1, .accept_ra_pinfo = 1,
#ifdef CONFIG_IPV6_ROUTER_PREF #ifdef CONFIG_IPV6_ROUTER_PREF
.accept_ra_rtr_pref = 1, .accept_ra_rtr_pref = 1,
.rtr_probe_interval = 60 * HZ,
#endif #endif
}; };
@ -195,6 +196,7 @@ static struct ipv6_devconf ipv6_devconf_dflt = {
.accept_ra_pinfo = 1, .accept_ra_pinfo = 1,
#ifdef CONFIG_IPV6_ROUTER_PREF #ifdef CONFIG_IPV6_ROUTER_PREF
.accept_ra_rtr_pref = 1, .accept_ra_rtr_pref = 1,
.rtr_probe_interval = 60 * HZ,
#endif #endif
}; };
@ -3130,6 +3132,7 @@ static void inline ipv6_store_devconf(struct ipv6_devconf *cnf,
array[DEVCONF_ACCEPT_RA_PINFO] = cnf->accept_ra_pinfo; array[DEVCONF_ACCEPT_RA_PINFO] = cnf->accept_ra_pinfo;
#ifdef CONFIG_IPV6_ROUTER_PREF #ifdef CONFIG_IPV6_ROUTER_PREF
array[DEVCONF_ACCEPT_RA_RTR_PREF] = cnf->accept_ra_rtr_pref; array[DEVCONF_ACCEPT_RA_RTR_PREF] = cnf->accept_ra_rtr_pref;
array[DEVCONF_RTR_PROBE_INTERVAL] = cnf->rtr_probe_interval;
#endif #endif
} }
@ -3608,6 +3611,15 @@ static struct addrconf_sysctl_table
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec, .proc_handler = &proc_dointvec,
}, },
{
.ctl_name = NET_IPV6_RTR_PROBE_INTERVAL,
.procname = "router_probe_interval",
.data = &ipv6_devconf.rtr_probe_interval,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec_jiffies,
.strategy = &sysctl_jiffies,
},
#endif #endif
{ {
.ctl_name = 0, /* sentinel */ .ctl_name = 0, /* sentinel */

View File

@ -234,7 +234,7 @@ static void rt6_probe(struct rt6_info *rt)
return; return;
read_lock_bh(&neigh->lock); read_lock_bh(&neigh->lock);
if (!(neigh->nud_state & NUD_VALID) && if (!(neigh->nud_state & NUD_VALID) &&
time_after(jiffies, neigh->updated + 60 * HZ)) { time_after(jiffies, neigh->updated + rt->rt6i_idev->cnf.rtr_probe_interval)) {
struct in6_addr mcaddr; struct in6_addr mcaddr;
struct in6_addr *target; struct in6_addr *target;