diff options
-rw-r--r-- | AUTHORS.txt | 3 | ||||
-rw-r--r-- | ext/bin/tap-windows/x64/ztTap100.inf | 85 | ||||
-rw-r--r-- | ext/bin/tap-windows/x64/ztTap100.sys | bin | 0 -> 29928 bytes | |||
-rw-r--r-- | ext/bin/tap-windows/x86/ztTap100.inf | 85 | ||||
-rw-r--r-- | ext/bin/tap-windows/x86/ztTap100.sys | bin | 0 -> 32464 bytes | |||
-rw-r--r-- | node/Defaults.cpp | 36 | ||||
-rw-r--r-- | node/Defaults.hpp | 5 | ||||
-rw-r--r-- | node/Node.cpp | 5 | ||||
-rw-r--r-- | vsprojects/SelfTest/SelfTest.vcxproj | 2 |
9 files changed, 218 insertions, 3 deletions
diff --git a/AUTHORS.txt b/AUTHORS.txt index f304f6af..9baaaab8 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -22,5 +22,8 @@ ZeroTier One includes or links with the following third party software: * TunTapOSX by Mattias Nissler (with tiny modifications) (BSD license) http://tuntaposx.sourceforge.net + * tap-windows by the OpenVPN project (forked for ZT1) (GPL) + https://github.com/OpenVPN/tap-windows + * Salsa20 stream cipher by D. J. Bernstein (public domain) http://cr.yp.to/snuffle.html diff --git a/ext/bin/tap-windows/x64/ztTap100.inf b/ext/bin/tap-windows/x64/ztTap100.inf new file mode 100644 index 00000000..452d3624 --- /dev/null +++ b/ext/bin/tap-windows/x64/ztTap100.inf @@ -0,0 +1,85 @@ +[Version] +Signature="$WINDOWS NT$" +Class=Net +ClassGuid={4d36e972-e325-11ce-bfc1-08002be10318} +Provider=%Provider% +CatalogFile=ztTap100.cat +DriverVer=08/24/2013,16.12.30.608 + + +[Strings] +DeviceDescription = "ZeroTier One Ethernet Tap" +Provider = "ZeroTier Networks" + +[Manufacturer] +%Provider%=ztTap100,NTamd64 + +[ztTap100] +%DeviceDescription%=ztTap100.ndi,ztTap100 + +[ztTap100.NTamd64] +%DeviceDescription%=ztTap100.ndi,ztTap100 + +[ztTap100.ndi] +CopyFiles = ztTap100.driver,ztTap100.files +AddReg = ztTap100.reg +AddReg = ztTap100.params.reg +Characteristics = 0x81 + +[ztTap100.ndi.Services] +AddService = ztTap100, 2, ztTap100.service + +[ztTap100.reg] +HKR, Ndi, Service, 0, "ztTap100" +HKR, Ndi\Interfaces, UpperRange, 0, "ndis5" +HKR, Ndi\Interfaces, LowerRange, 0, "ethernet" +HKR, , Manufacturer, 0, "%Provider%" +HKR, , ProductName, 0, "%DeviceDescription%" + +[ztTap100.params.reg] +HKR, Ndi\params\MTU, ParamDesc, 0, "MTU" +HKR, Ndi\params\MTU, Type, 0, "int" +HKR, Ndi\params\MTU, Default, 0, "2800" +HKR, Ndi\params\MTU, Optional, 0, "0" +HKR, Ndi\params\MTU, Min, 0, "100" +HKR, Ndi\params\MTU, Max, 0, "2800" +HKR, Ndi\params\MTU, Step, 0, "1" +HKR, Ndi\params\MediaStatus, ParamDesc, 0, "Media Status" +HKR, Ndi\params\MediaStatus, Type, 0, "enum" +HKR, Ndi\params\MediaStatus, Default, 0, "0" +HKR, Ndi\params\MediaStatus, Optional, 0, "0" +HKR, Ndi\params\MediaStatus\enum, "0", 0, "Application Controlled" +HKR, Ndi\params\MediaStatus\enum, "1", 0, "Always Connected" +HKR, Ndi\params\MAC, ParamDesc, 0, "MAC Address" +HKR, Ndi\params\MAC, Type, 0, "edit" +HKR, Ndi\params\MAC, Optional, 0, "1" +HKR, Ndi\params\AllowNonAdmin, ParamDesc, 0, "Non-Admin Access" +HKR, Ndi\params\AllowNonAdmin, Type, 0, "enum" +HKR, Ndi\params\AllowNonAdmin, Default, 0, "0" +HKR, Ndi\params\AllowNonAdmin, Optional, 0, "0" +HKR, Ndi\params\AllowNonAdmin\enum, "0", 0, "Not Allowed" +HKR, Ndi\params\AllowNonAdmin\enum, "1", 0, "Allowed" + +[ztTap100.service] +DisplayName = %DeviceDescription% +ServiceType = 1 +StartType = 3 +ErrorControl = 1 +LoadOrderGroup = NDIS +ServiceBinary = %12%\ztTap100.sys + +[SourceDisksNames] +1 = %DeviceDescription%, ztTap100.sys + +[SourceDisksFiles] +ztTap100.sys = 1 + +[DestinationDirs] +ztTap100.files = 11 +ztTap100.driver = 12 + +[ztTap100.files] +; + +[ztTap100.driver] +ztTap100.sys,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK diff --git a/ext/bin/tap-windows/x64/ztTap100.sys b/ext/bin/tap-windows/x64/ztTap100.sys Binary files differnew file mode 100644 index 00000000..904c0e64 --- /dev/null +++ b/ext/bin/tap-windows/x64/ztTap100.sys diff --git a/ext/bin/tap-windows/x86/ztTap100.inf b/ext/bin/tap-windows/x86/ztTap100.inf new file mode 100644 index 00000000..b67eb156 --- /dev/null +++ b/ext/bin/tap-windows/x86/ztTap100.inf @@ -0,0 +1,85 @@ +[Version] +Signature="$WINDOWS NT$" +Class=Net +ClassGuid={4d36e972-e325-11ce-bfc1-08002be10318} +Provider=%Provider% +CatalogFile=ztTap100.cat +DriverVer=08/24/2013,16.12.37.14 + + +[Strings] +DeviceDescription = "ZeroTier One Ethernet Tap" +Provider = "ZeroTier Networks" + +[Manufacturer] +%Provider%=ztTap100,NTamd64 + +[ztTap100] +%DeviceDescription%=ztTap100.ndi,ztTap100 + +[ztTap100.NTamd64] +%DeviceDescription%=ztTap100.ndi,ztTap100 + +[ztTap100.ndi] +CopyFiles = ztTap100.driver,ztTap100.files +AddReg = ztTap100.reg +AddReg = ztTap100.params.reg +Characteristics = 0x81 + +[ztTap100.ndi.Services] +AddService = ztTap100, 2, ztTap100.service + +[ztTap100.reg] +HKR, Ndi, Service, 0, "ztTap100" +HKR, Ndi\Interfaces, UpperRange, 0, "ndis5" +HKR, Ndi\Interfaces, LowerRange, 0, "ethernet" +HKR, , Manufacturer, 0, "%Provider%" +HKR, , ProductName, 0, "%DeviceDescription%" + +[ztTap100.params.reg] +HKR, Ndi\params\MTU, ParamDesc, 0, "MTU" +HKR, Ndi\params\MTU, Type, 0, "int" +HKR, Ndi\params\MTU, Default, 0, "2800" +HKR, Ndi\params\MTU, Optional, 0, "0" +HKR, Ndi\params\MTU, Min, 0, "100" +HKR, Ndi\params\MTU, Max, 0, "2800" +HKR, Ndi\params\MTU, Step, 0, "1" +HKR, Ndi\params\MediaStatus, ParamDesc, 0, "Media Status" +HKR, Ndi\params\MediaStatus, Type, 0, "enum" +HKR, Ndi\params\MediaStatus, Default, 0, "0" +HKR, Ndi\params\MediaStatus, Optional, 0, "0" +HKR, Ndi\params\MediaStatus\enum, "0", 0, "Application Controlled" +HKR, Ndi\params\MediaStatus\enum, "1", 0, "Always Connected" +HKR, Ndi\params\MAC, ParamDesc, 0, "MAC Address" +HKR, Ndi\params\MAC, Type, 0, "edit" +HKR, Ndi\params\MAC, Optional, 0, "1" +HKR, Ndi\params\AllowNonAdmin, ParamDesc, 0, "Non-Admin Access" +HKR, Ndi\params\AllowNonAdmin, Type, 0, "enum" +HKR, Ndi\params\AllowNonAdmin, Default, 0, "0" +HKR, Ndi\params\AllowNonAdmin, Optional, 0, "0" +HKR, Ndi\params\AllowNonAdmin\enum, "0", 0, "Not Allowed" +HKR, Ndi\params\AllowNonAdmin\enum, "1", 0, "Allowed" + +[ztTap100.service] +DisplayName = %DeviceDescription% +ServiceType = 1 +StartType = 3 +ErrorControl = 1 +LoadOrderGroup = NDIS +ServiceBinary = %12%\ztTap100.sys + +[SourceDisksNames] +1 = %DeviceDescription%, ztTap100.sys + +[SourceDisksFiles] +ztTap100.sys = 1 + +[DestinationDirs] +ztTap100.files = 11 +ztTap100.driver = 12 + +[ztTap100.files] +; + +[ztTap100.driver] +ztTap100.sys,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK diff --git a/ext/bin/tap-windows/x86/ztTap100.sys b/ext/bin/tap-windows/x86/ztTap100.sys Binary files differnew file mode 100644 index 00000000..297f4680 --- /dev/null +++ b/ext/bin/tap-windows/x86/ztTap100.sys diff --git a/node/Defaults.cpp b/node/Defaults.cpp index 3e936b2d..293fd465 100644 --- a/node/Defaults.cpp +++ b/node/Defaults.cpp @@ -25,8 +25,18 @@ * LLC. Start here: http://www.zerotier.com/ */ -#include "Defaults.hpp" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + #include "Constants.hpp" +#include "Defaults.hpp" +#include "Utils.hpp" + +#ifdef __WINDOWS__ +#include <WinSock2.h> +#include <Windows.h> +#endif namespace ZeroTier { @@ -66,8 +76,32 @@ static inline std::map< Identity,std::vector<InetAddress> > _mkSupernodeMap() return sn; } +static inline std::string _mkDefaultHomePath() +{ +#ifdef __UNIX_LIKE__ +#ifdef __APPLE__ + return std::string("/Library/Application\ Support/ZeroTier/One"); +#else + return std::string("/var/lib/zerotier-one"); +#endif +#else +#ifdef __WINDOWS__ + OSVERSIONINFO vi; + memset (&vi,0,sizeof(vi)); + vi.dwOSVersionInfoSize = sizeof(vi); + GetVersionEx(&vi); + if (vi.dwMajorVersion < 6) + return std::string("C:\\Documents and Settings\\All Users\\Application Data\\ZeroTier\\One"); + return std::string("C:\\ProgramData\\ZeroTier\\One"); +#else + // unknown platform +#endif +#endif +} + Defaults::Defaults() throw(std::runtime_error) : + defaultHomePath(_mkDefaultHomePath()), supernodes(_mkSupernodeMap()) { } diff --git a/node/Defaults.hpp b/node/Defaults.hpp index 3a350865..fe79d525 100644 --- a/node/Defaults.hpp +++ b/node/Defaults.hpp @@ -52,6 +52,11 @@ public: ~Defaults() {} /** + * Default home path for this platform + */ + const std::string defaultHomePath; + + /** * Supernodes on the ZeroTier network */ const std::map< Identity,std::vector<InetAddress> > supernodes; diff --git a/node/Node.cpp b/node/Node.cpp index bb68cdaf..1884f9ce 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -258,8 +258,9 @@ Node::Node(const char *hp) { _NodeImpl *impl = (_NodeImpl *)_impl; - impl->renv.homePath = hp; - + if (hp) + impl->renv.homePath = hp; + else impl->renv.homePath = ZT_DEFAULTS.defaultHomePath; impl->reasonForTermination = Node::NODE_RUNNING; impl->started = false; impl->running = false; diff --git a/vsprojects/SelfTest/SelfTest.vcxproj b/vsprojects/SelfTest/SelfTest.vcxproj index f974b926..5189da46 100644 --- a/vsprojects/SelfTest/SelfTest.vcxproj +++ b/vsprojects/SelfTest/SelfTest.vcxproj @@ -41,9 +41,11 @@ <PropertyGroup Label="UserMacros" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <LinkIncremental>true</LinkIncremental> + <OutDir>$(SolutionDir)\Build\$(Configuration)\</OutDir> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <LinkIncremental>false</LinkIncremental> + <OutDir>$(SolutionDir)\Build\$(Configuration)\</OutDir> </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ClCompile> |