Imported Upstream version 4.7.2
[platform/upstream/gcc48.git] / libgo / go / net / sock_windows.go
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.
4
5 // Sockets for Windows
6
7 package net
8
9 import "syscall"
10
11 func maxListenerBacklog() int {
12         // TODO: Implement this
13         return syscall.SOMAXCONN
14 }
15
16 func listenerSockaddr(s syscall.Handle, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
17         a := toAddr(la)
18         if a == nil {
19                 return la, nil
20         }
21         switch v := a.(type) {
22         case *TCPAddr, *UnixAddr:
23                 err := setDefaultListenerSockopts(s)
24                 if err != nil {
25                         return nil, err
26                 }
27         case *UDPAddr:
28                 if v.IP.IsMulticast() {
29                         err := setDefaultMulticastSockopts(s)
30                         if err != nil {
31                                 return nil, err
32                         }
33                         switch f {
34                         case syscall.AF_INET:
35                                 v.IP = IPv4zero
36                         case syscall.AF_INET6:
37                                 v.IP = IPv6unspecified
38                         }
39                         return v.sockaddr(f)
40                 }
41         }
42         return la, nil
43 }