On Thu Sep 12 15:56:23 2013, jpopelka@redhat.com wrote: => a simple question: is the problem for multicast or unicast packets (it should work for multicast packets but for unicast packets it has no chance to work with a single global socket bound to *.port)? > When there are more 'dhclient -6' instances running > (one instance per network interface), > always only one of them gets all the packets > (even those destined for the other instances). > The exact behavior depends on linux kernel version, either only the > first or only the last started instance gets all the packets, > but the problem remains. => IMHO the correct behaviour should be to have bind() rejected but it implies SO_REUSEPORT to be implemented and SO_REUSEADDR fixed. I don't know if it will help here but at least it will align with the BSD (and IMHO correct) behaviour... > I think the problem is that DHCPv6 part of if_register_socket() binds to > address from local_address6 variable but this variable has never been > initialized so it's always 0. => local_address* is for agents (i.e., relays and servers). In fact this part of the code is essentially for agents. > I don't know the internals, so the patch can be completely wrong > but up to now it's seemed to fix the problem and not cause any others. > I'll update it if I find something better. => I am afraid it will break agents via the multicast receive. > See also > http://serverfault.com/questions/471076/ipv6-two-interfaces-with-dhclient => it will be tested too as the goal is to have something which supports any partition of clients over multiple interfaces.