Hello, The reason why IPv6 does not work when using -net socket,mcast=foo is that since qemu explicitly sets IP_MULTICAST_LOOP to 1, it receives its own frames. When the IPv6 stack performs duplicate addresse detection (DAD) through a multicasted announce, it receives its own announcement, and thus believes another machine has the same address.
AIUI, on a real physical network network boards do not receive the multicasts they send, so the issue does not happen. Perhaps some boards even filter out any frame with its own MAC as source, eliminating the issue altogether. As a result, we should probably perform this kind of dropping, I'm just wondering at which level that would be preferable. - We could do that in qemu_send_packet_async_with_flags, thus fixing the issue for all kinds of frame transporters. - Or we could do that for the only case that matters, mcast, in net_socket_send_dgram (which will thus do it for the unicast udp case too). What do people think about it? Samuel