Use SO_BINDTODEVICE if we're using old multicast API (i.e., struct ip_mreq
and not ip_mreqn). This should get multicasts on unnumbered PtP links work.
This commit is contained in:
parent
9da4d14340
commit
36154beb70
1 changed files with 10 additions and 0 deletions
|
@ -413,6 +413,16 @@ sk_open(sock *s)
|
||||||
ASSERT(s->iface);
|
ASSERT(s->iface);
|
||||||
mreq.imr_ifindex = s->iface->index;
|
mreq.imr_ifindex = s->iface->index;
|
||||||
set_inaddr(&mreq.imr_address, s->iface->ip);
|
set_inaddr(&mreq.imr_address, s->iface->ip);
|
||||||
|
#ifdef SO_BINDTODEVICE
|
||||||
|
{
|
||||||
|
struct ifreq ifr;
|
||||||
|
strcpy(ifr.ifr_name, s->iface->name);
|
||||||
|
if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)) < 0)
|
||||||
|
ERR("SO_BINDTODEVICE");
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#error Multicasts not supported on PtP devices /* FIXME: Solve it somehow? */
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
struct in_addr mreq;
|
struct in_addr mreq;
|
||||||
struct ip_mreq mreq_add;
|
struct ip_mreq mreq_add;
|
||||||
|
|
Loading…
Reference in a new issue