From c6810e76edffb2777fc0c3bf0344fa3f107c5d72 Mon Sep 17 00:00:00 2001 From: Albert Strasheim Date: Wed, 23 Mar 2011 14:33:48 -0400 Subject: [PATCH] syscall: GetsockoptInt. R=rsc, iant CC=golang-dev https://golang.org/cl/4271060 --- src/pkg/syscall/syscall_linux.go | 8 +++++++- src/pkg/syscall/syscall_linux_386.go | 5 +++++ src/pkg/syscall/syscall_linux_amd64.go | 1 + src/pkg/syscall/syscall_linux_arm.go | 1 + src/pkg/syscall/zsyscall_linux_386.go | 2 +- src/pkg/syscall/zsyscall_linux_amd64.go | 10 +++++++++- src/pkg/syscall/zsyscall_linux_arm.go | 10 +++++++++- 7 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/pkg/syscall/syscall_linux.go b/src/pkg/syscall/syscall_linux.go index 110f2e6ff5..f27eb1de55 100644 --- a/src/pkg/syscall/syscall_linux.go +++ b/src/pkg/syscall/syscall_linux.go @@ -415,6 +415,13 @@ func Socketpair(domain, typ, proto int) (fd [2]int, errno int) { return } +func GetsockoptInt(fd, level, opt int) (value, errno int) { + var n int32 + vallen := _Socklen(4) + errno = getsockopt(fd, level, opt, uintptr(unsafe.Pointer(&n)), &vallen) + return int(n), errno +} + func SetsockoptInt(fd, level, opt int, value int) (errno int) { var n = int32(value) return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(&n)), 4) @@ -675,7 +682,6 @@ func Reboot(cmd int) (errno int) { // Sendto // Recvfrom // Socketpair -// Getsockopt /* * Direct access diff --git a/src/pkg/syscall/syscall_linux_386.go b/src/pkg/syscall/syscall_linux_386.go index dbdb0897da..eaf2fa4da0 100644 --- a/src/pkg/syscall/syscall_linux_386.go +++ b/src/pkg/syscall/syscall_linux_386.go @@ -130,6 +130,11 @@ func socket(domain int, typ int, proto int) (fd int, errno int) { return } +func getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (errno int) { + _, errno = socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + return +} + func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) { _, errno = socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) return diff --git a/src/pkg/syscall/syscall_linux_amd64.go b/src/pkg/syscall/syscall_linux_amd64.go index 15f00eb2d2..2acae3cb46 100644 --- a/src/pkg/syscall/syscall_linux_amd64.go +++ b/src/pkg/syscall/syscall_linux_amd64.go @@ -40,6 +40,7 @@ package syscall //sys connect(s int, addr uintptr, addrlen _Socklen) (errno int) //sysnb getgroups(n int, list *_Gid_t) (nn int, errno int) //sysnb setgroups(n int, list *_Gid_t) (errno int) +//sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (errno int) //sys setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) //sysnb socket(domain int, typ int, proto int) (fd int, errno int) //sysnb socketpair(domain int, typ int, proto int, fd *[2]int) (errno int) diff --git a/src/pkg/syscall/syscall_linux_arm.go b/src/pkg/syscall/syscall_linux_arm.go index 4927aaa168..e5920d7baf 100644 --- a/src/pkg/syscall/syscall_linux_arm.go +++ b/src/pkg/syscall/syscall_linux_arm.go @@ -57,6 +57,7 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) //sys connect(s int, addr uintptr, addrlen _Socklen) (errno int) //sysnb getgroups(n int, list *_Gid_t) (nn int, errno int) = SYS_GETGROUPS32 //sysnb setgroups(n int, list *_Gid_t) (errno int) = SYS_SETGROUPS32 +//sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (errno int) //sys setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) //sysnb socket(domain int, typ int, proto int) (fd int, errno int) //sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int) diff --git a/src/pkg/syscall/zsyscall_linux_386.go b/src/pkg/syscall/zsyscall_linux_386.go index 6777e6cf94..e66b00135a 100644 --- a/src/pkg/syscall/zsyscall_linux_386.go +++ b/src/pkg/syscall/zsyscall_linux_386.go @@ -1,4 +1,4 @@ -// mksyscall.sh -l32 syscall_linux.go syscall_linux_386.go +// mksyscall.pl -l32 syscall_linux.go syscall_linux_386.go // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT package syscall diff --git a/src/pkg/syscall/zsyscall_linux_amd64.go b/src/pkg/syscall/zsyscall_linux_amd64.go index f29d462d4a..82e98a99ad 100644 --- a/src/pkg/syscall/zsyscall_linux_amd64.go +++ b/src/pkg/syscall/zsyscall_linux_amd64.go @@ -1,4 +1,4 @@ -// mksyscall.sh syscall_linux.go syscall_linux_amd64.go +// mksyscall.pl syscall_linux.go syscall_linux_amd64.go // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT package syscall @@ -1072,6 +1072,14 @@ func setgroups(n int, list *_Gid_t) (errno int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (errno int) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) { _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) errno = int(e1) diff --git a/src/pkg/syscall/zsyscall_linux_arm.go b/src/pkg/syscall/zsyscall_linux_arm.go index 2bf007f04c..9a1f086fef 100644 --- a/src/pkg/syscall/zsyscall_linux_arm.go +++ b/src/pkg/syscall/zsyscall_linux_arm.go @@ -1,4 +1,4 @@ -// mksyscall.sh -b32 syscall_linux.go syscall_linux_arm.go +// mksyscall.pl -b32 syscall_linux.go syscall_linux_arm.go // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT package syscall @@ -807,6 +807,14 @@ func setgroups(n int, list *_Gid_t) (errno int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (errno int) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + errno = int(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) { _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) errno = int(e1) -- 2.50.0