As per this thread:
http://opensolaris.org/jive/message.jspa?messageID=206638
... the NCE_F_UNSOL_ADV functionality is completely broken in Nevada.
There are two problems:
1. ipif_ndp_up() checks ill_move_in_progress to determine
whether to pass the NCE_F_UNSOL_ADV flag to ndp_add_v6()
(via ndp_lookup_then_add_v6()). Unfortunately,
post-FireEngine, ill_move_in_progress is always cleared
by ip_sioctl_move() long before calling ill_up_ipifs()
(which in turn eventually calls ipif_ndp_up()). Thus,
NCE_F_UNSOL_ADV will never be set when calling ndp_add_v6().
2. Post-DAD, ndp_add_v6() will ignore the NCE_F_UNSOL_ADV
flag since NCE_F_PERMANENT is also set and the state passed
by ipif_ndp_up() is ND_PROBE. To trigger unsolicited
advertisements instead, ipif_ndp_up() needs to specify a
state of ND_REACHABLE if ipif_addr_ready is set.
Work Around
N/A
Comments
The cause of this bug is actually split over two different integrations:
Fire Engine introduced the first problem in s10_41, and the fix for
4705220/4728609 in snv_47 introduced the second problem. I've set the
"Introduced in Release" and "Introduced in Build" fields to the earlier
of the two.