![Gerrit Renker](/assets/img/avatar_default.png)
This patch addresses the following problems: 1. DCCP relies for its proper functioning on having at least one CCID module enabled (as in TCP plugable congestion control). Currently it is possible to disable both CCIDs and thus leave the DCCP module in a compiled, but entirely non-functional state: no sockets can be created when no CCID is available. Furthermore, the protocol is (again like TCP) not intended to be used without CCIDs. Last, a non-empty CCID list is needed for doing CCID feature negotiation. 2. Internally the default CCID that is advertised by the Linux host is set to CCID2 (DCCPF_INITIAL_CCID in include/linux/dccp.h). Disabling CCID2 in the Kconfig menu without changing the defaults leads to a failure `module not found' when trying to load the dccp module (which internally tries to load the default CCID). 3. The specification (RFC 4340, sec. 10) treats CCID2 somewhat like a `minimum common denominator'; the specification says that: * "New connections start with CCID 2 for both endpoints" * "A DCCP implementation intended for general use, such as an implementation in a general-purpose operating system kernel, SHOULD implement at least CCID 2. The intent is to make CCID 2 broadly available for interoperability [...]" Providing CCID2 as minimum-required CCID (like Reno/Cubic in TCP) thus seems reasonable. Hence this patch automatically selects CCID2 when DCCP is enabled. Documentation also added. Discussions with Ian McDonald on this subject are gratefully acknowledged. Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: Ian McDonald <ian.mcdonald@jandi.co.nz> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
65 lines
1.7 KiB
Plaintext
65 lines
1.7 KiB
Plaintext
menuconfig IP_DCCP
|
|
tristate "The DCCP Protocol (EXPERIMENTAL)"
|
|
depends on INET && EXPERIMENTAL
|
|
select IP_DCCP_CCID2
|
|
---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
|
|
|
|
config IP_DCCP_ACKVEC
|
|
bool
|
|
|
|
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
|