summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-05-22 00:57:42 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2021-05-22 01:00:51 +0200
commitc27ff9b9f6f7849614e774be8a15c1266c415750 (patch)
tree9a8a5bf41885dc84ca15a41192cf0fda7fd712e4
parent99e8b4ba605538b64c693c4056904f34810c3938 (diff)
device: allow reducing queue constants on iOS
Heavier network extensions might require the wireguard-go component to use less ram, so let users of this reduce these as needed. At some point we'll put this behind a configuration method of sorts, but for now, just expose the consts as vars. Requested-by: Josh Bleecher Snyder <josh@tailscale.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--device/constants.go1
-rw-r--r--device/device.go2
-rw-r--r--device/queueconstants_ios.go20
3 files changed, 12 insertions, 11 deletions
diff --git a/device/constants.go b/device/constants.go
index 2252917..53a2526 100644
--- a/device/constants.go
+++ b/device/constants.go
@@ -35,7 +35,6 @@ const (
/* Implementation constants */
const (
- UnderLoadQueueSize = QueueHandshakeSize / 8
UnderLoadAfterTime = time.Second // how long does the device remain under load after detected
MaxPeers = 1 << 16 // maximum number of configured peers
)
diff --git a/device/device.go b/device/device.go
index 86f519a..5644c8a 100644
--- a/device/device.go
+++ b/device/device.go
@@ -210,7 +210,7 @@ func (device *Device) Down() error {
func (device *Device) IsUnderLoad() bool {
// check if currently under load
now := time.Now()
- underLoad := len(device.queue.handshake.c) >= UnderLoadQueueSize
+ underLoad := len(device.queue.handshake.c) >= QueueHandshakeSize/8
if underLoad {
atomic.StoreInt64(&device.rate.underLoadUntil, now.Add(UnderLoadAfterTime).UnixNano())
return true
diff --git a/device/queueconstants_ios.go b/device/queueconstants_ios.go
index be30e19..36c8704 100644
--- a/device/queueconstants_ios.go
+++ b/device/queueconstants_ios.go
@@ -7,13 +7,15 @@
package device
-/* Fit within memory limits for iOS's Network Extension API, which has stricter requirements */
-
-const (
- QueueStagedSize = 128
- QueueOutboundSize = 1024
- QueueInboundSize = 1024
- QueueHandshakeSize = 1024
- MaxSegmentSize = 1700
- PreallocatedBuffersPerPool = 1024
+// Fit within memory limits for iOS's Network Extension API, which has stricter requirements.
+// These are vars instead of consts, because heavier network extensions might want to reduce
+// them further.
+var (
+ QueueStagedSize = 128
+ QueueOutboundSize = 1024
+ QueueInboundSize = 1024
+ QueueHandshakeSize = 1024
+ PreallocatedBuffersPerPool uint32 = 1024
)
+
+const MaxSegmentSize = 1700