From 7e40ca221e254089b05fb9efcd69844a57f6a367 Mon Sep 17 00:00:00 2001 From: Zhang Boyang Date: Mon, 11 May 2020 08:08:59 +0000 Subject: [PATCH] windows: implement GetsockoptInt Change-Id: If0b17ccaba5c5d1e07499c222eb3f4c45a094636 GitHub-Last-Rev: a0fb2fc43d8458a0eed024012018ff1e3070b9bf GitHub-Pull-Request: golang/sys#70 Reviewed-on: https://go-review.googlesource.com/c/sys/+/233200 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- windows/syscall_windows.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/windows/syscall_windows.go b/windows/syscall_windows.go index 053d664d..b3e55035 100644 --- a/windows/syscall_windows.go +++ b/windows/syscall_windows.go @@ -1181,7 +1181,12 @@ type IPv6Mreq struct { Interface uint32 } -func GetsockoptInt(fd Handle, level, opt int) (int, error) { return -1, syscall.EWINDOWS } +func GetsockoptInt(fd Handle, level, opt int) (int, error) { + v := int32(0) + l := int32(unsafe.Sizeof(v)) + err := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l) + return int(v), err +} func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) { sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}