mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
Revert "net: ipv6/addrconf: clamp preferred_lft to the minimum required"
The commit had a bug and might not have been the right approach anyway. Fixes:629df6701c
("net: ipv6/addrconf: clamp preferred_lft to the minimum required") Fixes:ec575f885e
("Documentation: networking: explain what happens if temp_prefered_lft is too small or too large") Reported-by: Dan Moulding <dan@danm.net> Closes: https://lore.kernel.org/netdev/20231221231115.12402-1-dan@danm.net/ Link: https://lore.kernel.org/netdev/CAMMLpeTdYhd=7hhPi2Y7pwdPCgnnW5JYh-bu3hSc7im39uxnEA@mail.gmail.com/ Signed-off-by: Alex Henrie <alexhenrie24@gmail.com> Reviewed-by: David Ahern <dsahern@kernel.org> Link: https://lore.kernel.org/r/20231230043252.10530-1-alexhenrie24@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
61fa2493ca
commit
8cdafdd946
@ -2511,7 +2511,7 @@ temp_valid_lft - INTEGER
|
||||
temp_prefered_lft - INTEGER
|
||||
Preferred lifetime (in seconds) for temporary addresses. If
|
||||
temp_prefered_lft is less than the minimum required lifetime (typically
|
||||
5 seconds), the preferred lifetime is the minimum required. If
|
||||
5 seconds), temporary addresses will not be created. If
|
||||
temp_prefered_lft is greater than temp_valid_lft, the preferred lifetime
|
||||
is temp_valid_lft.
|
||||
|
||||
|
@ -1407,23 +1407,15 @@ static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, bool block)
|
||||
|
||||
write_unlock_bh(&idev->lock);
|
||||
|
||||
/* From RFC 4941:
|
||||
*
|
||||
* A temporary address is created only if this calculated Preferred
|
||||
* Lifetime is greater than REGEN_ADVANCE time units. In
|
||||
* particular, an implementation must not create a temporary address
|
||||
* with a zero Preferred Lifetime.
|
||||
*
|
||||
* Clamp the preferred lifetime to a minimum of regen_advance, unless
|
||||
* that would exceed valid_lft.
|
||||
*
|
||||
/* A temporary address is created only if this calculated Preferred
|
||||
* Lifetime is greater than REGEN_ADVANCE time units. In particular,
|
||||
* an implementation must not create a temporary address with a zero
|
||||
* Preferred Lifetime.
|
||||
* Use age calculation as in addrconf_verify to avoid unnecessary
|
||||
* temporary addresses being generated.
|
||||
*/
|
||||
age = (now - tmp_tstamp + ADDRCONF_TIMER_FUZZ_MINUS) / HZ;
|
||||
if (cfg.preferred_lft <= regen_advance + age)
|
||||
cfg.preferred_lft = regen_advance + age + 1;
|
||||
if (cfg.preferred_lft > cfg.valid_lft) {
|
||||
if (cfg.preferred_lft <= regen_advance + age) {
|
||||
in6_ifa_put(ifp);
|
||||
in6_dev_put(idev);
|
||||
ret = -1;
|
||||
|
Loading…
Reference in New Issue
Block a user