svn commit: r292275 - in head/sys: net netinet netinet6

Steven Hartland steven at multiplay.co.uk
Wed Dec 16 14:43:09 UTC 2015


On 16/12/2015 09:02, Alexander V. Chernikov wrote:
> 15.12.2015, 19:02, "Steven Hartland" <smh at FreeBSD.org>:
>> Author: smh
>> Date: Tue Dec 15 16:02:11 2015
>> New Revision: 292275
>> URL: https://svnweb.freebsd.org/changeset/base/292275
>>
>> Log:
>>    Fix lagg failover due to missing notifications
>>
>>    When using lagg failover mode neither Gratuitous ARP (IPv4) or Unsolicited
>>    Neighbour Advertisements (IPv6) are sent to notify other nodes that the
>>    address may have moved.
>>
>>    This results is slow failover, dropped packets and network outages for the
>>    lagg interface when the primary link goes down.
>>
>>    We now use the new if_link_state_change_cond with the force param set to
>>    allow lagg to force through link state changes and hence fire a
>>    ifnet_link_event which are now monitored by rip and nd6.
>>
>>    Upon receiving these events each protocol trigger the relevant
>>    notifications:
>>    * inet4 => Gratuitous ARP
>>    * inet6 => Unsolicited Neighbour Announce
> Steven, I believe that having DELAY() called inside callout routine is incorrect - you are delaying other consumers for arbitrary amount of time.
> If you really want to do it that way you should create separate taskqueue for that.
> Also, destroying interface while doing these DELAYs would very likely crash the system
> :"#define IN6_MAX_ANYCAST_DELAY_TIME_MS 1000000" is misguiding
> There are some style(9) issues like lack of empty line between nd6_init() and nd6_ifnet_link_event()
> ...
Thanks Alexander, do you think an acceptable workaround for the time 
being is to remove the DELAY, until I get some time to work on a taskqueue?

Also do you have any input on the questions I raised about Kristof's 
panic due to NULL ifp->if_addr arp_announce?


More information about the svn-src-head mailing list