In creating this duplicate address, I found that the RTM_IFINFO messages do not contain the IFF_DUPLICATE flag. Instead icfg_set_addr() and icfg_set_flags() (in libinetcfg) perform DAD and return ICFG_DAD_FOUND if duplicate address is found.
The return value from icfg_set_addr() and icfg_set_flags() are checked and the state transition to MAINTENANCE if it is ICFG_DAD_FOUND. Does this sound reasonable? Anurag bugzilla at defect.opensolaris.org wrote: > http://defect.opensolaris.org/bz/show_bug.cgi?id=10682 > > > > --- Comment #2 from amaguire <alan.maguire at sun.com> 2009-08-17 16:49:43 > UTC --- > (In reply to comment #1) > >> (In reply to comment #0) >> >>> Created an attachment (id=2428) [details] [details] >>> nwamd log >>> >>> Recently we ran into an issue while testing, where we were getting an IP >>> address from the DHCP server that someone else had statically assigned to >>> their >>> machine. >>> >>> This cause the i/f to change state constantly due to the duplicated address >>> causing DHCP to drop it and look for another . >>> >>> nwamd needs to detect this situation and handle it in a way that informs the >>> user of the problem so that they can reasonably seek admin action to resolve >>> it. >>> >>> To me this would require that we communicate the duplicate address >>> situation, >>> with information about the address that's causing it. >>> >> it'd probably make sense for us to look out for IFF_DUPLICATE in the >> interface >> flags, and if found in handling the interface state event in >> nwamd_ncu_handle_if_state_event(), move the IP NCU into "maintenance, >> duplicate >> address detected". >> > > this is easy to reproduce, just set a User-ncp ncu to use a static address > which is already in use on your network. We see the interface flag "DUPLICATE" > and the interface is down. > >
