...
Source file src/net/sockopt_bsd.go
1
2
3
4
5
6
7 package net
8
9 import (
10 "os"
11 "runtime"
12 "syscall"
13 )
14
15 func setDefaultSockopts(s, family, sotype int, ipv6only bool) error {
16 if runtime.GOOS == "dragonfly" && sotype != syscall.SOCK_RAW {
17
18
19
20
21 switch family {
22 case syscall.AF_INET:
23 syscall.SetsockoptInt(s, syscall.IPPROTO_IP, syscall.IP_PORTRANGE, syscall.IP_PORTRANGE_HIGH)
24 case syscall.AF_INET6:
25 syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_PORTRANGE, syscall.IPV6_PORTRANGE_HIGH)
26 }
27 }
28 if supportsIPv4map() && family == syscall.AF_INET6 && sotype != syscall.SOCK_RAW {
29
30
31
32 syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, boolint(ipv6only))
33 }
34
35 return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1))
36 }
37
38 func setDefaultListenerSockopts(s int) error {
39
40 return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1))
41 }
42
43 func setDefaultMulticastSockopts(s int) error {
44
45
46 if err := syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1); err != nil {
47 return os.NewSyscallError("setsockopt", err)
48 }
49
50
51
52
53 return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEPORT, 1))
54 }
55
View as plain text