vsock-tcp (VM Socket TCP)ï
Header: udo/vsock-tcp.h
Table of contents (click to go)ï
Macrosï
Enumsï
Unionsï
Structsï
Functionsï
API Documentationï
Kernel Modulesï
On Host Machine
sudo modprobe -a vhost_vsock vsock_loopback
Guest Machine Kernel Config Symbols
CONFIG_PCI=Y
CONFIG_VIRTIO_MENU=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLON=y
CONFIG_VSOCKETS_DIAG=y
CONFIG_NET=y
CONFIG_VSOCKETS=y
CONFIG_VIRTIO_VSOCKETS=y
udo_vsock_tcp (private)ï
Structure defining UDO VM Socket TCP context.
-
struct udo_vsock_tcpï
-
struct udo_log_error_struct err;ï
-
bool free;ï
-
int fd;ï
-
uint32_t vcid;ï
-
int port;ï
-
struct sockaddr_vm addr;ï
err- Stores information about the error that occuredfor the given context and may later be retrievedby caller.
freefd- File descriptor to the open VM socket.
vcid- VM Context Identifier.
port- Network port number to connect(2) to or accept(2) from.
addr- Stores byte information about the VM socket context.Is used for client connect(2) and server accept(2).
-
struct udo_log_error_struct err;ï
udo_vsock_tcp_server_create_infoï
Structure passed to
udo_vsock_tcp_server_create()used to define how to create the server.
udo_vsock_tcp_server_createï
-
struct udo_vsock_tcp *udo_vsock_tcp_server_create(struct udo_vsock_tcp *vsock, const void *vsock_info);ï
Creates a VM socket that may be utilized for server socket operations.
Param
Decription
vsock
IfNULLmemory will be allocated and return tocaller. If notNULLaddress passed will be usedto store the newly createdstructudo_vsock_tcpcontext.vsock_info
Implementation uses a pointer to astructudo_vsock_tcp_server_create_info.
- Returns:
on success: Pointer to astructudo_vsock_tcpon failure:NULL
udo_vsock_tcp_server_acceptï
-
int udo_vsock_tcp_server_accept(struct udo_vsock_tcp *vsock, struct sockaddr_vm *addr);ï
Accepts client connections returns open
file descriptor to the connected client.
Param
Decription
vsock
Must pass a pointer to astructudo_vsock_tcp.addr
If not NULLaddris filled in via accept(2) call.
- Returns:
on success: Open file descriptor to accepted clienton failure: -1
udo_vsock_tcp_client_create_infoï
Structure passed to
udo_vsock_tcp_client_create()used to define how to create the client.
-
struct udo_vsock_tcp_client_create_infoï
-
vcid- VM Context Identifier to connect(2)/send(2) to.
port- Network port to connect(2)/send(2) to.
udo_vsock_tcp_client_createï
-
struct udo_vsock_tcp *udo_vsock_tcp_client_create(struct udo_vsock_tcp *vsock, const void *vsock_info);ï
Creates a VM socket that may be utilized for client socket operations.
Param
Decription
vsock
IfNULLmemory will be allocated and return tocaller. If notNULLaddress passed will be usedto store the newly createdstructudo_vsock_tcpcontext.vsock_info
Implementation uses a pointer to astructudo_vsock_tcp_client_create_info.
- Returns:
on success: Pointer to astructudo_vsock_tcpon failure:NULL
udo_vsock_tcp_client_connectï
-
int udo_vsock_tcp_client_connect(struct udo_vsock_tcp *vsock);ï
Connects client socket to address provided via
call to
udo_vsock_tcp_client_create().
Param
Decription
vsock
Must pass a pointer to astructudo_vsock_tcp.
- Returns:
on success: 0on failure: -1
udo_vsock_tcp_client_send_dataï
-
ssize_t udo_vsock_tcp_client_send_data(struct udo_vsock_tcp *vsock, const void *data, const size_t size, const void *vsock_info);ï
Send data to client socket address provided via
call to
udo_vsock_tcp_client_create().
Param
Decription
vsock
Must pass a pointer to astructudo_vsock_tcp.data
Pointer to buffer to send through socket.size
Size of data to send through socket.vsock_info
Reserved for future usage. For now usedto set the flag argument of send(2).
- Returns:
on success: Amount of bytes senton failure: # < 0
udo_vsock_tcp_get_fdï
-
int udo_vsock_tcp_get_fd(struct udo_vsock_tcp *vsock);ï
Acquire VM socket file descriptor associated with
struct udo_vsock_tcp context.
Param
Decription
vsock
Must pass a pointer to astructudo_vsock_tcp.
- Returns:
on success: VM socket file descriptoron failure: -1
udo_vsock_tcp_get_vcidï
-
uint32_t udo_vsock_tcp_get_vcid(struct udo_vsock_tcp *vsock);ï
Acquire VM socket context identifier associated with
struct udo_vsock_tcp context.
Param
Decription
vsock
Must pass a pointer to astructudo_vsock_tcp.
- Returns:
on success: VM socket context identifieron failure:UINT32_MAX
udo_vsock_tcp_get_portï
-
int udo_vsock_tcp_get_port(struct udo_vsock_tcp *vsock);ï
Acquire network port associated with
struct udo_vsock_tcp context.
Param
Decription
vsock
Must pass a pointer to astructudo_vsock_tcp.
- Returns:
on success: Network port connected to contexton failure: -1
udo_vsock_tcp_destroyï
-
void udo_vsock_tcp_destroy(struct udo_vsock_tcp *vsock);ï
Frees any allocated memory and closes FDâs (if open) created after
Param
Decription
vsock
Pointer to a validstructudo_vsock_tcp.
udo_vsock_tcp_get_sizeofï
-
int udo_vsock_tcp_get_sizeof(void);ï
Returns size of the internal structure. So,
if caller decides to allocate memory outside
of API interface they know the exact amount
of bytes.
- Returns:
on success: sizeof(structudo_vsock_tcp)on failure: sizeof(structudo_vsock_tcp)
udo_vsock_tcp_get_local_vcidï
-
uint32_t udo_vsock_tcp_get_local_vcid(void);ï
Returns the local CID of the VM/Hypervisor after
acquiring it from
/dev/vsock.
- Returns:
on success: Local VM context identiferon failure:UINT32_MAX
udo_vsock_tcp_recv_dataï
-
ssize_t udo_vsock_tcp_recv_data(const int sock_fd, void *data, const size_t size, const void *vsock_info);ï
Receive data from socket file descriptor.
Param
Decription
sock_fd
Socket file descriptor to receive data from.data
Pointer to buffer to store data received from a socket.size
Size of data to receive from a socket.vsock_info
Reserved for future usage. For now usedto set the flag argument of recv(2).
- Returns:
on success: Amount of bytes receivedon failure: # < 0
udo_vsock_tcp_send_dataï
-
ssize_t udo_vsock_tcp_send_data(const int sock_fd, const void *data, const size_t size, const void *vsock_info);ï
Send data to socket file descriptor.
Param
Decription
sock_fd
Socket file descriptor to send data to.data
Pointer to buffer to send through socket.size
Size of data to send through socket.vsock_info
Reserved for future usage. For now usedto set the flag argument of send(2).
- Returns:
on success: Amount of bytes senton failure: # < 0