menuconfig IP_DCCP
	tristate "The DCCP Protocol"
	depends on INET
	---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://www.linuxfoundation.org/collaborate/workgroups/networking/dccpprobe

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


endmenu

endif # IP_DDCP
