OpenSolaris

Printable Version Enter a New Search
Bug ID 6667143
Synopsis NCE_F_UNSOL_ADV broken
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:tcp-ip
Keywords clearview
Responsible Engineer Peter Memishian
Reported Against
Duplicate Of
Introduced In solaris_10
Commit to Fix snv_107
Fixed In snv_107
Release Fixed solaris_nevada(snv_107)
Related Bugs 4705220 , 4728609 , 6783149 , 4898645
Submit Date 25-February-2008
Last Update Date 28-January-2009
Description
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.