summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/input/input_rtp.c7
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);