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