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
