aboutsummaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/sys/unix/syscall_aix.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2022-08-15 14:36:06 +0000
committerGitHub <noreply@github.com>2022-08-15 14:36:06 +0000
commitc1d544532a3b905cef5c8efe80ac810d320d57a7 (patch)
treeb1393c369446a4011b139e4a597e92b24b0ec39a /vendor/golang.org/x/sys/unix/syscall_aix.go
parent66f29995b980b2f1dafbf160888a4db8d4ce2aa4 (diff)
parentbfae6bca922c25cf7275a139965c78f563a814f7 (diff)
downloadpodman-c1d544532a3b905cef5c8efe80ac810d320d57a7.tar.gz
podman-c1d544532a3b905cef5c8efe80ac810d320d57a7.tar.bz2
podman-c1d544532a3b905cef5c8efe80ac810d320d57a7.zip
Merge pull request #15319 from containers/dependabot/go_modules/github.com/mattn/go-isatty-0.0.16
build(deps): bump github.com/mattn/go-isatty from 0.0.14 to 0.0.16
Diffstat (limited to 'vendor/golang.org/x/sys/unix/syscall_aix.go')
-rw-r--r--vendor/golang.org/x/sys/unix/syscall_aix.go57
1 files changed, 53 insertions, 4 deletions
diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go
index ac579c60f..2db1b51e9 100644
--- a/vendor/golang.org/x/sys/unix/syscall_aix.go
+++ b/vendor/golang.org/x/sys/unix/syscall_aix.go
@@ -218,13 +218,62 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
}
func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {
- // Recvmsg not implemented on AIX
- return -1, -1, -1, ENOSYS
+ var msg Msghdr
+ msg.Name = (*byte)(unsafe.Pointer(rsa))
+ msg.Namelen = uint32(SizeofSockaddrAny)
+ var dummy byte
+ if len(oob) > 0 {
+ // receive at least one normal byte
+ if emptyIovecs(iov) {
+ var iova [1]Iovec
+ iova[0].Base = &dummy
+ iova[0].SetLen(1)
+ iov = iova[:]
+ }
+ msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+ msg.SetControllen(len(oob))
+ }
+ if len(iov) > 0 {
+ msg.Iov = &iov[0]
+ msg.SetIovlen(len(iov))
+ }
+ if n, err = recvmsg(fd, &msg, flags); n == -1 {
+ return
+ }
+ oobn = int(msg.Controllen)
+ recvflags = int(msg.Flags)
+ return
}
func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {
- // SendmsgN not implemented on AIX
- return -1, ENOSYS
+ var msg Msghdr
+ msg.Name = (*byte)(unsafe.Pointer(ptr))
+ msg.Namelen = uint32(salen)
+ var dummy byte
+ var empty bool
+ if len(oob) > 0 {
+ // send at least one normal byte
+ empty = emptyIovecs(iov)
+ if empty {
+ var iova [1]Iovec
+ iova[0].Base = &dummy
+ iova[0].SetLen(1)
+ iov = iova[:]
+ }
+ msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+ msg.SetControllen(len(oob))
+ }
+ if len(iov) > 0 {
+ msg.Iov = &iov[0]
+ msg.SetIovlen(len(iov))
+ }
+ if n, err = sendmsg(fd, &msg, flags); err != nil {
+ return 0, err
+ }
+ if len(oob) > 0 && empty {
+ n = 0
+ }
+ return n, nil
}
func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {