#
# SCTP configuration
#

menuconfig IP_SCTP
	tristate "The SCTP Protocol (EXPERIMENTAL)"
	depends on INET && EXPERIMENTAL
	depends on IPV6 || IPV6=n
	select CRYPTO
	select CRYPTO_HMAC
	select CRYPTO_SHA1
	select CRYPTO_MD5 if SCTP_HMAC_MD5
	select LIBCRC32C
	---help---
	  Stream Control Transmission Protocol

	  From RFC 2960 <http://www.ietf.org/rfc/rfc2960.txt>.

	  "SCTP is a reliable transport protocol operating on top of a
	  connectionless packet network such as IP.  It offers the following
	  services to its users:

	  -- acknowledged error-free non-duplicated transfer of user data,
	  -- data fragmentation to conform to discovered path MTU size,
	  -- sequenced delivery of user messages within multiple streams,
	  with an option for order-of-arrival delivery of individual user
	  messages,
	  -- optional bundling of multiple user messages into a single SCTP
	  packet, and
	  -- network-level fault tolerance through supporting of multi-
	  homing at either or both ends of an association."

	  To compile this protocol support as a module, choose M here: the
	  module will be called sctp.

	  If in doubt, say N.

if IP_SCTP

config SCTP_DBG_MSG
	bool "SCTP: Debug messages"
	help
	  If you say Y, this will enable verbose debugging messages. 

	  If unsure, say N.  However, if you are running into problems, use 
	  this option to gather detailed trace information

config SCTP_DBG_OBJCNT
	bool "SCTP: Debug object counts"
	depends on PROC_FS
	help
	  If you say Y, this will enable debugging support for counting the 
	  type of objects that are currently allocated.  This is useful for 
	  identifying memory leaks. This debug information can be viewed by
	  'cat /proc/net/sctp/sctp_dbg_objcnt'

	  If unsure, say N

choice
	prompt "SCTP: Cookie HMAC Algorithm"
	default SCTP_HMAC_MD5
	help
	  HMAC algorithm to be used during association initialization.  It
	  is strongly recommended to use HMAC-SHA1 or HMAC-MD5.  See 
	  configuration for Cryptographic API and enable those algorithms
          to make usable by SCTP. 

config SCTP_HMAC_NONE
	bool "None"
	help 
	  Choosing this disables the use of an HMAC during association 
	  establishment.  It is advised to use either HMAC-MD5 or HMAC-SHA1.

config SCTP_HMAC_SHA1
	bool "HMAC-SHA1"
	help 
	  Enable the use of HMAC-SHA1 during association establishment.  It 
	  is advised to use either HMAC-MD5 or HMAC-SHA1.

config SCTP_HMAC_MD5
	bool "HMAC-MD5"
	help
	  Enable the use of HMAC-MD5 during association establishment.  It is 
	  advised to use either HMAC-MD5 or HMAC-SHA1.

endchoice

endif # IP_SCTP
