2013-02-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
[official-gcc.git] / libgo / go / net / sock_solaris.go
blobad639cc4a7fbe0ce4a920064995a8d48d6b9bce3
1 // Copyright 2012 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 solaris
7 // Sockets for Solaris
9 package net
11 import (
12 "syscall"
15 func maxListenerBacklog() int {
16 // The kernel does not track the limit.
17 return syscall.SOMAXCONN
20 func listenerSockaddr(s, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
21 a := toAddr(la)
22 if a == nil {
23 return la, nil
25 switch v := a.(type) {
26 case *TCPAddr, *UnixAddr:
27 err := setDefaultListenerSockopts(s)
28 if err != nil {
29 return nil, err
31 case *UDPAddr:
32 if v.IP.IsMulticast() {
33 err := setDefaultMulticastSockopts(s)
34 if err != nil {
35 return nil, err
37 switch f {
38 case syscall.AF_INET:
39 v.IP = IPv4zero
40 case syscall.AF_INET6:
41 v.IP = IPv6unspecified
43 return v.sockaddr(f)
46 return la, nil