@@ -77,7 +77,8 @@ bool mockUDPListen (int sock, uint32_t dstaddr, uint16_t port, uint32_t mcast)
7777 // Filling server information
7878 servaddr.sin_family = AF_INET;
7979 (void ) dstaddr;
80- servaddr.sin_addr .s_addr = htonl (global_source_address);
80+ // servaddr.sin_addr.s_addr = htonl(global_source_address);
81+ servaddr.sin_addr .s_addr = htonl (INADDR_ANY);
8182 servaddr.sin_port = htons (mockport);
8283
8384 // Bind the socket with the server address
@@ -89,15 +90,19 @@ bool mockUDPListen (int sock, uint32_t dstaddr, uint16_t port, uint32_t mcast)
8990 else
9091 mockverbose (" UDP server on port %d (sock=%d)\n " , mockport, sock);
9192
93+ if (!mcast)
94+ mcast = inet_addr (" 224.0.0.1" ); // all hosts group
9295 if (mcast)
9396 {
9497 // https://web.cs.wpi.edu/~claypool/courses/4514-B99/samples/multicast.c
9598 // https://stackoverflow.com/questions/12681097/c-choose-interface-for-udp-multicast-socket
9699
97100 struct ip_mreq mreq;
98101 mreq.imr_multiaddr .s_addr = mcast;
99- mreq.imr_interface .s_addr = htonl (global_source_address);
100- if (global_ipv4_netfmt)
102+ // mreq.imr_interface.s_addr = htonl(global_source_address);
103+ mreq.imr_interface .s_addr = htonl (INADDR_ANY);
104+
105+ if (host_interface)
101106 {
102107#if __APPLE__
103108 int idx = if_nametoindex (host_interface);
@@ -115,6 +120,8 @@ bool mockUDPListen (int sock, uint32_t dstaddr, uint16_t port, uint32_t mcast)
115120 fprintf (stderr, MOCK " can't join multicast group addr %08x\n " , (int )mcast);
116121 return false ;
117122 }
123+ else
124+ mockverbose (" joined multicast group addr %08lx\n " , ntohl (mcast));
118125 }
119126
120127 return true ;
0 commit comments