]> Cypherpunks repositories - gostls13.git/commitdiff
net: add mptcpStatus type
authorMatthieu Baerts <matthieu.baerts@tessares.net>
Mon, 20 Mar 2023 09:35:51 +0000 (10:35 +0100)
committerEmmanuel Odeke <emmanuel@orijtech.com>
Fri, 24 Mar 2023 10:41:21 +0000 (10:41 +0000)
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
<gregory.detal@tessares.net>.

Updates #56539

Change-Id: I8fa0cad7a18ca967508799fc828ef060b27683d2
Reviewed-on: https://go-review.googlesource.com/c/go/+/477735
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/net/dial.go

index 85ec55757518d92e83868df168c2c4977f89691a..35c2761d2906b2c4fc447b47d6ae8aabcf5e424e 100644 (file)
@@ -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