github.com/dylandreimerink/gobpfld@v0.6.1-0.20220205171531-e79c330ad608/internal/syscall/sockopt.go (about) 1 package syscall 2 3 import ( 4 "unsafe" 5 6 "golang.org/x/sys/unix" 7 ) 8 9 // Getsockopt is a public version of the unix.getsockopt without additional wrappers which allows us to use any 10 // value type we want. But does require the usage of unsafe. 11 func Getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *Socklen) (err error) { 12 _, _, e1 := unix.Syscall6( 13 unix.SYS_GETSOCKOPT, 14 uintptr(s), 15 uintptr(level), 16 uintptr(name), 17 uintptr(val), 18 uintptr(unsafe.Pointer(vallen)), 19 0, 20 ) 21 if e1 != 0 { 22 err = &Error{ 23 Errno: e1, 24 } 25 } 26 return 27 } 28 29 // Setsockopt is a public version of the unix.setsockopt without additional wrappers which allows us to use any 30 // value type we want. But does require the usage of unsafe. 31 func Setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { 32 _, _, e1 := unix.Syscall6( 33 unix.SYS_SETSOCKOPT, 34 uintptr(s), 35 uintptr(level), 36 uintptr(name), 37 uintptr(val), 38 vallen, 39 0, 40 ) 41 if e1 != 0 { 42 err = &Error{ 43 Errno: e1, 44 } 45 } 46 return 47 }