summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS.txt3
-rw-r--r--ext/bin/tap-windows/x64/ztTap100.inf85
-rw-r--r--ext/bin/tap-windows/x64/ztTap100.sysbin0 -> 29928 bytes
-rw-r--r--ext/bin/tap-windows/x86/ztTap100.inf85
-rw-r--r--ext/bin/tap-windows/x86/ztTap100.sysbin0 -> 32464 bytes
-rw-r--r--node/Defaults.cpp36
-rw-r--r--node/Defaults.hpp5
-rw-r--r--node/Node.cpp5
-rw-r--r--vsprojects/SelfTest/SelfTest.vcxproj2
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
new file mode 100644
index 00000000..904c0e64
--- /dev/null
+++ b/ext/bin/tap-windows/x64/ztTap100.sys
Binary files differ
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
new file mode 100644
index 00000000..297f4680
--- /dev/null
+++ b/ext/bin/tap-windows/x86/ztTap100.sys
Binary files differ
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>