diff options
author | Andrei Vagin <avagin@google.com> | 2019-03-19 17:32:23 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2019-03-19 17:33:20 -0700 |
commit | 87cce0ec08b9d629a5e3a88be411b1721d767301 (patch) | |
tree | 86c7f3b29933a86a1b7efb22694fb8413c70e780 /pkg/tcpip/transport/tcp/endpoint.go | |
parent | 7b33df68450bdb9519cf650a8d92fa4a81f37fa0 (diff) |
netstack: reduce MSS from SYN to account tcp options
See: https://tools.ietf.org/html/rfc6691#section-2
PiperOrigin-RevId: 239305632
Change-Id: Ie8eb912a43332e6490045dc95570709c5b81855e
Diffstat (limited to 'pkg/tcpip/transport/tcp/endpoint.go')
-rw-r--r-- | pkg/tcpip/transport/tcp/endpoint.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/pkg/tcpip/transport/tcp/endpoint.go b/pkg/tcpip/transport/tcp/endpoint.go index 7d18e3612..5656890f6 100644 --- a/pkg/tcpip/transport/tcp/endpoint.go +++ b/pkg/tcpip/transport/tcp/endpoint.go @@ -1596,6 +1596,16 @@ func (e *endpoint) maybeEnableSACKPermitted(synOpts *header.TCPSynOptions) { } } +// maxOptionSize return the maximum size of TCP options. +func (e *endpoint) maxOptionSize() (size int) { + var maxSackBlocks [header.TCPMaxSACKBlocks]header.SACKBlock + options := e.makeOptions(maxSackBlocks[:]) + size = len(options) + putOptions(options) + + return size +} + // completeState makes a full copy of the endpoint and returns it. This is used // before invoking the probe. The state returned may not be fully consistent if // there are intervening syscalls when the state is being copied. |