Mihai Chelaru wrote:
Hi, Currently if two UDP sockets join the same multicast group but on different interfaces both of them get a packet received on an interface regardingless the interface supplied when joined group. Also, when an UDP packet is received, the pcb match code seems to compare dst to socket bound address which is simply erronated IMO because you have to bound sockets to either INADDR_ANY or multicast group address in order to receive multicast datagrams.
Hi, Getting back on this one here is a summary how others handle it:- FreeBSD did change it to this in rev 1.140 of udp_usrreq.c but added a sysctl knob that controlled the delivery. Default was at that time old delivery type. Since then they implemented IGMPv3 rewrote much of the mcast code, now new behaviour being the only one used as far as I can tell. Anyway, they drop the that sysctl oid entirely and also droped support for interface index selection.
- OpenBSD has only our old behaviour- Solaris has only the new behaviour as far as I can tell from a test application - DFlyBSD did change in rev 1.7 of udp_usrreq.c, but also added a sysctl that defaults to the new conduct.
Also reading RFC3376 and RFC3678 (2.1), I believe we're not doing the correct thing, currently.
-- Thanks, Mihai