From bbf76566e04924a1033456427f2dd743ac45da0d Mon Sep 17 00:00:00 2001 From: Flavio Leitner Date: Tue, 5 Oct 2010 14:23:58 +0000 Subject: [PATCH] --- yaml --- r: 214927 b: refs/heads/master c: e12b453904c54bbdc515778ff664d87a7f9473af h: refs/heads/master i: 214925: b3a6526dea91aa65031c8f85739b230c109bccfd 214923: f76466dc3ede1060dc29bb939bb3de9a857e6198 214919: 0bf95078da6eb460b3a6cff1c90ac5c109614c8b 214911: 7c3e53c92dc1c6f25a982072657479d7998b4b40 v: v3 --- [refs] | 2 +- trunk/net/ipv4/igmp.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index d5fa419e2616..d8e36a895f3e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5a37e8ca8536c47871d46c82211f399adf06fd44 +refs/heads/master: e12b453904c54bbdc515778ff664d87a7f9473af diff --git a/trunk/net/ipv4/igmp.c b/trunk/net/ipv4/igmp.c index 2a4bb76f2132..25f339672b28 100644 --- a/trunk/net/ipv4/igmp.c +++ b/trunk/net/ipv4/igmp.c @@ -1269,14 +1269,14 @@ void ip_mc_rejoin_group(struct ip_mc_list *im) if (im->multiaddr == IGMP_ALL_HOSTS) return; - if (IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev)) { - igmp_mod_timer(im, IGMP_Initial_Report_Delay); - return; - } - /* else, v3 */ - im->crcount = in_dev->mr_qrv ? in_dev->mr_qrv : - IGMP_Unsolicited_Report_Count; - igmp_ifc_event(in_dev); + /* a failover is happening and switches + * must be notified immediately */ + if (IGMP_V1_SEEN(in_dev)) + igmp_send_report(in_dev, im, IGMP_HOST_MEMBERSHIP_REPORT); + else if (IGMP_V2_SEEN(in_dev)) + igmp_send_report(in_dev, im, IGMPV2_HOST_MEMBERSHIP_REPORT); + else + igmp_send_report(in_dev, im, IGMPV3_HOST_MEMBERSHIP_REPORT); #endif } EXPORT_SYMBOL(ip_mc_rejoin_group);