From d67a3279aecd76a65c4c9e6c352c888f5b3a574a Mon Sep 17 00:00:00 2001 From: Matt Layher Date: Tue, 7 Mar 2017 20:18:38 -0500 Subject: [PATCH] unix: implement Linux AF_VSOCK sockets Adds the required constants and new SockaddrVM type for working with Linux VM sockets. For more information, see: https://vmsplice.net/~stefan/stefanha-kvm-forum-2015.pdf. Fixes golang/go#19434 Change-Id: I9aefb35441b2c7dc412bdfb806ebe08d5c20f6b1 Reviewed-on: https://go-review.googlesource.com/37937 Run-TryBot: Matt Layher TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- unix/mkerrors.sh | 2 ++ unix/syscall_linux.go | 30 ++++++++++++++++++++++++++++++ unix/types_linux.go | 4 ++++ unix/zerrors_linux_386.go | 13 +++++++++++++ unix/zerrors_linux_amd64.go | 14 ++++++++++++++ unix/zerrors_linux_arm.go | 13 +++++++++++++ unix/zerrors_linux_arm64.go | 12 ++++++++++++ unix/zerrors_linux_mips.go | 13 +++++++++++++ unix/zerrors_linux_mips64.go | 12 ++++++++++++ unix/zerrors_linux_mips64le.go | 12 ++++++++++++ unix/zerrors_linux_mipsle.go | 12 ++++++++++++ unix/zerrors_linux_ppc64.go | 12 ++++++++++++ unix/zerrors_linux_ppc64le.go | 12 ++++++++++++ unix/zerrors_linux_s390x.go | 12 ++++++++++++ unix/zerrors_linux_sparc64.go | 12 ++++++++++++ unix/ztypes_linux_386.go | 9 +++++++++ unix/ztypes_linux_amd64.go | 9 +++++++++ unix/ztypes_linux_arm.go | 9 +++++++++ unix/ztypes_linux_arm64.go | 9 +++++++++ unix/ztypes_linux_mips.go | 9 +++++++++ unix/ztypes_linux_mips64.go | 9 +++++++++ unix/ztypes_linux_mips64le.go | 9 +++++++++ unix/ztypes_linux_mipsle.go | 9 +++++++++ unix/ztypes_linux_ppc64.go | 9 +++++++++ unix/ztypes_linux_ppc64le.go | 9 +++++++++ unix/ztypes_linux_s390x.go | 9 +++++++++ unix/ztypes_linux_sparc64.go | 9 +++++++++ 27 files changed, 293 insertions(+) diff --git a/unix/mkerrors.sh b/unix/mkerrors.sh index bbc6d19b..8da63576 100755 --- a/unix/mkerrors.sh +++ b/unix/mkerrors.sh @@ -132,6 +132,7 @@ includes_Linux=' #include #include #include +#include #include #include @@ -352,6 +353,7 @@ ccflags="$@" $2 ~ /^ALG_/ || $2 ~ /^GRND_/ || $2 ~ /^SPLICE_/ || + $2 ~ /^(VM|VMADDR)_/ || $2 !~ "WMESGLEN" && $2 ~ /^W[A-Z0-9]+$/ || $2 ~ /^BLK/ {printf("\t%s = C.%s\n", $2, $2)} diff --git a/unix/syscall_linux.go b/unix/syscall_linux.go index c0119474..e7ebfb68 100644 --- a/unix/syscall_linux.go +++ b/unix/syscall_linux.go @@ -551,6 +551,28 @@ func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil } +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Linux VM sockets: a mechanism that enables +// bidirectional communication between a hypervisor and its guest virtual +// machines. +type SockaddrVM struct { + // CID and Port specify a client 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_HOST: refers to other processes on the host. + CID uint32 + Port uint32 + 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 + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) { switch rsa.Addr.Family { case AF_NETLINK: @@ -620,6 +642,14 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) { sa.Addr[i] = pp.Addr[i] } return sa, nil + + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + } + return sa, nil } return nil, EAFNOSUPPORT } diff --git a/unix/types_linux.go b/unix/types_linux.go index a08f7fb4..ae79779e 100644 --- a/unix/types_linux.go +++ b/unix/types_linux.go @@ -60,6 +60,7 @@ package unix #include #include #include +#include #ifdef TCSETS2 // On systems that have "struct termios2" use this as type Termios. @@ -224,6 +225,8 @@ type RawSockaddrCAN C.struct_sockaddr_can type RawSockaddrALG C.struct_sockaddr_alg +type RawSockaddrVM C.struct_sockaddr_vm + type RawSockaddr C.struct_sockaddr type RawSockaddrAny C.struct_sockaddr_any @@ -266,6 +269,7 @@ const ( SizeofSockaddrHCI = C.sizeof_struct_sockaddr_hci SizeofSockaddrCAN = C.sizeof_struct_sockaddr_can SizeofSockaddrALG = C.sizeof_struct_sockaddr_alg + SizeofSockaddrVM = C.sizeof_struct_sockaddr_vm SizeofLinger = C.sizeof_struct_linger SizeofIPMreq = C.sizeof_struct_ip_mreq SizeofIPMreqn = C.sizeof_struct_ip_mreqn diff --git a/unix/zerrors_linux_386.go b/unix/zerrors_linux_386.go index 94c7e30c..2d02caf0 100644 --- a/unix/zerrors_linux_386.go +++ b/unix/zerrors_linux_386.go @@ -51,6 +51,7 @@ const ( AF_TIPC = 0x1e AF_UNIX = 0x1 AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 AF_WANPIPE = 0x19 AF_X25 = 0x9 ALG_OP_DECRYPT = 0x0 @@ -1324,6 +1325,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 @@ -1500,6 +1508,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x6 VQUIT = 0x1 VREPRINT = 0xc diff --git a/unix/zerrors_linux_amd64.go b/unix/zerrors_linux_amd64.go index 887210a5..f21dcd9d 100644 --- a/unix/zerrors_linux_amd64.go +++ b/unix/zerrors_linux_amd64.go @@ -51,6 +51,7 @@ const ( AF_TIPC = 0x1e AF_UNIX = 0x1 AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 AF_WANPIPE = 0x19 AF_X25 = 0x9 ALG_OP_DECRYPT = 0x0 @@ -1331,6 +1332,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 @@ -1507,7 +1515,13 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff VQUIT = 0x1 VREPRINT = 0xc VSTART = 0x8 diff --git a/unix/zerrors_linux_arm.go b/unix/zerrors_linux_arm.go index f6917477..7889e647 100644 --- a/unix/zerrors_linux_arm.go +++ b/unix/zerrors_linux_arm.go @@ -50,6 +50,7 @@ const ( AF_TIPC = 0x1e AF_UNIX = 0x1 AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 AF_WANPIPE = 0x19 AF_X25 = 0x9 ALG_OP_DECRYPT = 0x0 @@ -1252,6 +1253,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 @@ -1428,6 +1436,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x6 VQUIT = 0x1 VREPRINT = 0xc diff --git a/unix/zerrors_linux_arm64.go b/unix/zerrors_linux_arm64.go index 6f6d1d96..16a18f59 100644 --- a/unix/zerrors_linux_arm64.go +++ b/unix/zerrors_linux_arm64.go @@ -1382,6 +1382,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SO_WIFI_STATUS = 0x29 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 @@ -1581,6 +1588,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x6 VQUIT = 0x1 VREPRINT = 0xc diff --git a/unix/zerrors_linux_mips.go b/unix/zerrors_linux_mips.go index 37d16f7c..80e69e4c 100644 --- a/unix/zerrors_linux_mips.go +++ b/unix/zerrors_linux_mips.go @@ -50,6 +50,7 @@ const ( AF_TIPC = 0x1e AF_UNIX = 0x1 AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 AF_WANPIPE = 0x19 AF_X25 = 0x9 ALG_OP_DECRYPT = 0x0 @@ -1305,6 +1306,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 SPLICE_F_MOVE = 0x1 @@ -1477,6 +1485,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x4 VQUIT = 0x1 VREPRINT = 0xc diff --git a/unix/zerrors_linux_mips64.go b/unix/zerrors_linux_mips64.go index 3aa557b1..9c91dbf6 100644 --- a/unix/zerrors_linux_mips64.go +++ b/unix/zerrors_linux_mips64.go @@ -1394,6 +1394,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SO_WIFI_STATUS = 0x29 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 @@ -1576,6 +1583,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x4 VQUIT = 0x1 VREPRINT = 0xc diff --git a/unix/zerrors_linux_mips64le.go b/unix/zerrors_linux_mips64le.go index 3b50d854..fb15b41e 100644 --- a/unix/zerrors_linux_mips64le.go +++ b/unix/zerrors_linux_mips64le.go @@ -1394,6 +1394,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SO_WIFI_STATUS = 0x29 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 @@ -1576,6 +1583,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x4 VQUIT = 0x1 VREPRINT = 0xc diff --git a/unix/zerrors_linux_mipsle.go b/unix/zerrors_linux_mipsle.go index 8a122ad2..9a3a7376 100644 --- a/unix/zerrors_linux_mipsle.go +++ b/unix/zerrors_linux_mipsle.go @@ -1467,6 +1467,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SO_WIFI_STATUS = 0x29 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 @@ -1675,6 +1682,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x4 VQUIT = 0x1 VREPRINT = 0xc diff --git a/unix/zerrors_linux_ppc64.go b/unix/zerrors_linux_ppc64.go index e2dd7aa1..4d602e6d 100644 --- a/unix/zerrors_linux_ppc64.go +++ b/unix/zerrors_linux_ppc64.go @@ -1450,6 +1450,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SO_WIFI_STATUS = 0x29 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 @@ -1653,6 +1660,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x5 VQUIT = 0x1 VREPRINT = 0xb diff --git a/unix/zerrors_linux_ppc64le.go b/unix/zerrors_linux_ppc64le.go index 090cb253..5280d9e8 100644 --- a/unix/zerrors_linux_ppc64le.go +++ b/unix/zerrors_linux_ppc64le.go @@ -1446,6 +1446,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SO_WIFI_STATUS = 0x29 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 @@ -1649,6 +1656,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x5 VQUIT = 0x1 VREPRINT = 0xb diff --git a/unix/zerrors_linux_s390x.go b/unix/zerrors_linux_s390x.go index 509c100e..81ad7a87 100644 --- a/unix/zerrors_linux_s390x.go +++ b/unix/zerrors_linux_s390x.go @@ -1500,6 +1500,13 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SO_WIFI_STATUS = 0x29 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 @@ -1707,6 +1714,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x6 VQUIT = 0x1 VREPRINT = 0xc diff --git a/unix/zerrors_linux_sparc64.go b/unix/zerrors_linux_sparc64.go index 4fe24769..95de199f 100644 --- a/unix/zerrors_linux_sparc64.go +++ b/unix/zerrors_linux_sparc64.go @@ -1540,6 +1540,13 @@ const ( SO_TIMESTAMPING = 0x23 SO_TIMESTAMPNS = 0x21 SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 SO_WIFI_STATUS = 0x25 SPLICE_F_GIFT = 0x8 SPLICE_F_MORE = 0x4 @@ -1749,6 +1756,11 @@ const ( VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff VMIN = 0x4 VQUIT = 0x1 VREPRINT = 0xc diff --git a/unix/ztypes_linux_386.go b/unix/ztypes_linux_386.go index 29b9bf33..99dfd588 100644 --- a/unix/ztypes_linux_386.go +++ b/unix/ztypes_linux_386.go @@ -218,6 +218,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -343,6 +351,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_amd64.go b/unix/ztypes_linux_amd64.go index b72cf8ee..c9e1e64a 100644 --- a/unix/ztypes_linux_amd64.go +++ b/unix/ztypes_linux_amd64.go @@ -220,6 +220,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -347,6 +355,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_arm.go b/unix/ztypes_linux_arm.go index d5c8bb67..4bfba2a9 100644 --- a/unix/ztypes_linux_arm.go +++ b/unix/ztypes_linux_arm.go @@ -222,6 +222,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -347,6 +355,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_arm64.go b/unix/ztypes_linux_arm64.go index 24bd0894..e58c500c 100644 --- a/unix/ztypes_linux_arm64.go +++ b/unix/ztypes_linux_arm64.go @@ -221,6 +221,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -348,6 +356,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_mips.go b/unix/ztypes_linux_mips.go index c5a41ab2..a960085f 100644 --- a/unix/ztypes_linux_mips.go +++ b/unix/ztypes_linux_mips.go @@ -221,6 +221,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -345,6 +353,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_mips64.go b/unix/ztypes_linux_mips64.go index 3947c442..9d46a62c 100644 --- a/unix/ztypes_linux_mips64.go +++ b/unix/ztypes_linux_mips64.go @@ -221,6 +221,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -347,6 +355,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_mips64le.go b/unix/ztypes_linux_mips64le.go index de8f9c47..267bfe90 100644 --- a/unix/ztypes_linux_mips64le.go +++ b/unix/ztypes_linux_mips64le.go @@ -221,6 +221,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -347,6 +355,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_mipsle.go b/unix/ztypes_linux_mipsle.go index 5a8957f1..950515a8 100644 --- a/unix/ztypes_linux_mipsle.go +++ b/unix/ztypes_linux_mipsle.go @@ -221,6 +221,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -345,6 +353,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_ppc64.go b/unix/ztypes_linux_ppc64.go index 4b875294..88538cbd 100644 --- a/unix/ztypes_linux_ppc64.go +++ b/unix/ztypes_linux_ppc64.go @@ -222,6 +222,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -349,6 +357,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_ppc64le.go b/unix/ztypes_linux_ppc64le.go index 40d51d97..2f63bc03 100644 --- a/unix/ztypes_linux_ppc64le.go +++ b/unix/ztypes_linux_ppc64le.go @@ -222,6 +222,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -349,6 +357,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_s390x.go b/unix/ztypes_linux_s390x.go index 13f6ea00..2c5bb05d 100644 --- a/unix/ztypes_linux_s390x.go +++ b/unix/ztypes_linux_s390x.go @@ -221,6 +221,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -347,6 +355,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc diff --git a/unix/ztypes_linux_sparc64.go b/unix/ztypes_linux_sparc64.go index 31a97b3c..22bdab96 100644 --- a/unix/ztypes_linux_sparc64.go +++ b/unix/ztypes_linux_sparc64.go @@ -226,6 +226,14 @@ type RawSockaddrALG struct { Name [64]uint8 } +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -352,6 +360,7 @@ const ( SizeofSockaddrHCI = 0x6 SizeofSockaddrCAN = 0x10 SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc