#
# 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_ZONES
	int "Maximum number of zones in a network"
	depends on TIPC_ADVANCED
	range 1 255
	default "3"
	help
	  Specifies how many zones can be supported in a TIPC network.
	  Can range from 1 to 255 zones; default is 3.

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

config TIPC_CLUSTERS
	int "Maximum number of clusters in a zone"
	depends on TIPC_ADVANCED
	range 1 1
	default "1"
	help
	  Specifies how many clusters can be supported in a TIPC zone.

	  *** Currently TIPC only supports a single cluster per zone. ***

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 debug messages"
	default n
	help
	  This enables debugging of TIPC.

	  Only say Y here if you are having trouble with TIPC.  It will
	  enable the display of detailed information about what is going on.

endif # TIPC
