Messages in this thread | | | From | Daniel Ng <> | Subject | Multicast socket behaviour? | Date | Wed, 13 Aug 2008 07:39:37 +0000 (UTC) |
| |
Hi,
The below C code registers the socket with the multicast group 'HELLO_GROUP':
mreq.imr_multiaddr.s_addr=inet_addr(HELLO_GROUP); mreq.imr_address.s_addr=htonl(INADDR_ANY);
mreq.imr_ifindex = if_nametoindex("ppp1");
if (setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)) < 0) { perror("setsockopt"); exit(1); }
I understand that if 'INADDR_ANY' is used, it is up to the kernel to decide what action to take.
From my experiments, it seems that the interface corresponding to the highest '224.0.0.0' entry in the routing table is used.
Would someone please explain why this is so?
How difficult would it be to have the kernel join the HELLO_GROUP on *all* available multicast-capable interfaces? Why isn't this currently implemented?
I'm using 2.6.14.
Cheers, Daniel
| |