From 4c13c8aa541554267ab1395fbeb20c416e448a76 Mon Sep 17 00:00:00 2001 From: travis laduke Date: Wed, 14 Jun 2023 13:36:14 -0700 Subject: [PATCH] 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);