From 9eb1bfa1ce65ae8a6ff3114b0aaf9a41a6cf3560 Mon Sep 17 00:00:00 2001 From: Matt Layher Date: Thu, 28 Mar 2019 22:42:46 -0400 Subject: [PATCH] unix: add GetsockoptUint64 and SetsockoptUint64 The AF_VSOCK address family on Linux uses unsigned long long (uint64 in Go) values for getting and setting some socket options. Change-Id: If28f6a5d04c0c988b7cbcaf2bf8d184a69329882 Reviewed-on: https://go-review.googlesource.com/c/sys/+/169959 Run-TryBot: Matt Layher TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- unix/syscall_unix.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/unix/syscall_unix.go b/unix/syscall_unix.go index ae59fba0..0ed1d58d 100644 --- a/unix/syscall_unix.go +++ b/unix/syscall_unix.go @@ -294,6 +294,13 @@ func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { return &tv, err } +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { var rsa RawSockaddrAny var len _Socklen = SizeofSockaddrAny @@ -351,6 +358,10 @@ func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) } +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + func Socket(domain, typ, proto int) (fd int, err error) { if domain == AF_INET6 && SocketDisableIPv6 { return -1, EAFNOSUPPORT