Skip to content

Commit e014184

Browse files
Clément Chigottklauser
Clément Chigot
authored andcommitted
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. 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]>
1 parent 64f22e4 commit e014184

File tree

4 files changed

+61
-30
lines changed

4 files changed

+61
-30
lines changed

src/syscall/syscall_aix.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,11 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int,
225225
//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
226226
//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
227227
//sys Shutdown(s int, how int) (err error)
228-
//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
229-
//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
228+
229+
// In order to use msghdr structure with Control, Controllen in golang.org/x/net,
230+
// nrecvmsg and nsendmsg must be used.
231+
//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg
232+
//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg
230233

231234
func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
232235
if sa.Port < 0 || sa.Port > 0xFFFF {
@@ -442,6 +445,18 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
442445
return nil, EAFNOSUPPORT
443446
}
444447

448+
type SockaddrDatalink struct {
449+
Len uint8
450+
Family uint8
451+
Index uint16
452+
Type uint8
453+
Nlen uint8
454+
Alen uint8
455+
Slen uint8
456+
Data [120]uint8
457+
raw RawSockaddrDatalink
458+
}
459+
445460
/*
446461
* Wait
447462
*/

src/syscall/types_aix.go

Lines changed: 14 additions & 10 deletions
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
@@ -113,6 +114,8 @@ type RawSockaddrInet6 C.struct_sockaddr_in6
113114

114115
type RawSockaddrUnix C.struct_sockaddr_un
115116

117+
type RawSockaddrDatalink C.struct_sockaddr_dl
118+
116119
type RawSockaddr C.struct_sockaddr
117120

118121
type RawSockaddrAny C.struct_sockaddr_any
@@ -134,16 +137,17 @@ type Linger C.struct_linger
134137
type Msghdr C.struct_msghdr
135138

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

149153
// Ptrace requests

src/syscall/zsyscall_aix_ppc64.go

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/syscall/ztypes_aix_ppc64.go

Lines changed: 22 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)