sys_windows.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright 2017 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package socket
  5. import (
  6. "syscall"
  7. "unsafe"
  8. "golang.org/x/sys/windows"
  9. )
  10. func probeProtocolStack() int {
  11. var p uintptr
  12. return int(unsafe.Sizeof(p))
  13. }
  14. const (
  15. sysAF_UNSPEC = windows.AF_UNSPEC
  16. sysAF_INET = windows.AF_INET
  17. sysAF_INET6 = windows.AF_INET6
  18. sysSOCK_RAW = windows.SOCK_RAW
  19. sizeofSockaddrInet4 = 0x10
  20. sizeofSockaddrInet6 = 0x1c
  21. )
  22. func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
  23. l := uint32(len(b))
  24. err := syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), (*int32)(unsafe.Pointer(&l)))
  25. return int(l), err
  26. }
  27. func setsockopt(s uintptr, level, name int, b []byte) error {
  28. return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), int32(len(b)))
  29. }
  30. func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
  31. return 0, errNotImplemented
  32. }
  33. func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
  34. return 0, errNotImplemented
  35. }
  36. func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
  37. return 0, errNotImplemented
  38. }
  39. func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
  40. return 0, errNotImplemented
  41. }