aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2021-11-03 13:43:12 -0700
committerJosh Bleecher Snyder <josharian@gmail.com>2021-11-03 21:45:33 +0000
commitd3f5dd57811ca6c55654e67c58cf594fc2e5091e (patch)
tree8dec20e267174282b3c11a8fd1d4690d114915a7 /src
parent7f2463cc363fe8dbcbb89d521d1ede650de86c9b (diff)
downloadgo-d3f5dd57811ca6c55654e67c58cf594fc2e5091e.tar.xz
syscall: migrate new UDP send/recv API to internal/syscall/unix
CL 331490 and friends added new API to package syscall. This was a mistake that we need to fix before Go 1.18 is released. Change-Id: I697c9a4fa649d564822f585dc163df5ab9e5ae08 Reviewed-on: https://go-review.googlesource.com/c/go/+/361216 Trust: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/internal/poll/fd_unix.go9
-rw-r--r--src/internal/poll/fd_windows.go4
-rw-r--r--src/internal/syscall/unix/net.go28
-rw-r--r--src/internal/syscall/unix/net_js.go28
-rw-r--r--src/internal/syscall/windows/net_windows.go18
-rw-r--r--src/syscall/net_js.go16
-rw-r--r--src/syscall/syscall_unix.go8
-rw-r--r--src/syscall/syscall_windows.go4
8 files changed, 87 insertions, 28 deletions
diff --git a/src/internal/poll/fd_unix.go b/src/internal/poll/fd_unix.go
index d4c32e4d41..fd5ac85850 100644
--- a/src/internal/poll/fd_unix.go
+++ b/src/internal/poll/fd_unix.go
@@ -7,6 +7,7 @@
package poll
import (
+ "internal/syscall/unix"
"io"
"sync/atomic"
"syscall"
@@ -239,7 +240,7 @@ func (fd *FD) ReadFromInet4(p []byte, from *syscall.SockaddrInet4) (int, error)
return 0, err
}
for {
- n, err := syscall.RecvfromInet4(fd.Sysfd, p, 0, from)
+ n, err := unix.RecvfromInet4(fd.Sysfd, p, 0, from)
if err != nil {
if err == syscall.EINTR {
continue
@@ -266,7 +267,7 @@ func (fd *FD) ReadFromInet6(p []byte, from *syscall.SockaddrInet6) (int, error)
return 0, err
}
for {
- n, err := syscall.RecvfromInet6(fd.Sysfd, p, 0, from)
+ n, err := unix.RecvfromInet6(fd.Sysfd, p, 0, from)
if err != nil {
if err == syscall.EINTR {
continue
@@ -390,7 +391,7 @@ func (fd *FD) WriteToInet4(p []byte, sa syscall.SockaddrInet4) (int, error) {
return 0, err
}
for {
- err := syscall.SendtoInet4(fd.Sysfd, p, 0, sa)
+ err := unix.SendtoInet4(fd.Sysfd, p, 0, sa)
if err == syscall.EINTR {
continue
}
@@ -416,7 +417,7 @@ func (fd *FD) WriteToInet6(p []byte, sa syscall.SockaddrInet6) (int, error) {
return 0, err
}
for {
- err := syscall.SendtoInet6(fd.Sysfd, p, 0, sa)
+ err := unix.SendtoInet6(fd.Sysfd, p, 0, sa)
if err == syscall.EINTR {
continue
}
diff --git a/src/internal/poll/fd_windows.go b/src/internal/poll/fd_windows.go
index d883cd1ecc..0f5ae8e0d4 100644
--- a/src/internal/poll/fd_windows.go
+++ b/src/internal/poll/fd_windows.go
@@ -870,7 +870,7 @@ func (fd *FD) WriteToInet4(buf []byte, sa4 syscall.SockaddrInet4) (int, error) {
o.InitBuf(buf)
o.sa4 = sa4
n, err := execIO(o, func(o *operation) error {
- return syscall.WSASendtoInet4(o.fd.Sysfd, &o.buf, 1, &o.qty, 0, o.sa4, &o.o, nil)
+ return windows.WSASendtoInet4(o.fd.Sysfd, &o.buf, 1, &o.qty, 0, o.sa4, &o.o, nil)
})
return n, err
}
@@ -885,7 +885,7 @@ func (fd *FD) WriteToInet4(buf []byte, sa4 syscall.SockaddrInet4) (int, error) {
o.InitBuf(b)
o.sa4 = sa4
n, err := execIO(o, func(o *operation) error {
- return syscall.WSASendtoInet4(o.fd.Sysfd, &o.buf, 1, &o.qty, 0, o.sa4, &o.o, nil)
+ return windows.WSASendtoInet4(o.fd.Sysfd, &o.buf, 1, &o.qty, 0, o.sa4, &o.o, nil)
})
ntotal += int(n)
if err != nil {
diff --git a/src/internal/syscall/unix/net.go b/src/internal/syscall/unix/net.go
new file mode 100644
index 0000000000..773cf34d96
--- /dev/null
+++ b/src/internal/syscall/unix/net.go
@@ -0,0 +1,28 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
+
+package unix
+
+import (
+ "syscall"
+ _ "unsafe"
+)
+
+//go:linkname RecvfromInet4 syscall.recvfromInet4
+//go:noescape
+func RecvfromInet4(fd int, p []byte, flags int, from *syscall.SockaddrInet4) (int, error)
+
+//go:linkname RecvfromInet6 syscall.recvfromInet6
+//go:noescape
+func RecvfromInet6(fd int, p []byte, flags int, from *syscall.SockaddrInet6) (n int, err error)
+
+//go:linkname SendtoInet4 syscall.sendtoInet4
+//go:noescape
+func SendtoInet4(fd int, p []byte, flags int, to syscall.SockaddrInet4) (err error)
+
+//go:linkname SendtoInet6 syscall.sendtoInet6
+//go:noescape
+func SendtoInet6(fd int, p []byte, flags int, to syscall.SockaddrInet6) (err error)
diff --git a/src/internal/syscall/unix/net_js.go b/src/internal/syscall/unix/net_js.go
new file mode 100644
index 0000000000..3fc5a66470
--- /dev/null
+++ b/src/internal/syscall/unix/net_js.go
@@ -0,0 +1,28 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build js
+
+package unix
+
+import (
+ "syscall"
+ _ "unsafe"
+)
+
+func RecvfromInet4(fd int, p []byte, flags int, from *syscall.SockaddrInet4) (int, error) {
+ return 0, syscall.ENOSYS
+}
+
+func RecvfromInet6(fd int, p []byte, flags int, from *syscall.SockaddrInet6) (n int, err error) {
+ return 0, syscall.ENOSYS
+}
+
+func SendtoInet4(fd int, p []byte, flags int, to syscall.SockaddrInet4) (err error) {
+ return syscall.ENOSYS
+}
+
+func SendtoInet6(fd int, p []byte, flags int, to syscall.SockaddrInet6) (err error) {
+ return syscall.ENOSYS
+}
diff --git a/src/internal/syscall/windows/net_windows.go b/src/internal/syscall/windows/net_windows.go
new file mode 100644
index 0000000000..1fccd55e4b
--- /dev/null
+++ b/src/internal/syscall/windows/net_windows.go
@@ -0,0 +1,18 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package windows
+
+import (
+ "syscall"
+ _ "unsafe"
+)
+
+//go:linkname WSASendtoInet4 syscall.wsaSendtoInet4
+//go:noescape
+func WSASendtoInet4(s syscall.Handle, bufs *syscall.WSABuf, bufcnt uint32, sent *uint32, flags uint32, to syscall.SockaddrInet4, overlapped *syscall.Overlapped, croutine *byte) (err error)
+
+//go:linkname WSASendtoInet6 syscall.wsaSendtoInet6
+//go:noescape
+func WSASendtoInet6(s syscall.Handle, bufs *syscall.WSABuf, bufcnt uint32, sent *uint32, flags uint32, to syscall.SockaddrInet6, overlapped *syscall.Overlapped, croutine *byte) (err error)
diff --git a/src/syscall/net_js.go b/src/syscall/net_js.go
index 4f8258ddb3..253ab22dd9 100644
--- a/src/syscall/net_js.go
+++ b/src/syscall/net_js.go
@@ -91,26 +91,10 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {
return 0, nil, ENOSYS
}
-func RecvfromInet4(fd int, p []byte, flags int, from *SockaddrInet4) (n int, err error) {
- return 0, ENOSYS
-}
-
-func RecvfromInet6(fd int, p []byte, flags int, from *SockaddrInet6) (n int, err error) {
- return 0, ENOSYS
-}
-
func Sendto(fd int, p []byte, flags int, to Sockaddr) error {
return ENOSYS
}
-func SendtoInet4(fd int, p []byte, flags int, to SockaddrInet4) error {
- return ENOSYS
-}
-
-func SendtoInet6(fd int, p []byte, flags int, to SockaddrInet6) error {
- return ENOSYS
-}
-
func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn, recvflags int, from Sockaddr, err error) {
return 0, 0, 0, nil, ENOSYS
}
diff --git a/src/syscall/syscall_unix.go b/src/syscall/syscall_unix.go
index 5a91a023e1..adc1e5dbfb 100644
--- a/src/syscall/syscall_unix.go
+++ b/src/syscall/syscall_unix.go
@@ -297,7 +297,7 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {
return
}
-func RecvfromInet4(fd int, p []byte, flags int, from *SockaddrInet4) (n int, err error) {
+func recvfromInet4(fd int, p []byte, flags int, from *SockaddrInet4) (n int, err error) {
var rsa RawSockaddrAny
var socklen _Socklen = SizeofSockaddrAny
if n, err = recvfrom(fd, p, flags, &rsa, &socklen); err != nil {
@@ -310,7 +310,7 @@ func RecvfromInet4(fd int, p []byte, flags int, from *SockaddrInet4) (n int, err
return
}
-func RecvfromInet6(fd int, p []byte, flags int, from *SockaddrInet6) (n int, err error) {
+func recvfromInet6(fd int, p []byte, flags int, from *SockaddrInet6) (n int, err error) {
var rsa RawSockaddrAny
var socklen _Socklen = SizeofSockaddrAny
if n, err = recvfrom(fd, p, flags, &rsa, &socklen); err != nil {
@@ -324,7 +324,7 @@ func RecvfromInet6(fd int, p []byte, flags int, from *SockaddrInet6) (n int, err
return
}
-func SendtoInet4(fd int, p []byte, flags int, to SockaddrInet4) (err error) {
+func sendtoInet4(fd int, p []byte, flags int, to SockaddrInet4) (err error) {
ptr, n, err := to.sockaddr()
if err != nil {
return err
@@ -332,7 +332,7 @@ func SendtoInet4(fd int, p []byte, flags int, to SockaddrInet4) (err error) {
return sendto(fd, p, flags, ptr, n)
}
-func SendtoInet6(fd int, p []byte, flags int, to SockaddrInet6) (err error) {
+func sendtoInet6(fd int, p []byte, flags int, to SockaddrInet6) (err error) {
ptr, n, err := to.sockaddr()
if err != nil {
return err
diff --git a/src/syscall/syscall_windows.go b/src/syscall/syscall_windows.go
index 0456074d47..48fedb33d7 100644
--- a/src/syscall/syscall_windows.go
+++ b/src/syscall/syscall_windows.go
@@ -922,7 +922,7 @@ func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32
return err
}
-func WSASendtoInet4(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to SockaddrInet4, overlapped *Overlapped, croutine *byte) (err error) {
+func wsaSendtoInet4(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to SockaddrInet4, overlapped *Overlapped, croutine *byte) (err error) {
rsa, len, err := to.sockaddr()
if err != nil {
return err
@@ -938,7 +938,7 @@ func WSASendtoInet4(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags u
return err
}
-func WSASendtoInet6(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to SockaddrInet6, overlapped *Overlapped, croutine *byte) (err error) {
+func wsaSendtoInet6(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to SockaddrInet6, overlapped *Overlapped, croutine *byte) (err error) {
rsa, len, err := to.sockaddr()
if err != nil {
return err