> > It seems like we should pass `ND_REACHABLE' instead of `ND_PROBE' when
> > NCE_F_UNSOL_ADV is set. Comments?
>
> That seems reasonable; we don't want to do DAD in this case.
Yes. However, it looks like this bug runs deeper. In particular, by the
time we get to this code in ipif_ndp_up():
if (ill->ill_move_in_progress) {
/*
* Addresses are failing over to this ill.
* Don't wait for NUD to see this change.
* Publish our new link-layer address.
*/
flags |= NCE_F_UNSOL_ADV;
}
... ill_move_in_progress has already been cleared by ip_sioctl_move()[1]
(it does this before calling ill_up_ipifs()). I wonder if this has ever
worked :-/
[1] This also seems to cause a collection of move-related logic in
ill_up_ipifs() to be skipped, which may have other implications.
Of course, none of this applies to Clearview IPMP since moves
no longer exist.
--
meem