From 46babdb38006461fb79d08e377cc87bbce3d850f Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sat, 10 Apr 2021 21:08:48 +0200 Subject: [PATCH] unix: add flags to SockaddrVM The Flags member was added to struct sockaddr_vm in Linux kernel 5.11 and successively into RawSockaddrVM when updating to that kernel version in CL 291637. Add the flags to SockaddrVM as well. While at it, also update the list of CID values with VMADDR_CID_LOCAL. Change-Id: I08828136f4c5ded3cca2fd07aefac066b9977b13 Reviewed-on: https://go-review.googlesource.com/c/sys/+/308990 Trust: Tobias Klauser Run-TryBot: Tobias Klauser TryBot-Result: Go Bot Reviewed-by: Ian Lance Taylor --- unix/syscall_linux.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/unix/syscall_linux.go b/unix/syscall_linux.go index 44ea96e3..fe37eaf5 100644 --- a/unix/syscall_linux.go +++ b/unix/syscall_linux.go @@ -857,16 +857,19 @@ type SockaddrVM struct { // CID and Port specify a context ID and port address for a VM socket. // Guests have a unique CID, and hosts may have a well-known CID of: // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. + // - VMADDR_CID_LOCAL: refers to local communication (loopback). // - VMADDR_CID_HOST: refers to other processes on the host. - CID uint32 - Port uint32 - raw RawSockaddrVM + CID uint32 + Port uint32 + Flags uint8 + raw RawSockaddrVM } func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { sa.raw.Family = AF_VSOCK sa.raw.Port = sa.Port sa.raw.Cid = sa.CID + sa.raw.Flags = sa.Flags return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil } @@ -1171,8 +1174,9 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { case AF_VSOCK: pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) sa := &SockaddrVM{ - CID: pp.Cid, - Port: pp.Port, + CID: pp.Cid, + Port: pp.Port, + Flags: pp.Flags, } return sa, nil case AF_BLUETOOTH: