menuconfig IP_DCCP
	tristate "The DCCP Protocol (EXPERIMENTAL)"
	depends on INET && EXPERIMENTAL
	---help---
	  Datagram Congestion Control Protocol (RFC 4340)

	  From http://www.ietf.org/rfc/rfc4340.txt:

	  The Datagram Congestion Control Protocol (DCCP) is a transport
	  protocol that implements bidirectional, unicast connections of
	  congestion-controlled, unreliable datagrams. It should be suitable
	  for use by applications such as streaming media, Internet telephony,
	  and on-line games.

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

	  If in doubt, say N.

if IP_DCCP

config INET_DCCP_DIAG
	depends on INET_DIAG
	def_tristate y if (IP_DCCP = y && INET_DIAG = y)
	def_tristate m

source "net/dccp/ccids/Kconfig"

menu "DCCP Kernel Hacking"
	depends on DEBUG_KERNEL=y

config IP_DCCP_DEBUG
	bool "DCCP debug messages"
	---help---
	  Only use this if you're hacking DCCP.

	  When compiling DCCP as a module, this debugging output can be toggled
	  by setting the parameter dccp_debug of the `dccp' module to 0 or 1.

	  Just say N.

config NET_DCCPPROBE
	tristate "DCCP connection probing"
	depends on PROC_FS && KPROBES
	---help---
	This module allows for capturing the changes to DCCP connection
	state in response to incoming packets. It is used for debugging
	DCCP congestion avoidance modules. If you don't understand
	what was just said, you don't need it: say N.

	Documentation on how to use DCCP connection probing can be found
	at http://linux-net.osdl.org/index.php/DccpProbe

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


endmenu

endif # IP_DDCP
