Re: multicast group memberships purge on interface delete

David Stevens
2006-08-23T18:51:54Z

Michal,

> My question/suggestion:
> Would it feasible to drop the relevant entries from sockets' multicast
> membership lists on the interface
> delete?

Yes, I think this is needed. The original BSD code didn't have
this
problem because it didn't support removal of a device. I wondered for a
while whether an app should care whether the device was removed or not on
a "leave", but I think it probably should get ENODEV in that case, just
as it would for any invalid interface index, whether or not it used to
be valid. So, simply removing the memberships and filters on device
destroy looks right to me.

I'm not sure that maintaining a per-device socket list is
necessary,
since removal of a device is relatively unusual, and that may make locking
and reference counting more complicated (maybe not). Probably a simple
search of all UDP sockets with non-null multicast lists and matching
interface index is sufficient.
IGMPv3 is there fully, and uses a more efficient way of tracking
interface and socket filter intersections and unions than the "obvious"
way as suggested by the RFC. I don't think it is affected either way by
this.

I'll either do or review a patch for this, depending on who
gets to it first. :-)

+-DLS