# SPDX-License-Identifier: GPL-2.0-only
#
# Vsock protocol
#

config VSOCKETS
	tristate "Virtual Socket protocol"
	help
	  Virtual Socket Protocol is a socket protocol similar to TCP/IP
	  allowing communication between Virtual Machines and hypervisor
	  or host.

	  You should also select one or more hypervisor-specific transports
	  below.

	  To compile this driver as a module, choose M here: the module
	  will be called vsock. If unsure, say N.

config VSOCKETS_DIAG
	tristate "Virtual Sockets monitoring interface"
	depends on VSOCKETS
	default y
	help
	  Support for PF_VSOCK sockets monitoring interface used by the ss tool.
	  If unsure, say Y.

	  Enable this module so userspace applications can query open sockets.

config VMWARE_VMCI_VSOCKETS
	tristate "VMware VMCI transport for Virtual Sockets"
	depends on VSOCKETS && VMWARE_VMCI
	help
	  This module implements a VMCI transport for Virtual Sockets.

	  Enable this transport if your Virtual Machine runs on a VMware
	  hypervisor.

	  To compile this driver as a module, choose M here: the module
	  will be called vmw_vsock_vmci_transport. If unsure, say N.

config VIRTIO_VSOCKETS
	tristate "virtio transport for Virtual Sockets"
	depends on VSOCKETS && VIRTIO
	select VIRTIO_VSOCKETS_COMMON
	help
	  This module implements a virtio transport for Virtual Sockets.

	  Enable this transport if your Virtual Machine host supports Virtual
	  Sockets over virtio.

	  To compile this driver as a module, choose M here: the module will be
	  called vmw_vsock_virtio_transport. If unsure, say N.

config VIRTIO_VSOCKETS_COMMON
	tristate
	help
	  This option is selected by any driver which needs to access
	  the virtio_vsock.  The module will be called
	  vmw_vsock_virtio_transport_common.

config HYPERV_VSOCKETS
	tristate "Hyper-V transport for Virtual Sockets"
	depends on VSOCKETS && HYPERV
	help
	  This module implements a Hyper-V transport for Virtual Sockets.

	  Enable this transport if your Virtual Machine host supports Virtual
	  Sockets over Hyper-V VMBus.

	  To compile this driver as a module, choose M here: the module will be
	  called hv_sock. If unsure, say N.
