diff options
Diffstat (limited to 'net/ipv4/igmp.c')
-rw-r--r-- | net/ipv4/igmp.c | 19 |
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 | ||
143 | static int unsolicited_report_interval(struct in_device *in_dev) | 143 | static 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 | ||
151 | static void igmpv3_add_delrec(struct in_device *in_dev, struct ip_mc_list *im); | 166 | static void igmpv3_add_delrec(struct in_device *in_dev, struct ip_mc_list *im); |