HEADSUP: arp-v2 has been committed
Ian FREISLICH
ianf at clue.co.za
Wed Dec 24 07:56:50 PST 2008
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 Freislich
More information about the freebsd-net
mailing list