Peter Memishian writes:
> While working on the Clearview IPMP IPv6 code, I believe I've found a
> serious IPMP-related bug in the existing IPv6 code.  Specifically,
> ipif_ndp_up() uses ill_move_in_progress to determine whether an IPv6
> address is being moved between two interfaces, and sets the
> NCE_F_UNSOLV_ADV flag to trigger ndp_add_v6() to send unsolicited
> advertisements:
[...]
> It seems like we should pass `ND_REACHABLE' instead of `ND_PROBE' when
> NCE_F_UNSOL_ADV is set.  Comments?

You're right that this looks broken, but I'm not sure that this
solution is the best possible.  Passing in ND_REACHABLE means that
IPMP fail-over will cause us to become belligerent about any unprobed
addresses.  Given that a fairly common way for interfaces to fail over
is for them to be configured on an already-broken interface and thus
move immediately, this doesn't seem right to me.

Assuming that the flag is set correctly from the original ipif during
the IPMP move, I'd suggest passing in ND_REACHABLE if ipif_addr_ready
is set, and ND_PROBE otherwise.

(I don't know of any test failures related to this, and I certainly
did run the IPMP test suite, so maybe a new case is needed just for
this ....)

-- 
James Carlson, Solaris Networking              <james.d.carlson at sun.com>
Sun Microsystems / 35 Network Drive        71.232W   Vox +1 781 442 2084
MS UBUR02-212 / Burlington MA 01803-2757   42.496N   Fax +1 781 442 1677

Reply via email to