#
# TIPC configuration
#

menuconfig TIPC
	tristate "The TIPC Protocol (EXPERIMENTAL)"
	depends on INET && EXPERIMENTAL
	---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.txt>.

	  If in doubt, say N.

if TIPC

config TIPC_ADVANCED
	bool "Advanced TIPC configuration"
	default n
	help
	  Saying Y here will open some advanced configuration for TIPC.
	  Most users do not need to bother; if unsure, just say N.

config TIPC_NODES
	int "Maximum number of nodes in a cluster"
	depends on TIPC_ADVANCED
	range 8 2047
	default "255"
	help
	  Specifies how many nodes can be supported in a TIPC cluster.
	  Can range from 8 to 2047 nodes; default is 255.

	  Setting this to a smaller value saves some memory;
	  setting it to higher allows for more nodes.

config TIPC_PORTS
	int "Maximum number of ports in a node"
	depends on TIPC_ADVANCED
	range 127 65535
	default "8191"
	help
	  Specifies how many ports can be supported by a node.
	  Can range from 127 to 65535 ports; default is 8191.

	  Setting this to a smaller value saves some memory,
	  setting it to higher allows for more ports.

config TIPC_LOG
	int "Size of log buffer"
	depends on TIPC_ADVANCED
	range 0 32768
	default "0"
	help
	  Size (in bytes) of TIPC's internal log buffer, which records the
	  occurrence of significant events.  Can range from 0 to 32768 bytes;
	  default is 0.

	  There is no need to enable the log buffer unless the node will be
	  managed remotely via TIPC.

config TIPC_DEBUG
	bool "Enable debugging support"
	default n
	help
	  Saying Y here enables TIPC debugging capabilities used by developers.
	  Most users do not need to bother; if unsure, just say N.

	  Enabling debugging support causes TIPC to display data about its
	  internal state when certain abnormal conditions occur. It also
	  makes it easy for developers to capture additional information of
	  interest using the dbg() or msg_dbg() macros.

endif # TIPC
