• Matteo Croce's avatar
    ipv6: fix net.ipv6.conf.all interface DAD handlers · 35e015e1
    Matteo Croce authored
    Currently, writing into
    net.ipv6.conf.all.{accept_dad,use_optimistic,optimistic_dad} has no effect.
    Fix handling of these flags by:
    
    - using the maximum of global and per-interface values for the
      accept_dad flag. That is, if at least one of the two values is
      non-zero, enable DAD on the interface. If at least one value is
      set to 2, enable DAD and disable IPv6 operation on the interface if
      MAC-based link-local address was found
    
    - using the logical OR of global and per-interface values for the
      optimistic_dad flag. If at least one of them is set to one, optimistic
      duplicate address detection (RFC 4429) is enabled on the interface
    
    - using the logical OR of global and per-interface values for the
      use_optimistic flag. If at least one of them is set to one,
      optimistic addresses won't be marked as deprecated during source address
      selection on the interface.
    
    While at it, as we're modifying the prototype for ipv6_use_optimistic_addr(),
    drop inline, and let the compiler decide.
    
    Fixes: 7fd2561e ("net: ipv6: Add a sysctl to make optimistic addresses useful candidates")
    Signed-off-by: default avatarMatteo Croce <mcroce@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    35e015e1
addrconf.c 160 KB