#
# 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 NET_SCTPPROBE
	tristate "SCTP: Association probing"
        depends on PROC_FS && KPROBES
        ---help---
        This module allows for capturing the changes to SCTP association
        state in response to incoming packets. It is used for debugging
        SCTP congestion control algorithms. If you don't understand
        what was just said, you don't need it: say N.

        To compile this code as a module, choose M here: the
        module will be called sctp_probe.

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
