[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20170703.015438.1191171935015250152.davem@davemloft.net>
Date: Mon, 03 Jul 2017 01:54:38 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: sd@...asysnail.net
Cc: netdev@...r.kernel.org, hannes@...essinduktion.org
Subject: Re: [PATCH net] ipv6: dad: don't remove dynamic addresses if link
is down
From: Sabrina Dubroca <sd@...asysnail.net>
Date: Thu, 29 Jun 2017 16:56:54 +0200
> Currently, when the link for $DEV is down, this command succeeds but the
> address is removed immediately by DAD (1):
>
> ip addr add 1111::12/64 dev $DEV valid_lft 3600 preferred_lft 1800
>
> In the same situation, this will succeed and not remove the address (2):
>
> ip addr add 1111::12/64 dev $DEV
> ip addr change 1111::12/64 dev $DEV valid_lft 3600 preferred_lft 1800
>
> The comment in addrconf_dad_begin() when !IF_READY makes it look like
> this is the intended behavior, but doesn't explain why:
>
> * If the device is not ready:
> * - keep it tentative if it is a permanent address.
> * - otherwise, kill it.
>
> We clearly cannot prevent userspace from doing (2), but we can make (1)
> work consistently with (2).
>
> addrconf_dad_stop() is only called in two cases: if DAD failed, or to
> skip DAD when the link is down. In that second case, the fix is to avoid
> deleting the address, like we already do for permanent addresses.
>
> Fixes: 3c21edbd1137 ("[IPV6]: Defer IPv6 device initialization until the link becomes ready.")
> Signed-off-by: Sabrina Dubroca <sd@...asysnail.net>
Applied and queued up for -stable, thanks.
Powered by blists - more mailing lists