Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Dec 2015 14:43:10 +0000
From:      Steven Hartland <steven@multiplay.co.uk>
To:        "Alexander V. Chernikov" <melifaro@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r292275 - in head/sys: net netinet netinet6
Message-ID:  <5671787E.4060303@freebsd.org>
In-Reply-To: <633021450256567@web13o.yandex.ru>
References:  <201512151602.tBFG2BTX089543@repo.freebsd.org> <633021450256567@web13o.yandex.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On 16/12/2015 09:02, Alexander V. Chernikov wrote:
> 15.12.2015, 19:02, "Steven Hartland" <smh@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?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5671787E.4060303>