up
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
//go:build !windows
|
||||
|
||||
package udp
|
||||
|
||||
import "golang.org/x/sys/unix"
|
||||
|
||||
// setSocketReuse enables SO_REUSEADDR + SO_REUSEPORT on Linux/macOS so
|
||||
// multiple processes can share a multicast UDP port (matches the Windows
|
||||
// behaviour with SO_REUSEADDR).
|
||||
func setSocketReuse(fd uintptr) error {
|
||||
if err := unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_REUSEADDR, 1); err != nil {
|
||||
return err
|
||||
}
|
||||
// SO_REUSEPORT isn't defined on every Unix; the syscall returning
|
||||
// ENOPROTOOPT is fine to ignore.
|
||||
_ = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_REUSEPORT, 1)
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user