Skip to content

Commit 33ad798

Browse files
agldavem330
authored andcommitted
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 49a72df commit 33ad798

File tree

2 files changed

+238
-196
lines changed

2 files changed

+238
-196
lines changed

include/net/tcp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ extern atomic_t tcp_orphan_count;
5050
extern void tcp_time_wait(struct sock *sk, int state, int timeo);
5151

5252
#define MAX_TCP_HEADER (128 + MAX_HEADER)
53+
#define MAX_TCP_OPTION_SPACE 40
5354

5455
/*
5556
* Never offer a window over 32767 without using window scaling. Some
@@ -184,6 +185,7 @@ extern void tcp_time_wait(struct sock *sk, int state, int timeo);
184185
#define TCPOLEN_SACK_BASE_ALIGNED 4
185186
#define TCPOLEN_SACK_PERBLOCK 8
186187
#define TCPOLEN_MD5SIG_ALIGNED 20
188+
#define TCPOLEN_MSS_ALIGNED 4
187189

188190
/* Flags in tp->nonagle */
189191
#define TCP_NAGLE_OFF 1 /* Nagle's algo is disabled */

0 commit comments

Comments
 (0)