diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-04-18 07:54:39 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-04-18 10:17:04 +0200 |
commit | 0b940a756838efcb90363ad99cb085d077b78e96 (patch) | |
tree | 7438647654e830a76da66758606d03c7826ab5c8 /conn_linux.go | |
parent | eb6728400ba656990aa4518dc4f5f2a6f0f19f8e (diff) |
Use socketcall on x86
Diffstat (limited to 'conn_linux.go')
-rw-r--r-- | conn_linux.go | 50 |
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 |