http://defect.opensolaris.org/bz/show_bug.cgi?id=14367



--- Comment #1 from amaguire <alan.maguire at sun.com> 2010-02-04 14:40:05 UTC 
---
(In reply to comment #0)
> when attempting to manually assign a duplicate address, it is removed from the
> interface (which is IFF_UP with 0.0.0.0/8 assigned) but nwam still reports it
> as online/up. Weirdly, on resume after suspend the address was flagged as
> duplicate by nwamd (maintenance/duplicate address detected). Investigating...

This seems to be an intermittent problem - sometimes it works, sometimes it
doesn't. I suspect the problem may stem from the fact that we create an
IF_STATE event for the RTM_CHGADDR (resulting from the duplicate address
detection), and only process it later. We rely on the fact that when we call
icfg_get_flags() (when we later handle this IF_STATE event), IFF_DUPLICATE is
still set on the interface flags. This does not always seem to be the case. It
would be nice if the RTM_CHGADDRs included the updated interface flags (with
IFF_DUPLICATE set) but the flags in those messages simply are set to RTF_UP
(for an RTM_NEWADDR) or 0 (RTM_CHG/DELADDR).

One possible tack would be to read the interface flags at the point we get the
routing socket message and set IFF_DUPLICATE in the flags of the nwam-internal
IF_STATE message. However this would involve grabbing the NCU, finding if the
to-be-removed address is one of our configured addresss etc (in order to map
the physical interface reported by the routing socket to the logical interface
the event occurred on). This process is expensive if it has to happen upfront
every time we add/lose an address.

An important thing to determine is if (and if so, why) we lose the
IFF_DUPLICATE flag setting between the routing socket message receipt and the
processing of the associated IF_STATE event.

-- 
Configure bugmail: http://defect.opensolaris.org/bz/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Reply via email to