Skip to content

: Basis for feature negotiation

Gerrit Renker dccp 1 version In review

Get series with b4
b4 am 200709271514.25022@strip-the-willow

Versions newest first

  1. v1 Latest11 patches 3 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/11: Remove unused and redundant validation functionsnet/dccp/feat.c net/dccp/feat.h+4 -341 reply
2/11: Make code assumptions explicitnet/dccp/feat.c+10 -71 reply
3/11: Ignore feature negotiation on Data packetsnet/dccp/options.c+5 -11 reply
4/11: Basic data structure for feature negotiationnet/dccp/feat.c net/dccp/feat.h+110 -00 replies
5/11: Implement lookup table for feature-negotiation informationinclude/linux/dccp.h net/dccp/feat.c+77 -40 replies
6/11: List management for new feature negotiationnet/dccp/feat.c+130 -00 replies
7/11: Socket support for feature negotiation and its initialisationinclude/linux/dccp.h net/dccp/dccp.h net/dccp/feat.c +6 more+37 -60 replies
8/11: Cleanup routines for feature negotiationnet/dccp/dccp.h net/dccp/ipv4.c net/dccp/ipv6.c +1 more+5 -00 replies
9/11: Provide documentation for undocumented sockopt structinclude/linux/dccp.h net/dccp/proto.c+9 -50 replies
10/11: Limit feature negotiation to connection setup phasenet/dccp/feat.c+8 -50 replies
11/11: Disable setting timers for feature negotiationnet/dccp/feat.c net/dccp/options.c net/dccp/timer.c+0 -360 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/11]: Basis for feature negotiation

This now starts the feature-negotiation code and is the first batch of several. I have been testing these for quite a while and believe they are bug free.

The concept for feature negotiation is new and mostly mapped onto the 3-way handshake. Documentation is on http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/

Patch #1: Removes unnecessary code from option processing
(I had originally introduced this out of misunderstanding the code)

Patch #2: Adds an explicit remark that all known-so-far SP values are 1-byte,
which removes several XXX's present in the feature-negotiation code.

Patch #3: Stops option processing to parse feature-negotiation on Data packets
(is not allowed as per RFC 4340, 6.1 and slows down).

Patch #4: The new feature negotiation code starts here - data structures and initialisation.
(I believe what Frederic Brooks said that the structures are most important, since
one can see from them already how the algorithms will be laid out).

Patch #5: In the spirit of patch #4, a lookup table is provided which forms the central
`intelligence' of the feature-negotiation code (has all the rules and defaults).

Patch #6: Adds list management functions (book-keeping). As before, the feature negotiation
code is maintained as doubly linked list, which is smaller on average than using a full table on each (request) socket. But the list management code is entirely new; the most important points are:
- strictly ordered by feature number (faster lookup)
- no duplicates (and the management code becomes simpler)

Patch #7: Adds feature-negotiation data structures (struct list_head) to DCCP sockets, and
request sockets; and provides initialisation for using these socket fields.

Patch #8: Cleanup routines for the socket data structures of patch #7.

Patch #9: Documents a socket struct and asks whether it can be removed.

Patch #10: Restricts feature negotiation to connection setup, as documented on
http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/during_connection_setup.html
Please note: this limitation is later lifted, to allow passing NN options during
an established connection (CCID2's Ack Ratio depends on that).

Patch #11: We are no longer using retransmission timers for feature negotiation. This has been made possible
by the concept documented on the above URL - it is mapped, with its dependencies, onto the initial handshake. Away go the timers.