#
# 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 "TIPC: Advanced configuration"
	default n
	help
	  Saying Y here will open some advanced configuration
          for TIPC. Most users do not need to bother, so if
          unsure, just say N.

config TIPC_ZONES
	int "Maximum number of zones in network"
	depends on TIPC_ADVANCED
	range 1 255
	default "3"
	help
	 Max number of zones inside TIPC network. Max supported value 
         is 255 zones, minimum is 1

	 Default is 3 zones in a network; setting this to higher
	 allows more zones but might use more memory.

config TIPC_CLUSTERS
	int "Maximum number of clusters in a zone"
	depends on TIPC_ADVANCED
	range 1 1
	default "1"
	help
          ***Only 1 (one cluster in a zone) is supported by current code.***

          (Max number of clusters inside TIPC zone. Max supported 
          value is 4095 clusters, minimum is 1.

	  Default is 1; setting this to smaller value might save 
          some memory, setting it to higher
	  allows more clusters and might consume more memory.)

config TIPC_NODES
	int "Maximum number of nodes in cluster"
	depends on TIPC_ADVANCED
	range 8 2047
	default "255"
	help
	  Maximum number of nodes inside a TIPC cluster. Maximum 
          supported value is 2047 nodes, minimum is 8. 

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

config TIPC_SLAVE_NODES
	int "Maximum number of slave nodes in cluster"
	depends on TIPC_ADVANCED
	range 0 2047
	default "0"
	help
          ***This capability is not supported by current code.***
	  
	  Maximum number of slave nodes inside a TIPC cluster. Maximum 
          supported value is 2047 nodes, minimum is 0. 

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

config TIPC_PORTS
	int "Maximum number of ports in a node"
	depends on TIPC_ADVANCED
	range 217 65536
	default "8191"
	help
	  Maximum number of ports within a node. Maximum 
          supported value is 64535 nodes, minimum is 127. 

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

config TIPC_LOG
	int "Size of log buffer"
	depends on TIPC_ADVANCED
	default 0
	help
 	  Size (in bytes) of TIPC's internal log buffer, which records the
	  occurrence of significant events.  Maximum supported value
	  is 32768 bytes, minimum 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
 	  This will enable 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
