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>