summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorJay Vosburgh <fubar@us.ibm.com>2007-02-28 17:03:37 -0800
committerJeff Garzik <jeff@garzik.org>2007-03-06 06:08:11 -0500
commita816c7c712ff9f6770168b91facb9bfa9f0acd48 (patch)
treeaa47edb0c1e23be76d0fff783b9665221f2a84ef /include
parente245cb71d490e5e516c0ca0688fad7de6c22943d (diff)
downloadlinux-a816c7c712ff9f6770168b91facb9bfa9f0acd48.tar.gz
bonding: Improve IGMP join processing
	In active-backup mode, the current bonding code duplicates IGMP
traffic to all slaves, so that switches are up to date in case of a
failover from an active to a backup interface.  If bonding then fails
back to the original active interface, it is likely that the "active
slave" switch's IGMP forwarding for the port will be out of date until
some event occurs to refresh the switch (e.g., a membership query).

	This patch alters the behavior of bonding to no longer flood
IGMP to all ports, and to issue IGMP JOINs to the newly active port at
the time of a failover.  This insures that switches are kept up to date
for all cases.

	"GOELLESCH Niels" <niels.goellesch@eurocontrol.int> originally
reported this problem, and included a patch.  His original patch was
modified by Jay Vosburgh to additionally remove the existing IGMP flood
behavior, use RCU, streamline code paths, fix trailing white space, and
adjust for style.

Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/igmp.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/igmp.h b/include/linux/igmp.h
index 9dbb525c5178..a113fe68d8a1 100644
--- a/include/linux/igmp.h
+++ b/include/linux/igmp.h
@@ -218,5 +218,7 @@ extern void ip_mc_up(struct in_device *);
 extern void ip_mc_down(struct in_device *);
 extern void ip_mc_dec_group(struct in_device *in_dev, __be32 addr);
 extern void ip_mc_inc_group(struct in_device *in_dev, __be32 addr);
+extern void ip_mc_rejoin_group(struct ip_mc_list *im);
+
 #endif
 #endif