0f7436c network: wait for DAD to finish for bridge IPv6 addresses

4 files Authored by Maxim Perevedentsev 8 years ago, Committed by Laine Stump 8 years ago,
    network: wait for DAD to finish for bridge IPv6 addresses
    
    commit db488c79 assumed that dnsmasq would complete IPv6 DAD before
    daemonizing, but in reality it doesn't wait, which creates problems
    when libvirt's bridge driver sets the matching "dummy tap device" to
    IFF_DOWN prior to DAD completing.
    
    This patch waits for DAD completion by periodically polling the kernel
    using netlink to check whether there are any IPv6 addresses assigned
    to bridge which have a 'tentative' state (if there are any in this
    state, then DAD hasn't yet finished). After DAD is finished, execution
    continues. To avoid an endless hang in case something was wrong with
    the kernel's DAD, we wait a maximum of 5 seconds.
    
        
file modified
+1 -0
file modified
+34 -2
file modified
+110 -0
file modified
+2 -0