1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 // +build darwin freebsd netbsd openbsd
7 // Sockets for BSD variants
16 func maxListenerBacklog() int {
22 case "darwin", "freebsd":
23 n, err = syscall.SysctlUint32("kern.ipc.somaxconn")
25 // NOTE: NetBSD has no somaxconn-like kernel state so far
27 n, err = syscall.SysctlUint32("kern.somaxconn")
29 if n == 0 || err != nil {
30 return syscall.SOMAXCONN
35 func listenerSockaddr(s, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
40 switch v := a.(type) {
41 case *TCPAddr, *UnixAddr:
42 err := setDefaultListenerSockopts(s)
47 if v.IP.IsMulticast() {
48 err := setDefaultMulticastSockopts(s)
55 case syscall.AF_INET6:
56 v.IP = IPv6unspecified