|
@@ -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);
|