diff options
-rw-r--r-- | src/input/input_rtp.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/input/input_rtp.c b/src/input/input_rtp.c index cd072724b..c046e813b 100644 --- a/src/input/input_rtp.c +++ b/src/input/input_rtp.c @@ -147,11 +147,18 @@ static int host_connect_attempt(struct in_addr ia, int port) { } /* multicast ? */ if ((ntohl(sin.sin_addr.s_addr) >> 28) == 0xe) { +#if defined (__linux__) struct ip_mreqn mreqn; mreqn.imr_multiaddr.s_addr = sin.sin_addr.s_addr; mreqn.imr_address.s_addr = INADDR_ANY; mreqn.imr_ifindex = 0; +#elif defined (__FreeBSD__) + struct ip_mreq mreqn; + + mreqn.imr_multiaddr.s_addr = sin.sin_addr.s_addr; + mreqn.imr_interface.s_addr = INADDR_ANY; +#endif if (setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP,&mreqn,sizeof(mreqn))) { perror("setsockopt IP_ADD_MEMBERSHIP failed (multicast kernel?)"); exit(1); |