> > 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

Reply via email to