aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/igmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/igmp.c')
-rw-r--r--net/ipv4/igmp.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index ceb19ab9cf9d..d6c0e64ec97f 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -142,10 +142,25 @@
142 142
143static int unsolicited_report_interval(struct in_device *in_dev) 143static int unsolicited_report_interval(struct in_device *in_dev)
144{ 144{
145 int interval_ms, interval_jiffies;
146
145 if (IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev)) 147 if (IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev))
146 return IGMP_V2_Unsolicited_Report_Interval; 148 interval_ms = IN_DEV_CONF_GET(
149 in_dev,
150 IGMPV2_UNSOLICITED_REPORT_INTERVAL);
147 else /* v3 */ 151 else /* v3 */
148 return IGMP_V3_Unsolicited_Report_Interval; 152 interval_ms = IN_DEV_CONF_GET(
153 in_dev,
154 IGMPV3_UNSOLICITED_REPORT_INTERVAL);
155
156 interval_jiffies = msecs_to_jiffies(interval_ms);
157
158 /* _timer functions can't handle a delay of 0 jiffies so ensure
159 * we always return a positive value.
160 */
161 if (interval_jiffies <= 0)
162 interval_jiffies = 1;
163 return interval_jiffies;
149} 164}
150 165
151static void igmpv3_add_delrec(struct in_device *in_dev, struct ip_mc_list *im); 166static void igmpv3_add_delrec(struct in_device *in_dev, struct ip_mc_list *im);