From 8c8c20c2567de23c893e63d547590704f9d04574 Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Sun, 24 Dec 2023 11:39:30 -0600 Subject: [PATCH] Make multicast bind the IPV4 address if available https://github.com/Hamlib/Hamlib/issues/1461 --- src/network.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/network.c b/src/network.c index f50652d4a..a5d631215 100644 --- a/src/network.c +++ b/src/network.c @@ -1288,9 +1288,23 @@ void *multicast_receiver(void *arg) mreq.imr_multiaddr.s_addr = inet_addr(args->multicast_addr); - mreq.imr_interface.s_addr = htonl(INADDR_ANY); +#ifdef __MINGW32__ + + // we're not worrying about IPV6 right now as that will likely never occur on home network + if (strlen(ip4) > 0) + { + rig_debug(RIG_DEBUG_VERBOSE, "%s: multicast binding to %s\n", __func__, ip4); + mreq.imr_interface.s_addr = inet_addr(ip4); + } + else +#endif + { + rig_debug(RIG_DEBUG_VERBOSE, "%s: multicast binding to INADDR_ANY\n", __func__); + mreq.imr_interface.s_addr = htonl(INADDR_ANY); + } #ifdef __MINGW32__ + if (setsockopt(socket_fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (PCHAR)&mreq, sizeof(mreq)) < 0) #else