Skip to content

Commit 448486a

Browse files
authored
emulation on host: lwIP always receive multicast packets, enable and fix multicast udp server (#7386)
1 parent 64f1f7b commit 448486a

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

tests/host/common/UdpContextSocket.cpp

+10-3
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)