diff --git a/control/NodeControlClient.cpp b/control/NodeControlClient.cpp index 6fd7b12ed..e5ea2c20e 100644 --- a/control/NodeControlClient.cpp +++ b/control/NodeControlClient.cpp @@ -33,6 +33,8 @@ #include "IpcListener.hpp" #include "NodeControlService.hpp" +#include "stddef.h" + #ifdef __WINDOWS__ #include #include diff --git a/main.cpp b/main.cpp index 438144c62..c18f726a6 100644 --- a/main.cpp +++ b/main.cpp @@ -573,8 +573,8 @@ static void printHelp(const char *cn,FILE *out) fprintf(out,"Available switches:"ZT_EOL_S); fprintf(out," -h - Display this help"ZT_EOL_S); fprintf(out," -v - Show version"ZT_EOL_S); - fprintf(out," -p - Port for UDP (default: 9993)"ZT_EOL_S); - fprintf(out," -t - Port for TCP (default: disabled)"ZT_EOL_S); + fprintf(out," -p - Port for UDP (default: 9993)"ZT_EOL_S); + fprintf(out," -t - Port for TCP (default: disabled)"ZT_EOL_S); //fprintf(out," -T - Override root topology, do not authenticate or update"ZT_EOL_S); #ifdef __UNIX_LIKE__ fprintf(out," -d - Fork and run as daemon (Unix-ish OSes)"ZT_EOL_S); diff --git a/make-freebsd.mk b/make-freebsd.mk index 69f094abb..b50efa813 100644 --- a/make-freebsd.mk +++ b/make-freebsd.mk @@ -1,5 +1,5 @@ -CC=cc -CXX=c++ +CC?=cc +CXX?=c++ INCLUDES= DEFS= @@ -9,27 +9,6 @@ include objects.mk OBJS+=osnet/BSDEthernetTapFactory.o osnet/BSDEthernetTap.o osnet/BSDRoutingTable.o TESTNET_OBJS=testnet/SimNet.o testnet/SimNetSocketManager.o testnet/TestEthernetTap.o testnet/TestEthernetTapFactory.o testnet/TestRoutingTable.o -# Enable SSE-optimized Salsa20 on x86 and x86_64 machines -MACHINE=$(shell uname -m) -ifeq ($(MACHINE),x86_64) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),amd64) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),i686) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),i586) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),i386) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),x86) - DEFS+=-DZT_SALSA20_SSE -endif - # "make official" is a shortcut for this ifeq ($(ZT_OFFICIAL_RELEASE),1) ZT_AUTO_UPDATE=1 @@ -42,19 +21,21 @@ endif # "make debug" is a shortcut for this ifeq ($(ZT_DEBUG),1) # DEFS+=-DZT_TRACE -DZT_LOG_STDOUT - CFLAGS=-Wall -g -pthread $(INCLUDES) $(DEFS) - LDFLAGS= + CFLAGS+=-Wall -g -pthread $(INCLUDES) $(DEFS) + LDFLAGS+= STRIP=echo # The following line enables optimization for the crypto code, since # C25519 in particular is almost UNUSABLE in heavy testing without it. -ext/lz4/lz4.o node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CFLAGS = -Wall -O2 -g -pthread $(INCLUDES) $(DEFS) +ext/lz4/lz4.o node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CFLAGS?=-O2 CFLAGS+=-Wall -g -pthread $(INCLUDES) $(DEFS) else - CFLAGS=-Wall -O3 -fPIE -fvisibility=hidden -fstack-protector -pthread $(INCLUDES) -DNDEBUG $(DEFS) - LDFLAGS=-pie -Wl,-z,relro,-z,now + CFLAGS?=-O3 -fstack-protector + CFLAGS+=-Wall -fPIE -fvisibility=hidden -pthread $(INCLUDES) -DNDEBUG $(DEFS) + LDFLAGS+=-pie -Wl,-z,relro,-z,now STRIP=strip --strip-all endif -CXXFLAGS=$(CFLAGS) -fno-rtti +CXXFLAGS?=-fno-rtti +CXXFLAGS=$(CFLAGS) all: one diff --git a/make-linux.mk b/make-linux.mk index 2033e35ce..9719f36a2 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -1,6 +1,6 @@ # Pick clang or gcc, with preference for clang -CC=$(shell which clang gcc cc 2>/dev/null | head -n 1) -CXX=$(shell which clang++ g++ c++ 2>/dev/null | head -n 1) +CC?=$(shell which clang gcc cc 2>/dev/null | head -n 1) +CXX?=$(shell which clang++ g++ c++ 2>/dev/null | head -n 1) INCLUDES= DEFS= @@ -10,27 +10,6 @@ include objects.mk OBJS+=osnet/LinuxRoutingTable.o osnet/LinuxEthernetTap.o osnet/LinuxEthernetTapFactory.o TESTNET_OBJS=testnet/SimNet.o testnet/SimNetSocketManager.o testnet/TestEthernetTap.o testnet/TestEthernetTapFactory.o testnet/TestRoutingTable.o -# Enable SSE-optimized Salsa20 on x86 and x86_64 machines -MACHINE=$(shell uname -m) -ifeq ($(MACHINE),x86_64) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),amd64) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),i686) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),i586) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),i386) - DEFS+=-DZT_SALSA20_SSE -endif -ifeq ($(MACHINE),x86) - DEFS+=-DZT_SALSA20_SSE -endif - # "make official" is a shortcut for this ifeq ($(ZT_OFFICIAL_RELEASE),1) ZT_AUTO_UPDATE=1 @@ -43,15 +22,16 @@ endif # "make debug" is a shortcut for this ifeq ($(ZT_DEBUG),1) # DEFS+=-DZT_TRACE -DZT_LOG_STDOUT - CFLAGS=-Wall -g -pthread $(INCLUDES) $(DEFS) - LDFLAGS= + CFLAGS+=-Wall -g -pthread $(INCLUDES) $(DEFS) + LDFLAGS+= STRIP=echo # The following line enables optimization for the crypto code, since # C25519 in particular is almost UNUSABLE in heavy testing without it. -ext/lz4/lz4.o node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CFLAGS = -Wall -O2 -g -pthread $(INCLUDES) $(DEFS) +ext/lz4/lz4.o node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CFLAGS?=-O2 CFLAGS+=-Wall -g -pthread $(INCLUDES) $(DEFS) else - CFLAGS=-Wall -O3 -fPIE -fvisibility=hidden -fstack-protector -pthread $(INCLUDES) -DNDEBUG $(DEFS) - LDFLAGS=-pie -Wl,-z,relro,-z,now + CFLAGS?=-O3 -fstack-protector + CFLAGS+=-Wall -fPIE -fvisibility=hidden -pthread $(INCLUDES) -DNDEBUG $(DEFS) + LDFLAGS+=-pie -Wl,-z,relro,-z,now STRIP=strip --strip-all endif @@ -60,7 +40,8 @@ endif #LDFLAGS= #STRIP=echo -CXXFLAGS=$(CFLAGS) -fno-rtti +CXXFLAGS?=-fno-rtti +CXXFLAGS+=$(CFLAGS) all: one diff --git a/make-mac.mk b/make-mac.mk index 26ca8fe0b..c9e05c5a4 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -1,5 +1,5 @@ -CC=clang -CXX=clang++ +CC?=clang +CXX?=clang++ INCLUDES= DEFS= @@ -25,22 +25,21 @@ ifeq ($(ZT_AUTO_UPDATE),1) DEFS+=-DZT_AUTO_UPDATE endif -# Enable SSE-optimized Salsa20 -- all Intel macs support SSE2 -DEFS+=-DZT_SALSA20_SSE - ifeq ($(ZT_DEBUG),1) # DEFS+=-DZT_TRACE -DZT_LOG_STDOUT - CFLAGS=-Wall -g -pthread $(INCLUDES) $(DEFS) + CFLAGS+=-Wall -g -pthread $(INCLUDES) $(DEFS) STRIP=echo # The following line enables optimization for the crypto code, since # C25519 in particular is almost UNUSABLE in heavy testing without it. -ext/lz4/lz4.o node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CFLAGS = -Wall -O2 -g -pthread $(INCLUDES) $(DEFS) +ext/lz4/lz4.o node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CFLAGS?=-O2 CFLAGS+=-Wall -g -pthread $(INCLUDES) $(DEFS) else - CFLAGS=-arch i386 -arch x86_64 -Wall -O3 -flto -fPIE -fvectorize -fstack-protector -pthread -mmacosx-version-min=10.6 -DNDEBUG -Wno-unused-private-field $(INCLUDES) $(DEFS) + CFLAGS?=-O3 -fstack-protector + CFLAGS+=-arch i386 -arch x86_64 -Wall -flto -fPIE -fvectorize -pthread -mmacosx-version-min=10.6 -DNDEBUG -Wno-unused-private-field $(INCLUDES) $(DEFS) STRIP=strip endif -CXXFLAGS=$(CFLAGS) -fno-rtti +CXXFLAGS?=-fno-rtti +CXXFLAGS=$(CFLAGS) all: one diff --git a/node/Array.hpp b/node/Array.hpp index ce179c16c..a1779909a 100644 --- a/node/Array.hpp +++ b/node/Array.hpp @@ -31,12 +31,14 @@ #include #include +#include "stddef.h" + namespace ZeroTier { /** * Static array -- a simple thing that's belonged in STL since the time of the dinosaurs */ -template +template class Array { public: @@ -44,19 +46,19 @@ public: Array(const Array &a) { - for(std::size_t i=0;i reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; @@ -83,11 +85,11 @@ public: inline const_reverse_iterator rbegin() const throw() { return const_reverse_iterator(begin()); } inline const_reverse_iterator rend() const throw() { return const_reverse_iterator(end()); } - inline std::size_t size() const throw() { return S; } - inline std::size_t max_size() const throw() { return S; } + inline size_t size() const throw() { return S; } + inline size_t max_size() const throw() { return S; } - inline reference operator[](const std::size_t n) throw() { return data[n]; } - inline const_reference operator[](const std::size_t n) const throw() { return data[n]; } + inline reference operator[](const size_t n) throw() { return data[n]; } + inline const_reference operator[](const size_t n) const throw() { return data[n]; } inline reference front() throw() { return data[0]; } inline const_reference front() const throw() { return data[0]; } diff --git a/node/InetAddress.cpp b/node/InetAddress.cpp index 832acf04c..5e36be0d5 100644 --- a/node/InetAddress.cpp +++ b/node/InetAddress.cpp @@ -137,7 +137,7 @@ std::string InetAddress::toString() const void InetAddress::fromString(const std::string &ipSlashPort) { - std::size_t slashAt = ipSlashPort.find('/'); + size_t slashAt = ipSlashPort.find('/'); if ((slashAt == std::string::npos)||(slashAt >= ipSlashPort.length())) set(ipSlashPort,0); else { diff --git a/node/Peer.hpp b/node/Peer.hpp index 78506fd23..fe5362e3f 100644 --- a/node/Peer.hpp +++ b/node/Peer.hpp @@ -400,13 +400,4 @@ private: } // namespace ZeroTier -// Add a swap() for shared ptr's to peers to speed up peer sorts -namespace std { - template<> - inline void swap(ZeroTier::SharedPtr &a,ZeroTier::SharedPtr &b) - { - a.swap(b); - } -} - #endif diff --git a/node/Salsa20.hpp b/node/Salsa20.hpp index 0c1f3be46..6f51a160b 100644 --- a/node/Salsa20.hpp +++ b/node/Salsa20.hpp @@ -11,6 +11,11 @@ #include "Constants.hpp" +/* Enable SSE-optimized Salsa20 on SSE2 machines */ +#ifdef __SSE2__ +#define ZT_SALSA20_SSE +#endif + #ifdef ZT_SALSA20_SSE #include #endif // ZT_SALSA20_SSE diff --git a/windows/ZeroTierOne/ZeroTierOne.vcxproj b/windows/ZeroTierOne/ZeroTierOne.vcxproj index a651b5f73..49392b54d 100644 --- a/windows/ZeroTierOne/ZeroTierOne.vcxproj +++ b/windows/ZeroTierOne/ZeroTierOne.vcxproj @@ -270,7 +270,7 @@ true true $(SolutionDir)\ext\bin\libcrypto\include - ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;%(PreprocessorDefinitions) + ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;%(PreprocessorDefinitions) MultiThreaded NoExtensions true @@ -294,7 +294,7 @@ true true $(SolutionDir)\ext\bin\libcrypto\include - ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;%(PreprocessorDefinitions) + ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;%(PreprocessorDefinitions) MultiThreaded NotSet true