From ee663d61cd65c37ece60dfc6d72c4b1267aef1ed Mon Sep 17 00:00:00 2001 From: travis laduke Date: Wed, 14 Jun 2023 13:36:14 -0700 Subject: [PATCH 1/3] Add warning to cli for allow default on FreeBSD It doesn't work. Not possible to fix with deficient network stack and APIs. ZeroTierOne-freebsd # zerotier-cli set 9bee8941b5xxxxxx allowDefault=1 400 set Allow Default does not work properly on FreeBSD. See #580 root@freebsd13-a:~/ZeroTierOne-freebsd # zerotier-cli get 9bee8941b5xxxxxx allowDefault 1 --- service/OneService.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/service/OneService.cpp b/service/OneService.cpp index e063bdedb..bd82ac568 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -1793,6 +1793,8 @@ public: _node->join(wantnw, (void*)0, (void*)0); auto out = json::object(); Mutex::Lock l(_nets_m); + bool allowDefault = false; + if (!_nets.empty()) { NetworkState &ns = _nets[wantnw]; try { @@ -1806,8 +1808,9 @@ public: if (allowGlobal.is_boolean()) { ns.setAllowGlobal((bool)allowGlobal); } - json& allowDefault = j["allowDefault"]; - if (allowDefault.is_boolean()) { + json& _allowDefault = j["allowDefault"]; + if (_allowDefault.is_boolean()) { + allowDefault = _allowDefault; ns.setAllowDefault((bool)allowDefault); } json& allowDNS = j["allowDNS"]; @@ -1824,7 +1827,17 @@ public: _networkToJson(out, ns); } +#ifdef __FreeBSD__ + if(!!allowDefault){ + res.status = 400; + setContent(req, res, "Allow Default does not work properly on FreeBSD. See #580"); + } else { + setContent(req, res, out.dump()); + + } +#else setContent(req, res, out.dump()); +#endif }; _controlPlane.Post("/network/([0-9a-fA-F]{16})", networkPost); _controlPlane.Put("/network/([0-9a-fA-F]){16}", networkPost); From 2672d037a8a70623fa1d99833ed7b7feb02181ff Mon Sep 17 00:00:00 2001 From: Jake Vis Date: Thu, 13 Jul 2023 13:52:06 -0700 Subject: [PATCH 2/3] ARM64 Support for TapDriver6 (#1949) --- windows/TapDriver6/tap.h | 9 +++++---- windows/TapDriver6/zttap300.inf | 7 ++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/windows/TapDriver6/tap.h b/windows/TapDriver6/tap.h index 76df77980..f241d80e3 100644 --- a/windows/TapDriver6/tap.h +++ b/windows/TapDriver6/tap.h @@ -25,10 +25,11 @@ #define __TAP_H #ifndef NDIS_SUPPORT_NDIS6 -#define NDIS_SUPPORT_NDIS6 1 -#define NDIS_SUPPORT_NDIS61 1 -#define NDIS_WDM1 1 -#define NDIS61_MINIPORT 1 +#define NDIS_MINIPORT_DRIVER 1 +#define NDIS_SUPPORT_NDIS6 1 +#define NDIS_SUPPORT_NDIS630 1 +#define NDIS_WDM1 1 +#define NDIS630_MINIPORT 1 #endif #include diff --git a/windows/TapDriver6/zttap300.inf b/windows/TapDriver6/zttap300.inf index 8b12a1b3c..8e74daab1 100644 --- a/windows/TapDriver6/zttap300.inf +++ b/windows/TapDriver6/zttap300.inf @@ -35,7 +35,8 @@ Provider = "ZeroTier" [Manufacturer] %Provider%=zttap300,NTx86 -;%Provider%=zttap300,NTamd64 +%Provider%=zttap300,NTamd64 +%Provider%=zttap300,NTarm64 [zttap300.NTx86] %DeviceDescription% = zttap300.ndi, root\zttap300 ; Root enumerated @@ -45,6 +46,10 @@ Provider = "ZeroTier" %DeviceDescription% = zttap300.ndi, root\zttap300 ; Root enumerated %DeviceDescription% = zttap300.ndi, zttap300 ; Legacy +[zttap300.NTarm64] +%DeviceDescription% = zttap300.ndi, root\zttap300 ; Root enumerated +%DeviceDescription% = zttap300.ndi, zttap300 ; Legacy + ;----------------- Characteristics ------------ ; NCF_PHYSICAL = 0x04 ; NCF_VIRTUAL = 0x01 From fdc2e0f692166ae03bc042e67f342d5d8d48c4f8 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Wed, 29 Mar 2023 15:44:19 -0700 Subject: [PATCH 3/3] Release memory previously allocated by UPNP_GetValidIGD --- osdep/PortMapper.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/osdep/PortMapper.cpp b/osdep/PortMapper.cpp index 6418464db..0027ed69c 100644 --- a/osdep/PortMapper.cpp +++ b/osdep/PortMapper.cpp @@ -207,7 +207,8 @@ public: memset(&data,0,sizeof(data)); OSUtils::ztsnprintf(inport,sizeof(inport),"%d",localPort); - if ((UPNP_GetValidIGD(devlist,&urls,&data,lanaddr,sizeof(lanaddr)))&&(lanaddr[0])) { + int foundValidIGD = 0; + if ((foundValidIGD = UPNP_GetValidIGD(devlist,&urls,&data,lanaddr,sizeof(lanaddr)))&&(lanaddr[0])) { #ifdef ZT_PORTMAPPER_TRACE PM_TRACE("PortMapper: UPnP: my LAN IP address: %s" ZT_EOL_S,lanaddr); #endif @@ -282,9 +283,11 @@ public: PM_TRACE("PortMapper: UPnP: UPNP_GetValidIGD failed, returning to NAT-PMP mode" ZT_EOL_S); #endif } - freeUPNPDevlist(devlist); + if(foundValidIGD) { + FreeUPNPUrls(&urls); + } } else { mode = 0; #ifdef ZT_PORTMAPPER_TRACE