From: Hangbin Liu <liuhang...@gmail.com> Date: Wed, 21 Nov 2018 21:52:33 +0800
> When we add a new IPv6 address, we should also join corresponding > solicited-node > multicast address, unless the interface has IFF_NOARP flag, as function > addrconf_join_solict() did. But if we remove IFF_NOARP flag later, we do > not do dad and add the mcast address. So we will drop corresponding neighbour > discovery message that came from other nodes. > > A typical example is after creating a ipvlan with mode l3, setting up an ipv6 > address and changing the mode to l2. Then we will not be able to ping this > address as the interface doesn't join related solicited-node mcast address. > > Fix it by re-doing dad when interface changed IFF_NOARP flag. Then we will add > corresponding mcast group and check if there is a duplicate address on the > network. > > Reported-by: Jianlin Shi <ji...@redhat.com> > Reviewed-by: Stefano Brivio <sbri...@redhat.com> > Signed-off-by: Hangbin Liu <liuhang...@gmail.com> Applied.