summaryrefslogtreecommitdiffhomepage
path: root/conn_linux.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-04-18 07:54:39 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-04-18 10:17:04 +0200
commit0b940a756838efcb90363ad99cb085d077b78e96 (patch)
tree7438647654e830a76da66758606d03c7826ab5c8 /conn_linux.go
parenteb6728400ba656990aa4518dc4f5f2a6f0f19f8e (diff)
Use socketcall on x86
Diffstat (limited to 'conn_linux.go')
-rw-r--r--conn_linux.go50
1 files changed, 6 insertions, 44 deletions
diff --git a/conn_linux.go b/conn_linux.go
index cdba74f..8b60d65 100644
--- a/conn_linux.go
+++ b/conn_linux.go
@@ -391,14 +391,7 @@ func send6(sock int, end *NativeEndpoint, buff []byte) error {
msghdr.SetControllen(int(unsafe.Sizeof(cmsg)))
- // sendmsg(sock, &msghdr, 0)
-
- _, _, errno := unix.Syscall(
- unix.SYS_SENDMSG,
- uintptr(sock),
- uintptr(unsafe.Pointer(&msghdr)),
- 0,
- )
+ _, _, errno := sendmsg(sock, &msghdr, 0)
if errno == 0 {
return nil
@@ -409,12 +402,7 @@ func send6(sock int, end *NativeEndpoint, buff []byte) error {
if errno == unix.EINVAL {
end.ClearSrc()
cmsg.pktinfo = unix.Inet6Pktinfo{}
- _, _, errno = unix.Syscall(
- unix.SYS_SENDMSG,
- uintptr(sock),
- uintptr(unsafe.Pointer(&msghdr)),
- 0,
- )
+ _, _, errno = sendmsg(sock, &msghdr, 0)
}
return errno
@@ -455,26 +443,14 @@ func send4(sock int, end *NativeEndpoint, buff []byte) error {
}
msghdr.SetControllen(int(unsafe.Sizeof(cmsg)))
- // sendmsg(sock, &msghdr, 0)
-
- _, _, errno := unix.Syscall(
- unix.SYS_SENDMSG,
- uintptr(sock),
- uintptr(unsafe.Pointer(&msghdr)),
- 0,
- )
+ _, _, errno := sendmsg(sock, &msghdr, 0)
// clear source and try again
if errno == unix.EINVAL {
end.ClearSrc()
cmsg.pktinfo = unix.Inet4Pktinfo{}
- _, _, errno = unix.Syscall(
- unix.SYS_SENDMSG,
- uintptr(sock),
- uintptr(unsafe.Pointer(&msghdr)),
- 0,
- )
+ _, _, errno = sendmsg(sock, &msghdr, 0)
}
// errno = 0 is still an error instance
@@ -507,14 +483,7 @@ func receive4(sock int, buff []byte, end *NativeEndpoint) (int, error) {
msghdr.Control = (*byte)(unsafe.Pointer(&cmsg))
msghdr.SetControllen(int(unsafe.Sizeof(cmsg)))
- // recvmsg(sock, &mskhdr, 0)
-
- size, _, errno := unix.Syscall(
- unix.SYS_RECVMSG,
- uintptr(sock),
- uintptr(unsafe.Pointer(&msghdr)),
- 0,
- )
+ size, _, errno := recvmsg(sock, &msghdr, 0)
if errno != 0 {
return 0, errno
@@ -555,14 +524,7 @@ func receive6(sock int, buff []byte, end *NativeEndpoint) (int, error) {
msg.Control = (*byte)(unsafe.Pointer(&cmsg))
msg.SetControllen(int(unsafe.Sizeof(cmsg)))
- // recvmsg(sock, &mskhdr, 0)
-
- size, _, errno := unix.Syscall(
- unix.SYS_RECVMSG,
- uintptr(sock),
- uintptr(unsafe.Pointer(&msg)),
- 0,
- )
+ size, _, errno := recvmsg(sock, &msg, 0)
if errno != 0 {
return 0, errno