summaryrefslogtreecommitdiffstats
path: root/libgo/go/net/sock_linux.go
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-09 08:19:58 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2012-02-09 08:19:58 +0000
commit2da6f72bb78de6e6ca3d387d970cb21bf36684be (patch)
tree7ca86535c5a6b99d4cc432ba5cfddabc5ee4ea16 /libgo/go/net/sock_linux.go
parent98ea39f2b59cc0a4a0a32b095e8f0faa84fd7882 (diff)
downloadppe42-gcc-2da6f72bb78de6e6ca3d387d970cb21bf36684be.tar.gz
ppe42-gcc-2da6f72bb78de6e6ca3d387d970cb21bf36684be.zip
libgo: Update to weekly.2012-02-07.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184034 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgo/go/net/sock_linux.go')
-rw-r--r--libgo/go/net/sock_linux.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/libgo/go/net/sock_linux.go b/libgo/go/net/sock_linux.go
index 2cbc34f24b3..0743843bf28 100644
--- a/libgo/go/net/sock_linux.go
+++ b/libgo/go/net/sock_linux.go
@@ -25,3 +25,27 @@ func maxListenerBacklog() int {
}
return n
}
+
+func listenerSockaddr(s, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
+ a := toAddr(la)
+ if a == nil {
+ return la, nil
+ }
+ switch v := a.(type) {
+ case *UDPAddr:
+ if v.IP.IsMulticast() {
+ err := setDefaultMulticastSockopts(s)
+ if err != nil {
+ return nil, err
+ }
+ switch f {
+ case syscall.AF_INET:
+ v.IP = IPv4zero
+ case syscall.AF_INET6:
+ v.IP = IPv6unspecified
+ }
+ return v.sockaddr(f)
+ }
+ }
+ return la, nil
+}
OpenPOWER on IntegriCloud