eeBSD.org>; Mon, 10 Aug 2026 21:14:10 GMT (envelope-from bugzilla-noreply@freebsd.org) Received: (from www@localhost) by kenobi.freebsd.org (8.15.2/8.15.2/Submit) id 67ALEAU1098374 for net@FreeBSD.org; Mon, 10 Aug 2026 21:14:10 GMT (envelope-from bugzilla-noreply@freebsd.org) X-Authentication-Warning: kenobi.freebsd.org: www set sender to bugzilla-noreply@freebsd.org using -f From: bugzilla-noreply@freebsd.org To: net@FreeBSD.org Subject: [Bug 193246] Bug in IPv6 multicast join(), uncovered by Jenkins Date: Mon, 10 Aug 2026 21:14:09 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: 10.0-RELEASE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: michaelo@FreeBSD.org X-Bugzilla-Status: In Progress X-Bugzilla-Resolution: X-Bugzilla-Priority: Normal X-Bugzilla-Assigned-To: bms@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated List-Id: Networking and TCP/IP with FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-net List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-net@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D193246 Michael Osipov changed: What |Removed |Added ---------------------------------------------------------------------------- CC|michael.osipov@innomotics.c | |om | --- Comment #33 from Michael Osipov --- (In reply to Adrian Chadd from comment #32) Picked this up, updated to lastest from HEAD and OpenJDK 25, three-line Java program. I don't have any IPv6 in use beyond ::1 on lo0. Minimalist test: import java.net.InetAddress; import java.net.MulticastSocket; public class Join { public static void main(String... args) throws Exception { var g =3D InetAddress.getAllByName("228.5.6.7"); var z =3D = new MulticastSocket(6790); z.joinGroup(g[0]); } } Then had AI to generate the dtrace code. Output was: # dtrace -s java-sockets.d -c 'java Join' 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D11 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 Exception in thread "main" java.net.SocketException: joinGroup failed at java.base/sun.nio.ch.DatagramSocketAdaptor.joinGroup(DatagramSocketAdaptor.= java:423) at java.base/java.net.MulticastSocket.joinGroup(MulticastSocket.java:294) at Join.main(Join.java:7) Caused by: java.lang.IllegalArgumentException: IPv6 socket cannot join IPv4 multicast group at java.base/sun.nio.ch.DatagramChannelImpl.innerJoin(DatagramChannelImpl.java= :1505) at java.base/sun.nio.ch.DatagramChannelImpl.join(DatagramChannelImpl.java:1586) at java.base/sun.nio.ch.DatagramSocketAdaptor.joinGroup(DatagramSocketAdaptor.= java:469) at java.base/sun.nio.ch.DatagramSocketAdaptor.joinGroup(DatagramSocketAdaptor.= java:420) ... 2 more 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Dsh fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D3 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D5 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D5 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D5 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:17 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D1= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D28 type=3D= 1 proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D28 type=3D= 1 proto=3D0 2026 Aug 10 22:49:18 setsockopt pid=3D51581 comm=3Djava fd=3D4 level=3D6553= 5 opt=3D512 val=3D82b9faebc len=3D4 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D4 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D5 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D5 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D28 type=3D= 1 proto=3D6 2026 Aug 10 22:49:18 setsockopt pid=3D51581 comm=3Djava fd=3D5 level=3D6 op= t=3D256 val=3D82b9fa9dc len=3D4 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D5 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D28 type=3D= 1 proto=3D6 2026 Aug 10 22:49:18 setsockopt pid=3D51581 comm=3Djava fd=3D5 level=3D6 op= t=3D1024 val=3D82b9fa9dc len=3D4 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D5 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D28 type=3D= 1 proto=3D6 2026 Aug 10 22:49:18 setsockopt pid=3D51581 comm=3Djava fd=3D5 level=3D6 op= t=3D512 val=3D82b9fa9dc len=3D4 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D5 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D28 type=3D= 2 proto=3D0 2026 Aug 10 22:49:18 setsockopt pid=3D51581 comm=3Djava fd=3D5 level=3D41 o= pt=3D27 val=3D82b9fb6b0 len=3D4 2026 Aug 10 22:49:18 setsockopt pid=3D51581 comm=3Djava fd=3D5 level=3D6553= 5 opt=3D512 val=3D82b9fb680 len=3D4 2026 Aug 10 22:49:18 setsockopt pid=3D51581 comm=3Djava fd=3D5 level=3D6553= 5 opt=3D4 val=3D82b9fb680 len=3D4 2026 Aug 10 22:49:18 setsockopt pid=3D51581 comm=3Djava fd=3D5 level=3D6553= 5 opt=3D32 val=3D82b9fb680 len=3D4 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D2= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D28 type=3D= 2 proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D2= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D2= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D2= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D2= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D2= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D2= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D2= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 2026 Aug 10 22:49:18 socket pid=3D51581 comm=3Djava domain=3D2 type=3D2= proto=3D0 2026 Aug 10 22:49:18 close pid=3D51581 comm=3Djava fd=3D6 based on this it wrote a sample C program which mimics Java's behavior: # cat mcast_repro.c #include #include #include #include #include #include #include #include #include static void die(const char *msg) { perror(msg); exit(1); } static void usage(const char *prog) { fprintf(stderr, "usage: %s 4|6 [v6only 0|1]\n" " 4 use PF_INET\n" " 6 use PF_INET6\n" " v6only only meaningful with PF_INET6 (default: 1)\n", prog); exit(2); } static void print_errno(const char *what) { fprintf(stderr, "%s failed: %s (errno=3D%d)\n", what, strerror(errno), errno); } int main(int argc, char **argv) { int fd; int family =3D 0; int on =3D 1; const char *group_str =3D "228.5.6.7"; if (argc < 2 || argc > 3) usage(argv[0]); if (strcmp(argv[1], "4") =3D=3D 0) family =3D PF_INET; else if (strcmp(argv[1], "6") =3D=3D 0) family =3D PF_INET6; else usage(argv[0]); if (argc =3D=3D 3) on =3D atoi(argv[2]) ? 1 : 0; printf("mode: family=3D%s", family =3D=3D PF_INET ? "PF_INET" : "PF_INE= T6"); if (family =3D=3D PF_INET6) printf(" v6only=3D%d", on); printf("\n"); fd =3D socket(family, SOCK_DGRAM, 0); if (fd < 0) die("socket"); printf("socket() ok -> fd=3D%d\n", fd); if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) die("SO_REUSEADDR"); printf("setsockopt(SO_REUSEADDR) ok\n"); if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0) die("SO_REUSEPORT"); printf("setsockopt(SO_REUSEPORT) ok\n"); if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) < 0) die("SO_BROADCAST"); printf("setsockopt(SO_BROADCAST) ok\n"); if (family =3D=3D PF_INET6) { if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0) die("IPV6_V6ONLY"); printf("setsockopt(IPV6_V6ONLY=3D%d) ok\n", on); } if (family =3D=3D PF_INET) { struct sockaddr_in sa4; struct ip_mreq mreq4; memset(&sa4, 0, sizeof(sa4)); sa4.sin_len =3D sizeof(sa4); sa4.sin_family =3D AF_INET; sa4.sin_port =3D htons(6790); sa4.sin_addr.s_addr =3D htonl(INADDR_ANY); if (bind(fd, (struct sockaddr *)&sa4, sizeof(sa4)) < 0) { print_errno("bind(AF_INET)"); close(fd); return 1; } printf("bind(AF_INET 0.0.0.0:6790) ok\n"); memset(&mreq4, 0, sizeof(mreq4)); if (inet_pton(AF_INET, group_str, &mreq4.imr_multiaddr) !=3D 1) die("inet_pton(AF_INET)"); mreq4.imr_interface.s_addr =3D htonl(INADDR_ANY); printf("attempting IP_ADD_MEMBERSHIP for %s\n", group_str); if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq4, sizeof(mreq4)) < 0) { print_errno("IP_ADD_MEMBERSHIP"); close(fd); return 1; } printf("IP_ADD_MEMBERSHIP ok -> joined IPv4 multicast successfully = on PF_INET\n"); } else { struct sockaddr_in6 sa6; struct ip_mreq mreq4; memset(&sa6, 0, sizeof(sa6)); sa6.sin6_len =3D sizeof(sa6); sa6.sin6_family =3D AF_INET6; sa6.sin6_port =3D htons(6790); sa6.sin6_addr =3D in6addr_any; if (bind(fd, (struct sockaddr *)&sa6, sizeof(sa6)) < 0) { print_errno("bind(AF_INET6)"); close(fd); return 1; } printf("bind(AF_INET6 :::6790) ok\n"); memset(&mreq4, 0, sizeof(mreq4)); if (inet_pton(AF_INET, group_str, &mreq4.imr_multiaddr) !=3D 1) die("inet_pton(AF_INET)"); mreq4.imr_interface.s_addr =3D htonl(INADDR_ANY); printf("attempting IP_ADD_MEMBERSHIP for %s\n", group_str); if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq4, sizeof(mreq4)) < 0) { print_errno("IP_ADD_MEMBERSHIP"); close(fd); return 1; } printf("IP_ADD_MEMBERSHIP ok -> joined IPv4 multicast successfully = on PF_INET6\n"); } close(fd); return 0; } $ cc -Wall -Wextra -o mcast_repro mcast_repro.c $ ./mcast_repro 4 mode: family=3DPF_INET socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok bind(AF_INET 0.0.0.0:6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP ok -> joined IPv4 multicast successfully on PF_INET $ ./mcast_repro 6 0 mode: family=3DPF_INET6 v6only=3D0 socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok setsockopt(IPV6_V6ONLY=3D0) ok bind(AF_INET6 :::6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP failed: Invalid argument (errno=3D22) $ ./mcast_repro 6 1 mode: family=3DPF_INET6 v6only=3D1 socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok setsockopt(IPV6_V6ONLY=3D1) ok bind(AF_INET6 :::6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP failed: Invalid argument (errno=3D22) $ ./mcast_repro 6 0 mode: family=3DPF_INET6 v6only=3D0 socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok setsockopt(IPV6_V6ONLY=3D0) ok bind(AF_INET6 :::6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP failed: Invalid argument (errno=3D22) Same program on HP-UX 11.31: osipovmi@deblndw028v:~ $ ./mcast_repro 4 mode: family=3DPF_INET socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok bind(AF_INET 0.0.0.0:6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP ok -> joined IPv4 multicast successfully on PF_INET osipovmi@deblndw028v:~ $ ./mcast_repro 6 mode: family=3DPF_INET6 v6only=3D1 socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok setsockopt(IPV6_V6ONLY=3D1) ok bind(AF_INET6 :::6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP failed: Operation not supported (errno=3D223) osipovmi@deblndw028v:~ $ ./mcast_repro 6 0 mode: family=3DPF_INET6 v6only=3D0 socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok setsockopt(IPV6_V6ONLY=3D0) ok bind(AF_INET6 :::6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP failed: Operation not supported (errno=3D223) osipovmi@deblndw028v:~ $ ./mcast_repro 6 1 mode: family=3DPF_INET6 v6only=3D1 socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok setsockopt(IPV6_V6ONLY=3D1) ok bind(AF_INET6 :::6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP failed: Operation not supported (errno=3D223) and RHEL 8.x: osipovmi@deblndw012x:~ $ ./mcast_repro 4 mode: family=3DPF_INET socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok bind(AF_INET 0.0.0.0:6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP ok -> joined IPv4 multicast successfully on PF_INET osipovmi@deblndw012x:~ $ ./mcast_repro 6 mode: family=3DPF_INET6 v6only=3D1 socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok setsockopt(IPV6_V6ONLY=3D1) ok bind(AF_INET6 :::6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP ok -> joined IPv4 multicast successfully on PF_INET6 osipovmi@deblndw012x:~ $ ./mcast_repro 6 0 mode: family=3DPF_INET6 v6only=3D0 socket() ok -> fd=3D3 setsockopt(SO_REUSEADDR) ok setsockopt(SO_REUSEPORT) ok setsockopt(SO_BROADCAST) ok setsockopt(IPV6_V6ONLY=3D0) ok bind(AF_INET6 :::6790) ok attempting IP_ADD_MEMBERSHIP for 228.5.6.7 IP_ADD_MEMBERSHIP ok -> joined IPv4 multicast successfully on PF_INET6 I am not an expert, let me know whether my approach is wrong and where to go from here. --=20 You are receiving this mail because: You are on the CC list for the bug.=