netdev
[Top] [All Lists]

Re: MLD problems (again) [PATCH]

To: Takashi Hibi <hibi665@xxxxxxx>
Subject: Re: MLD problems (again) [PATCH]
From: David Stevens <dlstevens@xxxxxxxxxx>
Date: Sun, 11 Jan 2004 22:49:08 -0700
Cc: netdev@xxxxxxxxxxx, davem@xxxxxxxxxx
Importance: Normal
Sender: netdev-bounce@xxxxxxxxxxx
Sensitivity:

Takashi,
I believe the patch below will fix the problem you
had with MCAST_JOIN_SOURCE_GROUP not sending a
report. There was a typo in the source filter switching that did
two deletes, rather than an delete and an add.

Dave,
Although IGMPv3 didn't have any problems, this patch
also re-arranges the order of the filter changes. I think it's cleaner
to add the new one first and then delete the old one, rather than
having a small window with no filter set. So, this is a bug fix for MLD
and a code clean-up for IGMPv3.
This bug and patch should also apply to the 2.4 line.

+-DLS

[included in-line for viewing and as an attachment for unmangled
whitespace]

--- linux-2.6.1/net/ipv6/mcast.c 2004-01-08 22:59:56.000000000 -0800
+++ linux-2.6.1F1/net/ipv6/mcast.c 2004-01-11 21:06:05.000000000 -0800
@@ -372,9 +372,9 @@
goto done;
} else if (pmc->sfmode != omode) {
/* allow mode switches for empty-set filters */
+ ip6_mc_add_src(idev, group, omode, 0, 0, 0);
ip6_mc_del_src(idev, group, pmc->sfmode, 0, 0, 0);
pmc->sfmode = omode;
- ip6_mc_del_src(idev, group, pmc->sfmode, 0, 0, 0);
}

psl = pmc->sflist;
--- linux-2.6.1/net/ipv4/igmp.c 2004-01-08 23:00:12.000000000 -0800
+++ linux-2.6.1F1/net/ipv4/igmp.c 2004-01-11 21:27:41.000000000 -0800
@@ -1749,11 +1749,10 @@
goto done;
} else if (pmc->sfmode != omode) {
/* allow mode switches for empty-set filters */
+ ip_mc_add_src(in_dev, &mreqs->imr_multiaddr, omode, 0, 0, 0);
ip_mc_del_src(in_dev, &mreqs->imr_multiaddr, pmc->sfmode, 0,
0, 0);
pmc->sfmode = omode;
- ip_mc_add_src(in_dev, &mreqs->imr_multiaddr, pmc->sfmode, 0,
- 0, 0);
}

psl = pmc->sflist;

(See attached file: 2.6.1MLD.patch)

Attachment: 2.6.1MLD.patch
Description: Binary data

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