]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: add linux specific Getsockopt for Ucred struct
authorAndreas Jellinghaus <andreas@ionisiert.de>
Wed, 12 Sep 2012 13:38:21 +0000 (06:38 -0700)
committerIan Lance Taylor <iant@golang.org>
Wed, 12 Sep 2012 13:38:21 +0000 (06:38 -0700)
SO_PEERCRED on unix domain socket will fill a Ucred struct,
thus linux needs a custom Getsockopt variant.
Fixes #3836.

R=golang-dev, rsc, iant
CC=golang-dev
https://golang.org/cl/6445104

src/pkg/syscall/syscall_linux.go

index fbe6b045769c41f544dcf1ffcd611ba31a01ca27..797e46c0cb73adfa21c787c4707b3e61b8a0f6ab 100644 (file)
@@ -477,6 +477,13 @@ func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
        return &value, err
 }
 
+func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
+       var value Ucred
+       vallen := _Socklen(SizeofUcred)
+       err := getsockopt(fd, level, opt, uintptr(unsafe.Pointer(&value)), &vallen)
+       return &value, err
+}
+
 func SetsockoptInt(fd, level, opt int, value int) (err error) {
        var n = int32(value)
        return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(&n)), 4)