Signed-off-by: Moritz Warning <moritzwarning@web.de>lilik-openwrt-22.03
@ -0,0 +1,27 @@ | |||
From c578216351a4daa3916265b39b14f7c23ef15c90 Mon Sep 17 00:00:00 2001 | |||
From: Moritz Warning <moritzwarning@web.de> | |||
Date: Mon, 23 Apr 2018 22:12:31 +0200 | |||
Subject: [PATCH 1/4] find miniupnpc.h in staging directory | |||
--- | |||
make-linux.mk | 4 ++-- | |||
1 file changed, 2 insertions(+), 2 deletions(-) | |||
diff --git a/make-linux.mk b/make-linux.mk | |||
index 2e6a8632..0cd955d1 100644 | |||
--- a/make-linux.mk | |||
+++ b/make-linux.mk | |||
@@ -22,8 +22,8 @@ ONE_OBJS+=osdep/LinuxEthernetTap.o | |||
# otherwise build into binary as done on Mac and Windows. | |||
ONE_OBJS+=osdep/PortMapper.o | |||
override DEFS+=-DZT_USE_MINIUPNPC | |||
-MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2..*"' /usr/include/miniupnpc/miniupnpc.h && echo 1) | |||
-#MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' /usr/include/miniupnpc/miniupnpc.h && echo 1) | |||
+MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2..*"' $(STAGING_DIR)/usr/include/miniupnpc/miniupnpc.h && echo 1) | |||
+#MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' $(STAGING_DIR)/usr/include/miniupnpc/miniupnpc.h && echo 1) | |||
ifeq ($(MINIUPNPC_IS_NEW_ENOUGH),1) | |||
override DEFS+=-DZT_USE_SYSTEM_MINIUPNPC | |||
LDLIBS+=-lminiupnpc | |||
-- | |||
2.17.0 | |||
@ -1,47 +0,0 @@ | |||
From 61b69f74fecf3c34c0fd2003897c92790ca5a9f5 Mon Sep 17 00:00:00 2001 | |||
From: Moritz Warning <moritzwarning@web.de> | |||
Date: Thu, 4 May 2017 22:13:55 +0200 | |||
Subject: [PATCH 1/2] use external libminiupnpc and libnatpmp | |||
--- | |||
make-linux.mk | 20 ++++++++++---------- | |||
1 file changed, 10 insertions(+), 10 deletions(-) | |||
diff --git a/make-linux.mk b/make-linux.mk | |||
index 87d29af..f5b3d8d 100644 | |||
--- a/make-linux.mk | |||
+++ b/make-linux.mk | |||
@@ -22,20 +22,20 @@ OBJS+=ext/http-parser/http_parser.o | |||
# otherwise build into binary as done on Mac and Windows. | |||
OBJS+=osdep/PortMapper.o | |||
DEFS+=-DZT_USE_MINIUPNPC | |||
-MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' /usr/include/miniupnpc/miniupnpc.h && echo 1) | |||
-ifeq ($(MINIUPNPC_IS_NEW_ENOUGH),1) | |||
+#MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' /usr/include/miniupnpc/miniupnpc.h && echo 1) | |||
+#ifeq ($(MINIUPNPC_IS_NEW_ENOUGH),1) | |||
DEFS+=-DZT_USE_SYSTEM_MINIUPNPC | |||
LDLIBS+=-lminiupnpc | |||
-else | |||
- DEFS+=-DMINIUPNP_STATICLIB -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DOS_STRING=\"Linux\" -DMINIUPNPC_VERSION_STRING=\"2.0\" -DUPNP_VERSION_STRING=\"UPnP/1.1\" -DENABLE_STRNATPMPERR | |||
- OBJS+=ext/miniupnpc/connecthostport.o ext/miniupnpc/igd_desc_parse.o ext/miniupnpc/minisoap.o ext/miniupnpc/minissdpc.o ext/miniupnpc/miniupnpc.o ext/miniupnpc/miniwget.o ext/miniupnpc/minixml.o ext/miniupnpc/portlistingparse.o ext/miniupnpc/receivedata.o ext/miniupnpc/upnpcommands.o ext/miniupnpc/upnpdev.o ext/miniupnpc/upnperrors.o ext/miniupnpc/upnpreplyparse.o | |||
-endif | |||
-ifeq ($(wildcard /usr/include/natpmp.h),) | |||
- OBJS+=ext/libnatpmp/natpmp.o ext/libnatpmp/getgateway.o | |||
-else | |||
+#else | |||
+# DEFS+=-DMINIUPNP_STATICLIB -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DOS_STRING=\"Linux\" -DMINIUPNPC_VERSION_STRING=\"2.0\" -DUPNP_VERSION_STRING=\"UPnP/1.1\" -DENABLE_STRNATPMPERR | |||
+# OBJS+=ext/miniupnpc/connecthostport.o ext/miniupnpc/igd_desc_parse.o ext/miniupnpc/minisoap.o ext/miniupnpc/minissdpc.o ext/miniupnpc/miniupnpc.o ext/miniupnpc/miniwget.o ext/miniupnpc/minixml.o ext/miniupnpc/portlistingparse.o ext/miniupnpc/receivedata.o ext/miniupnpc/upnpcommands.o ext/miniupnpc/upnpdev.o ext/miniupnpc/upnperrors.o ext/miniupnpc/upnpreplyparse.o | |||
+#endif | |||
+#ifeq ($(wildcard /usr/include/natpmp.h),) | |||
+# OBJS+=ext/libnatpmp/natpmp.o ext/libnatpmp/getgateway.o | |||
+#else | |||
LDLIBS+=-lnatpmp | |||
DEFS+=-DZT_USE_SYSTEM_NATPMP | |||
-endif | |||
+#endif | |||
ifeq ($(ZT_ENABLE_CLUSTER),1) | |||
DEFS+=-DZT_ENABLE_CLUSTER | |||
-- | |||
2.1.4 | |||
@ -1,24 +0,0 @@ | |||
From b8a0598002fd08618d20cd1bbfb03559435241a8 Mon Sep 17 00:00:00 2001 | |||
From: Moritz Warning <moritzwarning@web.de> | |||
Date: Thu, 4 May 2017 22:35:58 +0200 | |||
Subject: [PATCH 2/2] pin target to linux | |||
--- | |||
Makefile | 2 +- | |||
1 file changed, 1 insertion(+), 1 deletion(-) | |||
diff --git a/Makefile b/Makefile | |||
index 9511862..d5b0dfc 100644 | |||
--- a/Makefile | |||
+++ b/Makefile | |||
@@ -1,6 +1,6 @@ | |||
# Common makefile -- loads make rules for each platform | |||
-OSTYPE=$(shell uname -s) | |||
+OSTYPE=Linux | |||
ifeq ($(OSTYPE),Darwin) | |||
include make-mac.mk | |||
-- | |||
2.1.4 | |||
@ -0,0 +1,33 @@ | |||
From 7cfe751128d412a9b780ba5e4cb11908fc71cd3d Mon Sep 17 00:00:00 2001 | |||
From: Moritz Warning <moritzwarning@web.de> | |||
Date: Mon, 30 Apr 2018 16:14:30 +0200 | |||
Subject: [PATCH 2/4] remove -pie | |||
fixes relocation "against `a local symbol' can not be used | |||
when making a shared object; recompile with -fPIC" error | |||
--- | |||
make-linux.mk | 6 +++--- | |||
1 file changed, 3 insertions(+), 3 deletions(-) | |||
diff --git a/make-linux.mk b/make-linux.mk | |||
index 0cd955d1..add1d3ae 100644 | |||
--- a/make-linux.mk | |||
+++ b/make-linux.mk | |||
@@ -71,11 +71,11 @@ ifeq ($(ZT_DEBUG),1) | |||
# C25519 in particular is almost UNUSABLE in -O0 even on a 3ghz box! | |||
node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CXXFLAGS=-Wall -O2 -g -pthread $(INCLUDES) $(DEFS) | |||
else | |||
- CFLAGS?=-O3 -fstack-protector -fPIE | |||
+ CFLAGS?=-O3 -fstack-protector | |||
override CFLAGS+=-Wall -Wno-deprecated -pthread $(INCLUDES) -DNDEBUG $(DEFS) | |||
- CXXFLAGS?=-O3 -fstack-protector -fPIE | |||
+ CXXFLAGS?=-O3 -fstack-protector | |||
override CXXFLAGS+=-Wall -Wno-deprecated -std=c++11 -pthread $(INCLUDES) -DNDEBUG $(DEFS) | |||
- LDFLAGS=-pie -Wl,-z,relro,-z,now | |||
+ LDFLAGS=-Wl,-z,relro,-z,now | |||
STRIP?=strip | |||
STRIP+=--strip-all | |||
endif | |||
-- | |||
2.17.0 | |||
@ -1,13 +0,0 @@ | |||
Index: ZeroTierOne-1.2.4/ext/json/json.hpp | |||
=================================================================== | |||
--- ZeroTierOne-1.2.4.orig/ext/json/json.hpp | |||
+++ ZeroTierOne-1.2.4/ext/json/json.hpp | |||
@@ -64,7 +64,7 @@ SOFTWARE. | |||
#endif | |||
#elif defined(__GNUC__) | |||
#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) | |||
- #if GCC_VERSION < 40900 | |||
+ #if GCC_VERSION < 40800 | |||
#error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" | |||
#endif | |||
#endif |
@ -0,0 +1,33 @@ | |||
From bfb1a652dbf897dc065d2a1414296eb145a2224b Mon Sep 17 00:00:00 2001 | |||
From: Moritz Warning <moritzwarning@web.de> | |||
Date: Mon, 23 Apr 2018 22:31:03 +0200 | |||
Subject: [PATCH 3/4] remove -march=armv5 | |||
--- | |||
make-linux.mk | 8 ++++---- | |||
1 file changed, 4 insertions(+), 4 deletions(-) | |||
diff --git a/make-linux.mk b/make-linux.mk | |||
index add1d3ae..49e14f70 100644 | |||
--- a/make-linux.mk | |||
+++ b/make-linux.mk | |||
@@ -229,12 +229,12 @@ endif | |||
# ARM32 hell -- use conservative CFLAGS | |||
ifeq ($(ZT_ARCHITECTURE),3) | |||
ifeq ($(shell if [ -e /usr/bin/dpkg ]; then dpkg --print-architecture; fi),armel) | |||
- override CFLAGS+=-march=armv5 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm | |||
- override CXXFLAGS+=-march=armv5 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm | |||
+ override CFLAGS+=-mfloat-abi=soft -msoft-float -mno-unaligned-access -marm | |||
+ override CXXFLAGS+=-mfloat-abi=soft -msoft-float -mno-unaligned-access -marm | |||
ZT_USE_ARM32_NEON_ASM_CRYPTO=0 | |||
else | |||
- override CFLAGS+=-march=armv5 -mno-unaligned-access -marm | |||
- override CXXFLAGS+=-march=armv5 -mno-unaligned-access -marm | |||
+ override CFLAGS+=-mno-unaligned-access -marm | |||
+ override CXXFLAGS+=-mno-unaligned-access -marm | |||
endif | |||
endif | |||
-- | |||
2.17.0 | |||
@ -1,138 +0,0 @@ | |||
From ab8ececbe70f7c83667d6ebb592fc1df17ad26a4 Mon Sep 17 00:00:00 2001 | |||
From: Moritz Warning <moritzwarning@web.de> | |||
Date: Sat, 20 Jan 2018 21:55:52 +0100 | |||
Subject: [PATCH] Revert "Do not serve controller requests until init is done." | |||
This reverts commit f4feccc6265cc480b84c85f897b225714072d4ec. | |||
--- | |||
controller/JSONDB.cpp | 20 +++++++------------- | |||
controller/JSONDB.hpp | 15 +++++++-------- | |||
2 files changed, 14 insertions(+), 21 deletions(-) | |||
diff --git a/controller/JSONDB.cpp b/controller/JSONDB.cpp | |||
index d3e76fc1..007e0fec 100644 | |||
--- a/controller/JSONDB.cpp | |||
+++ b/controller/JSONDB.cpp | |||
@@ -26,8 +26,7 @@ static const nlohmann::json _EMPTY_JSON(nlohmann::json::object()); | |||
static const std::map<std::string,std::string> _ZT_JSONDB_GET_HEADERS; | |||
JSONDB::JSONDB(const std::string &basePath) : | |||
- _basePath(basePath), | |||
- _ready(false) | |||
+ _basePath(basePath) | |||
{ | |||
if ((_basePath.length() > 7)&&(_basePath.substr(0,7) == "http://")) { | |||
// TODO: this doesn't yet support IPv6 since bracketed address notiation isn't supported. | |||
@@ -50,7 +49,7 @@ JSONDB::JSONDB(const std::string &basePath) : | |||
OSUtils::mkdir(_basePath.c_str()); | |||
OSUtils::lockDownFile(_basePath.c_str(),true); // networks might contain auth tokens, etc., so restrict directory permissions | |||
} | |||
- _ready = _reload(_basePath,std::string()); | |||
+ _reload(_basePath,std::string()); | |||
} | |||
bool JSONDB::writeRaw(const std::string &n,const std::string &obj) | |||
@@ -84,13 +83,9 @@ bool JSONDB::put(const std::string &n,const nlohmann::json &obj) | |||
const nlohmann::json &JSONDB::get(const std::string &n) | |||
{ | |||
- while (!_ready) { | |||
- Thread::sleep(250); | |||
- _ready = _reload(_basePath,std::string()); | |||
- } | |||
- | |||
if (!_isValidObjectName(n)) | |||
return _EMPTY_JSON; | |||
+ | |||
std::map<std::string,_E>::iterator e(_db.find(n)); | |||
if (e != _db.end()) | |||
return e->second.obj; | |||
@@ -138,7 +133,7 @@ void JSONDB::erase(const std::string &n) | |||
_db.erase(n); | |||
} | |||
-bool JSONDB::_reload(const std::string &p,const std::string &b) | |||
+void JSONDB::_reload(const std::string &p,const std::string &b) | |||
{ | |||
if (_httpAddr) { | |||
std::string body; | |||
@@ -155,11 +150,11 @@ bool JSONDB::_reload(const std::string &p,const std::string &b) | |||
_db[tmp].obj = i.value(); | |||
} | |||
} | |||
- return true; | |||
} | |||
- } catch ( ... ) {} // invalid JSON, so maybe incomplete request | |||
+ } catch ( ... ) { | |||
+ // TODO: report error? | |||
+ } | |||
} | |||
- return false; | |||
} else { | |||
std::vector<std::string> dl(OSUtils::listDirectory(p.c_str(),true)); | |||
for(std::vector<std::string>::const_iterator di(dl.begin());di!=dl.end();++di) { | |||
@@ -169,7 +164,6 @@ bool JSONDB::_reload(const std::string &p,const std::string &b) | |||
this->_reload((p + ZT_PATH_SEPARATOR + *di),(b + *di + ZT_PATH_SEPARATOR)); | |||
} | |||
} | |||
- return true; | |||
} | |||
} | |||
diff --git a/controller/JSONDB.hpp b/controller/JSONDB.hpp | |||
index beafbaf5..c19112ed 100644 | |||
--- a/controller/JSONDB.hpp | |||
+++ b/controller/JSONDB.hpp | |||
@@ -36,7 +36,6 @@ | |||
#include "../ext/json/json.hpp" | |||
#include "../osdep/OSUtils.hpp" | |||
#include "../osdep/Http.hpp" | |||
-#include "../osdep/Thread.hpp" | |||
namespace ZeroTier { | |||
@@ -48,6 +47,12 @@ class JSONDB | |||
public: | |||
JSONDB(const std::string &basePath); | |||
+ inline void reload() | |||
+ { | |||
+ _db.clear(); | |||
+ _reload(_basePath,std::string()); | |||
+ } | |||
+ | |||
bool writeRaw(const std::string &n,const std::string &obj); | |||
bool put(const std::string &n,const nlohmann::json &obj); | |||
@@ -74,11 +79,6 @@ public: | |||
template<typename F> | |||
inline void filter(const std::string &prefix,F func) | |||
{ | |||
- while (!_ready) { | |||
- Thread::sleep(250); | |||
- _ready = _reload(_basePath,std::string()); | |||
- } | |||
- | |||
for(std::map<std::string,_E>::iterator i(_db.lower_bound(prefix));i!=_db.end();) { | |||
if ((i->first.length() >= prefix.length())&&(!memcmp(i->first.data(),prefix.data(),prefix.length()))) { | |||
if (!func(i->first,get(i->first))) { | |||
@@ -94,7 +94,7 @@ public: | |||
inline bool operator!=(const JSONDB &db) const { return (!(*this == db)); } | |||
private: | |||
- bool _reload(const std::string &p,const std::string &b); | |||
+ void _reload(const std::string &p,const std::string &b); | |||
bool _isValidObjectName(const std::string &n); | |||
std::string _genPath(const std::string &n,bool create); | |||
@@ -108,7 +108,6 @@ private: | |||
InetAddress _httpAddr; | |||
std::string _basePath; | |||
std::map<std::string,_E> _db; | |||
- volatile bool _ready; | |||
}; | |||
} // namespace ZeroTier | |||
-- | |||
2.15.1 | |||
@ -0,0 +1,25 @@ | |||
From a2cf8bf645d25f18cbc2ed7ad4b9a25725811afd Mon Sep 17 00:00:00 2001 | |||
From: Moritz Warning <moritzwarning@web.de> | |||
Date: Wed, 2 May 2018 16:06:46 +0200 | |||
Subject: [PATCH 4/4] accept external linker flags | |||
--- | |||
make-linux.mk | 2 +- | |||
1 file changed, 1 insertion(+), 1 deletion(-) | |||
diff --git a/make-linux.mk b/make-linux.mk | |||
index 49e14f70..8e766bfb 100644 | |||
--- a/make-linux.mk | |||
+++ b/make-linux.mk | |||
@@ -75,7 +75,7 @@ else | |||
override CFLAGS+=-Wall -Wno-deprecated -pthread $(INCLUDES) -DNDEBUG $(DEFS) | |||
CXXFLAGS?=-O3 -fstack-protector | |||
override CXXFLAGS+=-Wall -Wno-deprecated -std=c++11 -pthread $(INCLUDES) -DNDEBUG $(DEFS) | |||
- LDFLAGS=-Wl,-z,relro,-z,now | |||
+ LDFLAGS+=-Wl,-z,relro,-z,now | |||
STRIP?=strip | |||
STRIP+=--strip-all | |||
endif | |||
-- | |||
2.17.0 | |||
@ -1,26 +0,0 @@ | |||
From 14a8fe1f7cdef1f1e0c0842f6fedde154cf4ab57 Mon Sep 17 00:00:00 2001 | |||
From: Moritz Warning <moritzwarning@web.de> | |||
Date: Thu, 12 Apr 2018 17:09:16 +0200 | |||
Subject: [PATCH 5/5] remove -pie | |||
this prevents immediate segfault on start | |||
--- | |||
make-linux.mk | 2 +- | |||
1 file changed, 1 insertion(+), 1 deletion(-) | |||
diff --git a/make-linux.mk b/make-linux.mk | |||
index f5b3d8df..8589e5d6 100644 | |||
--- a/make-linux.mk | |||
+++ b/make-linux.mk | |||
@@ -67,7 +67,7 @@ else | |||
override CFLAGS+=-Wall -fPIE -pthread $(INCLUDES) -DNDEBUG $(DEFS) | |||
CXXFLAGS?=-O3 -fstack-protector | |||
override CXXFLAGS+=-Wall -Wno-unused-result -Wreorder -fPIE -std=c++11 -pthread $(INCLUDES) -DNDEBUG $(DEFS) | |||
- override LDFLAGS+=-pie -Wl,-z,relro,-z,now | |||
+ override LDFLAGS+=-Wl,-z,relro,-z,now | |||
STRIP?=strip | |||
STRIP+=--strip-all | |||
endif | |||
-- | |||
2.16.3 | |||