From 390a48357c32da55f23662160ca7b720698b547b Mon Sep 17 00:00:00 2001 From: xqzr <34030394+xqzr@users.noreply.github.com> Date: Sat, 29 Mar 2025 20:29:39 +0800 Subject: [PATCH 1/2] Try Fix sockopt `Interface` miss multicast on Windows --- transport/internet/sockopt_windows.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/transport/internet/sockopt_windows.go b/transport/internet/sockopt_windows.go index fa45011d2f1d..b76b4a070987 100644 --- a/transport/internet/sockopt_windows.go +++ b/transport/internet/sockopt_windows.go @@ -13,6 +13,8 @@ const ( TCP_FASTOPEN = 15 IP_UNICAST_IF = 31 IPV6_UNICAST_IF = 31 + IPV6_MULTICAST_IF = 9 + IP_MULTICAST_IF = 9 ) func setTFO(fd syscall.Handle, tfo int) error { @@ -41,10 +43,16 @@ func applyOutboundSocketOptions(network string, address string, fd uintptr, conf if err := syscall.SetsockoptInt(syscall.Handle(fd), syscall.IPPROTO_IP, IP_UNICAST_IF, int(idx)); err != nil { return errors.New("failed to set IP_UNICAST_IF").Base(err) } + if err := syscall.SetsockoptInt(syscall.Handle(fd), syscall.IPPROTO_IP, IP_MULTICAST_IF, int(idx)); err != nil { + return errors.New("failed to set IP_MULTICAST_IF").Base(err) + } } else { if err := syscall.SetsockoptInt(syscall.Handle(fd), syscall.IPPROTO_IPV6, IPV6_UNICAST_IF, inf.Index); err != nil { return errors.New("failed to set IPV6_UNICAST_IF").Base(err) } + if err := syscall.SetsockoptInt(syscall.Handle(fd), syscall.IPPROTO_IPV6, IPV6_MULTICAST_IF, inf.Index); err != nil { + return errors.New("failed to set IPV6_MULTICAST_IF").Base(err) + } } } From 56ca90196da559f4c43b345848fa420b10a06ac3 Mon Sep 17 00:00:00 2001 From: xqzr <34030394+xqzr@users.noreply.github.com> Date: Sun, 30 Mar 2025 23:23:21 +0800 Subject: [PATCH 2/2] 16 & 17L SW --- transport/internet/sockopt_windows.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transport/internet/sockopt_windows.go b/transport/internet/sockopt_windows.go index b76b4a070987..e1c1d25e3f06 100644 --- a/transport/internet/sockopt_windows.go +++ b/transport/internet/sockopt_windows.go @@ -13,8 +13,8 @@ const ( TCP_FASTOPEN = 15 IP_UNICAST_IF = 31 IPV6_UNICAST_IF = 31 - IPV6_MULTICAST_IF = 9 IP_MULTICAST_IF = 9 + IPV6_MULTICAST_IF = 9 ) func setTFO(fd syscall.Handle, tfo int) error {