sys_windows.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. "net"
  7. "syscall"
  8. "unsafe"
  9. "golang.org/x/sys/windows"
  10. )
  11. func probeProtocolStack() int {
  12. var p uintptr
  13. return int(unsafe.Sizeof(p))
  14. }
  15. const (
  16. sysAF_UNSPEC = windows.AF_UNSPEC
  17. sysAF_INET = windows.AF_INET
  18. sysAF_INET6 = windows.AF_INET6
  19. sysSOCK_RAW = windows.SOCK_RAW
  20. sizeofSockaddrInet4 = 0x10
  21. sizeofSockaddrInet6 = 0x1c
  22. )
  23. func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
  24. l := uint32(len(b))
  25. err := syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), (*int32)(unsafe.Pointer(&l)))
  26. return int(l), err
  27. }
  28. func setsockopt(s uintptr, level, name int, b []byte) error {
  29. return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), int32(len(b)))
  30. }
  31. func recvmsg(s uintptr, buffers [][]byte, oob []byte, flags int, network string) (n, oobn int, recvflags int, from net.Addr, err error) {
  32. return 0, 0, 0, nil, errNotImplemented
  33. }
  34. func sendmsg(s uintptr, buffers [][]byte, oob []byte, to net.Addr, flags int) (int, error) {
  35. return 0, errNotImplemented
  36. }
  37. func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
  38. return 0, errNotImplemented
  39. }
  40. func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
  41. return 0, errNotImplemented
  42. }