From 63a44c9268e63222442a2237b997ef20d187565c Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 30 Jul 2021 18:44:23 -0400 Subject: [PATCH] Fix feth max MTU sysctl. --- osdep/MacEthernetTap.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/osdep/MacEthernetTap.cpp b/osdep/MacEthernetTap.cpp index 6c8c7b9f0..4c51e9a8a 100644 --- a/osdep/MacEthernetTap.cpp +++ b/osdep/MacEthernetTap.cpp @@ -59,10 +59,13 @@ static const ZeroTier::MulticastGroup _blindWildcardMulticastGroup(ZeroTier::MAC(0xff),0); +#define MACOS_FETH_MAX_MTU_SYSCTL "net.link.fake.max_mtu" + namespace ZeroTier { static Mutex globalTapCreateLock; static bool globalTapInitialized = false; +static bool fethMaxMtuAdjusted = false; MacEthernetTap::MacEthernetTap( const char *homePath, @@ -102,6 +105,14 @@ MacEthernetTap::MacEthernetTap( Mutex::Lock _gl(globalTapCreateLock); // only make one at a time + if (!fethMaxMtuAdjusted) { + fethMaxMtuAdjusted = true; + int old_mtu = 0; + size_t old_mtu_len = sizeof(old_mtu); + int mtu = 10000; + sysctlbyname(MACOS_FETH_MAX_MTU_SYSCTL, &old_mtu, &old_mtu_len, &mtu, sizeof(mtu)); + } + // Destroy all feth devices on first tap start in case ZeroTier did not exit cleanly last time. // We leave interfaces less than feth100 alone in case something else is messing with feth devices. if (!globalTapInitialized) {