From: Matthieu Baerts Date: Mon, 20 Mar 2023 09:35:51 +0000 (+0100) Subject: net: add mptcpStatus type X-Git-Tag: go1.21rc1~1164 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e4abe90bf8bee451971c4b23d4418a9fc021c4a8;p=gostls13.git net: add mptcpStatus type This new type will be used in the following commits. The goal is to have a tristate, an enum with three values: - system default (0) - enabled - disabled The system default value is linked to defaultMPTCPEnabled: disabled by default for the moment. Users will be able to force enabling/disabling MPTCP or use the default behaviour. This work has been co-developped by Gregory Detal . Updates #56539 Change-Id: I8fa0cad7a18ca967508799fc828ef060b27683d2 Reviewed-on: https://go-review.googlesource.com/c/go/+/477735 TryBot-Result: Gopher Robot Reviewed-by: Heschi Kreinick Auto-Submit: Ian Lance Taylor Run-TryBot: Ian Lance Taylor Reviewed-by: Emmanuel Odeke Reviewed-by: Ian Lance Taylor --- diff --git a/src/net/dial.go b/src/net/dial.go index 85ec557575..35c2761d29 100644 --- a/src/net/dial.go +++ b/src/net/dial.go @@ -11,12 +11,45 @@ import ( "time" ) -// defaultTCPKeepAlive is a default constant value for TCPKeepAlive times -// See golang.org/issue/31510 const ( + // defaultTCPKeepAlive is a default constant value for TCPKeepAlive times + // See go.dev/issue/31510 defaultTCPKeepAlive = 15 * time.Second + + // For the moment, MultiPath TCP is not used by default + // See go.dev/issue/56539 + defaultMPTCPEnabled = false ) +// mptcpStatus is a tristate for Multipath TCP, see go.dev/issue/56539 +type mptcpStatus uint8 + +const ( + // The value 0 is the system default, linked to defaultMPTCPEnabled + mptcpUseDefault mptcpStatus = iota + mptcpEnabled + mptcpDisabled +) + +func (m *mptcpStatus) get() bool { + switch *m { + case mptcpEnabled: + return true + case mptcpDisabled: + return false + } + + return defaultMPTCPEnabled +} + +func (m *mptcpStatus) set(use bool) { + if use { + *m = mptcpEnabled + } else { + *m = mptcpDisabled + } +} + // A Dialer contains options for connecting to an address. // // The zero value for each field is equivalent to dialing