netdev
[Top] [All Lists]

Re: ip multicast bug

To: Karlis Peisenieks <karlis@xxxxx>
Subject: Re: ip multicast bug
From: David Stevens <dlstevens@xxxxxxxxxx>
Date: Tue, 17 Feb 2004 14:50:18 -0700
Cc: netdev@xxxxxxxxxxx, netdev-bounce@xxxxxxxxxxx
In-reply-to: <20040217155516.GA20477@xxxxx>
Sender: netdev-bounce@xxxxxxxxxxx

Karlis,
I was able to reproduce your problem, finally. Your patch does have
a couple problems, though. First, the igmpv3_del_delrec() call should be there
whether or not the interface is IFF_UP (to prevent a memory leak) and second,
portions of igmp_group_added should still be run when the interface is down,
so that the group will properly be joined when the interface is brought up.
I think the patch below fixes the problem. Thanks for reporting it!

+-DLS

--- linux-2.6.3-rc4/net/ipv4/igmp.c 2004-02-17 12:19:51.000000000 -0800
+++ linux-2.6.3-rc4F1/net/ipv4/igmp.c 2004-02-17 13:25:39.334792760 -0800
@@ -1067,7 +1067,7 @@
reporter = im->reporter;
igmp_stop_timer(im);

- if (!in_dev->dead) {
+ if (!in_dev->dead && (in_dev->dev->flags & IFF_UP)) {
if (IGMP_V1_SEEN(in_dev))
goto done;
if (IGMP_V2_SEEN(in_dev)) {
@@ -1098,7 +1098,7 @@
if (im->multiaddr == IGMP_ALL_HOSTS)
return;

- if (in_dev->dead)
+ if (in_dev->dead || !(in_dev->dev->flags & IFF_UP))
return;
if (IGMP_V1_SEEN(in_dev) || IGMP_V2_SEEN(in_dev)) {
spin_lock_bh(&im->lock);

(See attached file: igmpf1.patch)

Attachment: igmpf1.patch
Description: Binary data

<Prev in Thread] Current Thread [Next in Thread>