> I tried to place each of these such that the events are only generated > if the operation that prompts the event actually completes, as opposed > to simply when an attempt the operation is made (the IPv4 events that > Phil originally had were actually in the same place as they are now). > There are cases in ipif_up_done*() where the IPIF_UP flag does not get > set due to an error, but yet routing sockets has already sent up an > IFINFO message.
IFINFO in general isn't a concern since it only reports the current flags. The NEWADDR message only happens when DAD completes, which may not happen in ipif_up_done(), hence the ipif_addr_ready check. > I think that routing sockets got this wrong. The sctp_update_ipif() > function calls, however, seem to have gotten this right. I think you'll find the ip_rts_newaddrmsg() calls mirror the sctp_update_ipif() calls. > Having just said that, I do notice some DAD-related calls to > sctp_update_ipif(ipif, SCTP_IPIF_UP) that have no equivalent NE_LIF_UP > events, so I'll take a look at those. Right, those are the DAD-related cases I mentioned above. -- meem
