Bruce Simpson wrote: > Ian FREISLICH wrote: > > ... > > I can't quite remember exactly why imr_ifindex doesn't work, but > > on my hosts which have several hundred interfaces and my OSPF > > sessions are never on the interface that has the default route, > > until I explicitly set the imr_address, the kernel always chooses > > the interface which has the default route. > > > > Do you have applications which do not explicitly specify the interface > address to use for multicast group joins? > > If they do not, that's a bug in the application -- IPv4 and IPv6 > multicast *requires* that a link be specified somehow, either using the > new APIs which take an ifindex, or an IPv4 "primary address". quagga does specify the ifindex passed in a struct ip_mreqn in the imr_ifindex member to setsockopt, which reading the documentation should be sufficient, yet it is not. I have checked that it does set the correct ifindex. Setting the IP address in the imr_address member of the same struct correctly chooses the interface. > Unfortunately there has been historical breakage in the multicast APIs. > There are some apps which run before all interfaces have been ifconfig'd > up in the system, and they need to create multicast sockets. > > The kernel behaviour you describe is historical and I had to reintroduce > it to avoid breaking such applications. It is a kludge which we probably > can't retire until their developers fix their multicast apps to be aware > of multiple interfaces on the system. Is this the BSD struct ip_mreq hack? This particular code isn't using that. Ian -- Ian FreislichReceived on Wed Dec 24 2008 - 14:56:50 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:39 UTC