On 16/12/2015 09:02, Alexander V. Chernikov wrote:
15.12.2015, 19:02, "Steven Hartland" <s...@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?
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to