mirror of
https://github.com/golang/net.git
synced 2026-03-31 18:37:08 +09:00
Instead of relying on syscall.Syscall, always reach into the syscall package to call the appropriate functions on Unix systems. We were already doing this on Darwin and AIX. We also have to do this on OpenBSD, and it's simpler to do it on Linux 386 and s390x. Rather than sometimes reach into syscall and sometimes not, just always reach in. For golang/go#42064 Change-Id: I0adb1c7cc623f2c1247465b3852fefd8d09975d2 Reviewed-on: https://go-review.googlesource.com/c/net/+/366195 Trust: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
29 lines
847 B
Go
29 lines
847 B
Go
// Copyright 2017 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 socket
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
const (
|
|
sysRECVMMSG = 0x13
|
|
sysSENDMMSG = 0x14
|
|
)
|
|
|
|
func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno)
|
|
func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno)
|
|
|
|
func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
|
|
n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
|
|
return int(n), errnoErr(errno)
|
|
}
|
|
|
|
func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
|
|
n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
|
|
return int(n), errnoErr(errno)
|
|
}
|