summaryrefslogtreecommitdiffstats
path: root/man7/vsock.7
diff options
context:
space:
mode:
Diffstat (limited to 'man7/vsock.7')
-rw-r--r--man7/vsock.7232
1 files changed, 0 insertions, 232 deletions
diff --git a/man7/vsock.7 b/man7/vsock.7
deleted file mode 100644
index 3d679c0..0000000
--- a/man7/vsock.7
+++ /dev/null
@@ -1,232 +0,0 @@
-.\" Copyright (C) 2018, Stefan Hajnoczi <stefanha@redhat.com>
-.\"
-.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.\"
-.TH vsock 7 2024-02-25 "Linux man-pages 6.7"
-.SH NAME
-vsock \- Linux VSOCK address family
-.SH SYNOPSIS
-.nf
-.B #include <sys/socket.h>
-.B #include <linux/vm_sockets.h>
-.P
-.IB stream_socket " = socket(AF_VSOCK, SOCK_STREAM, 0);"
-.IB datagram_socket " = socket(AF_VSOCK, SOCK_DGRAM, 0);"
-.fi
-.SH DESCRIPTION
-The VSOCK address family facilitates communication between virtual machines and
-the host they are running on.
-This address family is used by guest agents and
-hypervisor services that need a communications channel that is independent of
-virtual machine network configuration.
-.P
-Valid socket types are
-.B SOCK_STREAM
-and
-.BR SOCK_DGRAM .
-.B SOCK_STREAM
-provides connection-oriented byte streams with guaranteed, in-order delivery.
-.B SOCK_DGRAM
-provides a connectionless datagram packet service with best-effort delivery and
-best-effort ordering.
-Availability of these socket types is dependent on the
-underlying hypervisor.
-.P
-A new socket is created with
-.P
-.in +4n
-.EX
-socket(AF_VSOCK, socket_type, 0);
-.EE
-.in
-.P
-When a process wants to establish a connection, it calls
-.BR connect (2)
-with a given destination socket address.
-The socket is automatically bound to a free port if unbound.
-.P
-A process can listen for incoming connections by first binding to a socket
-address using
-.BR bind (2)
-and then calling
-.BR listen (2).
-.P
-Data is transmitted using the
-.BR send (2)
-or
-.BR write (2)
-families of system calls and data is received using the
-.BR recv (2)
-or
-.BR read (2)
-families of system calls.
-.SS Address format
-A socket address is defined as a combination of a 32-bit Context Identifier
-(CID) and a 32-bit port number.
-The CID identifies the source or destination,
-which is either a virtual machine or the host.
-The port number differentiates between multiple services running on
-a single machine.
-.P
-.in +4n
-.EX
-struct sockaddr_vm {
- sa_family_t svm_family; /* Address family: AF_VSOCK */
- unsigned short svm_reserved1;
- unsigned int svm_port; /* Port # in host byte order */
- unsigned int svm_cid; /* Address in host byte order */
- unsigned char svm_zero[sizeof(struct sockaddr) \-
- sizeof(sa_family_t) \-
- sizeof(unsigned short) \-
- sizeof(unsigned int) \-
- sizeof(unsigned int)];
-};
-.EE
-.in
-.P
-.I svm_family
-is always set to
-.BR AF_VSOCK .
-.I svm_reserved1
-is always set to 0.
-.I svm_port
-contains the port number in host byte order.
-The port numbers below 1024 are called
-.IR "privileged ports" .
-Only a process with the
-.B CAP_NET_BIND_SERVICE
-capability may
-.BR bind (2)
-to these port numbers.
-.I svm_zero
-must be zero-filled.
-.P
-There are several special addresses:
-.B VMADDR_CID_ANY
-(\-1U)
-means any address for binding;
-.B VMADDR_CID_HYPERVISOR
-(0) is reserved for services built into the hypervisor;
-.B VMADDR_CID_LOCAL
-(1) is the well-known address for local communication (loopback);
-.B VMADDR_CID_HOST
-(2)
-is the well-known address of the host.
-.P
-The special constant
-.B VMADDR_PORT_ANY
-(\-1U)
-means any port number for binding.
-.SS Live migration
-Sockets are affected by live migration of virtual machines.
-Connected
-.B SOCK_STREAM
-sockets become disconnected when the virtual machine migrates to a new host.
-Applications must reconnect when this happens.
-.P
-The local CID may change across live migration if the old CID is
-not available on the new host.
-Bound sockets are automatically updated to the new CID.
-.SS Ioctls
-The following ioctls are available on the
-.I /dev/vsock
-device.
-.TP
-.B IOCTL_VM_SOCKETS_GET_LOCAL_CID
-Get the CID of the local machine.
-The argument is a pointer to an
-.IR "unsigned int" .
-.IP
-.in +4n
-.EX
-ioctl(fd, IOCTL_VM_SOCKETS_GET_LOCAL_CID, &cid);
-.EE
-.in
-.IP
-Consider using
-.B VMADDR_CID_ANY
-when binding instead of getting the local CID with
-.BR IOCTL_VM_SOCKETS_GET_LOCAL_CID .
-.SS Local communication
-.B VMADDR_CID_LOCAL
-(1) directs packets to the same host that generated them.
-This is useful
-for testing applications on a single host and for debugging.
-.P
-The local CID obtained with
-.B IOCTL_VM_SOCKETS_GET_LOCAL_CID
-can be used for the same purpose, but it is preferable to use
-.BR VMADDR_CID_LOCAL .
-.SH ERRORS
-.TP
-.B EACCES
-Unable to bind to a privileged port without the
-.B CAP_NET_BIND_SERVICE
-capability.
-.TP
-.B EADDRINUSE
-Unable to bind to a port that is already in use.
-.TP
-.B EADDRNOTAVAIL
-Unable to find a free port for binding or unable to bind to a nonlocal CID.
-.TP
-.B EINVAL
-Invalid parameters.
-This includes:
-attempting to bind a socket that is already bound, providing an invalid struct
-.IR sockaddr_vm ,
-and other input validation errors.
-.TP
-.B ENOPROTOOPT
-Invalid socket option in
-.BR setsockopt (2)
-or
-.BR getsockopt (2).
-.TP
-.B ENOTCONN
-Unable to perform operation on an unconnected socket.
-.TP
-.B EOPNOTSUPP
-Operation not supported.
-This includes:
-the
-.B MSG_OOB
-flag that is not implemented for the
-.BR send (2)
-family of syscalls and
-.B MSG_PEEK
-for the
-.BR recv (2)
-family of syscalls.
-.TP
-.B EPROTONOSUPPORT
-Invalid socket protocol number.
-The protocol should always be 0.
-.TP
-.B ESOCKTNOSUPPORT
-Unsupported socket type in
-.BR socket (2).
-Only
-.B SOCK_STREAM
-and
-.B SOCK_DGRAM
-are valid.
-.SH VERSIONS
-Support for VMware (VMCI) has been available since Linux 3.9.
-KVM (virtio) is supported since Linux 4.8.
-Hyper-V is supported since Linux 4.14.
-.P
-.B VMADDR_CID_LOCAL
-is supported since Linux 5.6.
-.\" commit ef343b35d46667668a099655fca4a5b2e43a5dfe
-Local communication in the guest and on the host is available since Linux 5.6.
-Previous versions supported only local communication within a guest
-(not on the host), and with only some transports (VMCI and virtio).
-.SH SEE ALSO
-.BR bind (2),
-.BR connect (2),
-.BR listen (2),
-.BR recv (2),
-.BR send (2),
-.BR socket (2),
-.BR capabilities (7)