ipv6: fix net.ipv6.conf.all.accept_dad behaviour for real
authorMatteo Croce <mcroce@redhat.com>
Thu, 5 Oct 2017 17:03:05 +0000 (19:03 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sat, 7 Oct 2017 22:10:05 +0000 (23:10 +0100)
commita2d3f3e33853ef52e5f66b41c3e8ee5710aa3305
tree435444ecc63087f43448b0af70bf674daae0405c
parent6151b8b37b119e8e3a8401b080d532520c95faf4
ipv6: fix net.ipv6.conf.all.accept_dad behaviour for real

Commit 35e015e1f577 ("ipv6: fix net.ipv6.conf.all interface DAD handlers")
was intended to affect accept_dad flag handling in such a way that
DAD operation and mode on a given interface would be selected
according to the maximum value of conf/{all,interface}/accept_dad.

However, addrconf_dad_begin() checks for particular cases in which we
need to skip DAD, and this check was modified in the wrong way.

Namely, it was modified so that, if the accept_dad flag is 0 for the
given interface *or* for all interfaces, DAD would be skipped.

We have instead to skip DAD if accept_dad is 0 for the given interface
*and* for all interfaces.

Fixes: 35e015e1f577 ("ipv6: fix net.ipv6.conf.all interface DAD handlers")
Acked-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Matteo Croce <mcroce@redhat.com>
Reported-by: Erik Kline <ek@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/addrconf.c