Skip to content

Commit cf06b9a

Browse files
Clément Chigotianlancetaylor
Clément Chigot
authored andcommitted
[release-branch.go1.12] syscall: on AIX use nsendmsg and nrecvmsg, define SockaddrDatalink
This commit changes sendmsg, recvmsg to use nsendmsg, nrecvmsg on AIX. These syscalls support the new msghdr structure (with Control and Controllen) which is needed for golang.org/x/net. Also define SockaddrDataLink. Fixes #33982 Change-Id: I233fbd24f9eb86648e0d4d50c2b56da3626292d0 Reviewed-on: https://go-review.googlesource.com/c/go/+/170537 Run-TryBot: Ian Lance Taylor <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Tobias Klauser <[email protected]> (cherry picked from commit e014184) Reviewed-on: https://go-review.googlesource.com/c/go/+/193608 Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent 61a5d11 commit cf06b9a

File tree

4 files changed

+61
-30
lines changed

4 files changed

+61
-30
lines changed

src/syscall/syscall_aix.go

+17-2
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,11 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int,
217217
//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
218218
//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
219219
//sys Shutdown(s int, how int) (err error)
220-
//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
221-
//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
220+
221+
// In order to use msghdr structure with Control, Controllen in golang.org/x/net,
222+
// nrecvmsg and nsendmsg must be used.
223+
//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg
224+
//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg
222225

223226
func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
224227
if sa.Port < 0 || sa.Port > 0xFFFF {
@@ -434,6 +437,18 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
434437
return nil, EAFNOSUPPORT
435438
}
436439

440+
type SockaddrDatalink struct {
441+
Len uint8
442+
Family uint8
443+
Index uint16
444+
Type uint8
445+
Nlen uint8
446+
Alen uint8
447+
Slen uint8
448+
Data [120]uint8
449+
raw RawSockaddrDatalink
450+
}
451+
437452
/*
438453
* Wait
439454
*/

src/syscall/types_aix.go

+14-10
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ package syscall
2323
#include <sys/statfs.h>
2424
2525
#include <net/if.h>
26+
#include <net/if_dl.h>
2627
#include <netinet/in.h>
2728
#include <netinet/icmp6.h>
2829
@@ -112,6 +113,8 @@ type RawSockaddrInet6 C.struct_sockaddr_in6
112113

113114
type RawSockaddrUnix C.struct_sockaddr_un
114115

116+
type RawSockaddrDatalink C.struct_sockaddr_dl
117+
115118
type RawSockaddr C.struct_sockaddr
116119

117120
type RawSockaddrAny C.struct_sockaddr_any
@@ -133,16 +136,17 @@ type Linger C.struct_linger
133136
type Msghdr C.struct_msghdr
134137

135138
const (
136-
SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
137-
SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
138-
SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
139-
SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
140-
SizeofLinger = C.sizeof_struct_linger
141-
SizeofIPMreq = C.sizeof_struct_ip_mreq
142-
SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
143-
SizeofMsghdr = C.sizeof_struct_msghdr
144-
SizeofCmsghdr = C.sizeof_struct_cmsghdr
145-
SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
139+
SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
140+
SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
141+
SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
142+
SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
143+
SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
144+
SizeofLinger = C.sizeof_struct_linger
145+
SizeofIPMreq = C.sizeof_struct_ip_mreq
146+
SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
147+
SizeofMsghdr = C.sizeof_struct_msghdr
148+
SizeofCmsghdr = C.sizeof_struct_cmsghdr
149+
SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
146150
)
147151

148152
// Ptrace requests

src/syscall/zsyscall_aix_ppc64.go

+8-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/syscall/ztypes_aix_ppc64.go

+22-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)