# SPDX-License-Identifier: GPL-2.0-only
#
# TIPC configuration
#

menuconfig TIPC
	tristate "The TIPC Protocol"
	depends on INET
	depends on IPV6 || IPV6=n
	help
	  The Transparent Inter Process Communication (TIPC) protocol is
	  specially designed for intra cluster communication. This protocol
	  originates from Ericsson where it has been used in carrier grade
	  cluster applications for many years.

	  For more information about TIPC, see http://tipc.sourceforge.net.

	  This protocol support is also available as a module ( = code which
	  can be inserted in and removed from the running kernel whenever you
	  want). The module will be called tipc. If you want to compile it
	  as a module, say M here and read <file:Documentation/kbuild/modules.rst>.

	  If in doubt, say N.

config TIPC_MEDIA_IB
	bool "InfiniBand media type support"
	depends on TIPC && INFINIBAND_IPOIB
	help
	  Saying Y here will enable support for running TIPC on
	  IP-over-InfiniBand devices.
config TIPC_MEDIA_UDP
	bool "IP/UDP media type support"
	depends on TIPC
	select NET_UDP_TUNNEL
	default y
	help
	  Saying Y here will enable support for running TIPC over IP/UDP

config TIPC_CRYPTO
	bool "TIPC encryption support"
	depends on TIPC
	select CRYPTO
	select CRYPTO_AES
	select CRYPTO_GCM
	default y
	help
	  Saying Y here will enable support for TIPC encryption.
	  All TIPC messages will be encrypted/decrypted by using the currently most
	  advanced algorithm: AEAD AES-GCM (like IPSec or TLS) before leaving/
	  entering the TIPC stack.
	  Key setting from user-space is performed via netlink by a user program
	  (e.g. the iproute2 'tipc' tool).

config TIPC_DIAG
	tristate "TIPC: socket monitoring interface"
	depends on TIPC
	default y
	help
	Support for TIPC socket monitoring interface used by ss tool.
	If unsure, say Y.
