summaryrefslogtreecommitdiffstats
path: root/sys/net/if_lagg.h
diff options
context:
space:
mode:
authorsmh <smh@FreeBSD.org>2015-12-15 16:02:11 +0000
committersmh <smh@FreeBSD.org>2015-12-15 16:02:11 +0000
commit864cf1812819836284d12030ce553ee743ca10f0 (patch)
tree681a26be2c813d8809988c0d761c31d1aecdf72e /sys/net/if_lagg.h
parent2dd258160a988888832a006ec38aa1384ed5ab95 (diff)
downloadFreeBSD-src-864cf1812819836284d12030ce553ee743ca10f0.zip
FreeBSD-src-864cf1812819836284d12030ce553ee743ca10f0.tar.gz
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 This also fixes the carp IPv6 NA's that stopped working after r251584 which added the ipv6_route__llma route. The new behavour can be controlled using the sysctls: * net.link.ether.inet.arp_on_link * net.inet6.icmp6.nd6_on_link Also removed unused param from lagg_port_state and added descriptions for the sysctls while here. PR: 156226 MFC after: 1 month Sponsored by: Multiplay Differential Revision: https://reviews.freebsd.org/D4111
Diffstat (limited to 'sys/net/if_lagg.h')
-rw-r--r--sys/net/if_lagg.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/net/if_lagg.h b/sys/net/if_lagg.h
index 195ac3a..ea59762 100644
--- a/sys/net/if_lagg.h
+++ b/sys/net/if_lagg.h
@@ -281,7 +281,7 @@ struct lagg_port {
#define LAGG_UNLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_UNLOCKED)
extern struct mbuf *(*lagg_input_p)(struct ifnet *, struct mbuf *);
-extern void (*lagg_linkstate_p)(struct ifnet *, int );
+extern void (*lagg_linkstate_p)(struct ifnet *);
int lagg_enqueue(struct ifnet *, struct mbuf *);
OpenPOWER on IntegriCloud