Hello David,
Michal,
I believe the patch I submitted yesterday fixes this
problem, and in a simpler way.
Somehow I've missed that e-mail (It did not appear on the thread's list at MARC
archives). Sorry for that.
+-DLS
I've reviewed your patch (the IPv4 part of it) and I think I can say that
our soulutions are actually quite similar.
But I can come up with one difference that I'd like know your opinion on.
Suppose the following situatuion:
1) create pppX interface:
IP: A.B.C.D
2) join a multicast group by address: A.B.C.D
ASSUMPTION: no other interface with the same IP address exists;
the result should be that the group is joined on the pppX interface
3) create pppY interface
IP: A.B.C.D (Yes the same IP, not unusual on ppp links.)
4) delete the pppX interace
5) attempt to leave the multicast group by address: A.B.C.D
6) * if your algorthim is used -EADDRNOTAVAIL is returned
* if mine is used the multicast group is left on the pppX interface
Surely this won't be a common problem but I think it's worth pointing out
here.
Michal
"Michal Ruzicka" [off-list ref] wrote on 08/17/2006 05:26:35
AM:
I've reviewed your patch (the IPv4 part of it) and I think I can say
that
our soulutions are actually quite similar.
But I can come up with one difference that I'd like know your opinion
on.
If you have a duplicated address and the application is not using
interface index to identify the interface, then which one you join or
leave
on is not unique, and which one you'll get is not defined. It is, in fact,
an error to leave the group on an interface with a different index, and
the duplicate scenario has effectively changed the meaning of that
address's
interface.
In the same scenario, if you have not deleted any interfaces and
attempt to leave the group, your code may get the "pppY" interface from
ip_mc_find_dev(), not have a matching index for the group you actually
joined, and will return EADDRNOTAVAIL rather than leaving the group you
joined on.
In both cases, it'd simply be an error for an application to be
using address to identify the interface when that is not unique. If the
addresses are used (or reused) on multiple interfaces, the application
has to use interface index to work properly.
+-DLS
Suppose the following situatuion:
1) create pppX interface:
IP: A.B.C.D
2) join a multicast group by address: A.B.C.D
ASSUMPTION: no other interface with the same IP address exists;
the result should be that the group is joined on the pppX interface
3) create pppY interface
IP: A.B.C.D (Yes the same IP, not unusual on ppp links.)
4) delete the pppX interace
5) attempt to leave the multicast group by address: A.B.C.D
6) * if your algorthim is used -EADDRNOTAVAIL is returned
* if mine is used the multicast group is left on the pppX interface
Surely this won't be a common problem but I think it's worth pointing
out
here.
Michal
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html