#
# 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.
