tcp: options clean up
authorAdam Langley <agl@imperialviolet.org>
Sat, 19 Jul 2008 07:04:31 +0000 (00:04 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 19 Jul 2008 07:04:31 +0000 (00:04 -0700)
commit33ad798c924b4a1afad3593f2796d465040aadd5
tree2a0a868849d6e84591b9d4d917722aee2544b77b
parent49a72dfb8814c2d65bd9f8c9c6daf6395a1ec58d
tcp: options clean up

This should fix the following bugs:
  * Connections with MD5 signatures produce invalid packets whenever SACK
    options are included
  * MD5 signatures are counted twice in the MSS calculations

Behaviour changes:
  * A SYN with MD5 + SACK + TS elicits a SYNACK with MD5 + SACK

    This is because we can't fit any SACK blocks in a packet with MD5 + TS
    options. There was discussion about disabling SACK rather than TS in
    order to fit in better with old, buggy kernels, but that was deemed to
    be unnecessary.

  * SYNs with MD5 don't include a TS option

    See above.

Additionally, it removes a bunch of duplicated logic for calculating options,
which should help avoid these sort of issues in the future.

Signed-off-by: Adam Langley <agl@imperialviolet.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/tcp_output.c