diff options
Diffstat (limited to 'debian/patches/src_libgo_go_net_sockopt_gnu.go.diff')
-rw-r--r-- | debian/patches/src_libgo_go_net_sockopt_gnu.go.diff | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/debian/patches/src_libgo_go_net_sockopt_gnu.go.diff b/debian/patches/src_libgo_go_net_sockopt_gnu.go.diff new file mode 100644 index 0000000..43f1720 --- /dev/null +++ b/debian/patches/src_libgo_go_net_sockopt_gnu.go.diff @@ -0,0 +1,50 @@ +Index: gcc-6-6.2.1-4.1/src/libgo/go/net/sockopt_gnu.go +=================================================================== +--- /dev/null ++++ gcc-6-6.2.1-4.1/src/libgo/go/net/sockopt_gnu.go +@@ -0,0 +1,45 @@ ++// Copyright 2011 The Go Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style ++// license that can be found in the LICENSE file. ++ ++// +build gnu ++ ++package net ++ ++import ( ++ "os" ++ "syscall" ++) ++ ++func setDefaultSockopts(s, family, sotype int, ipv6only bool) error { ++ if family == syscall.AF_INET6 && sotype != syscall.SOCK_RAW { ++ // Allow both IP versions even if the OS default ++ // is otherwise. Note that some operating systems ++ // never admit this option. ++ syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, boolint(ipv6only)) ++ } ++ // Allow broadcast. ++ return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1)) ++} ++ ++func setDefaultListenerSockopts(s int) error { ++ // Allow reuse of recently-used addresses. ++ return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1)) ++} ++ ++func setDefaultMulticastSockopts(s int) error { ++ // Allow multicast UDP and raw IP datagram sockets to listen ++ // concurrently across multiple listeners. ++ if err := syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1); err != nil { ++ return os.NewSyscallError("setsockopt", err) ++ } ++ // Allow reuse of recently-used ports. ++ // This option is supported only in descendants of 4.4BSD, ++ // to make an effective multicast application that requires ++ // quick draw possible. ++ // Not supported on GNU/Hurd ++ //if syscall.SO_REUSEPORT != 0 { ++ // return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEPORT, 1)) ++ //} ++ return nil ++} |