# 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
	help
	  Saying Y here will enable support for running TIPC over IP/UDP
	bool
	default y
config TIPC_CRYPTO
	bool "TIPC encryption support"
	depends on TIPC
	select CRYPTO
	select CRYPTO_AES
	select CRYPTO_GCM
	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).
	bool
	default y

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.
