Browse Source

Windows build fix, set up Windows solution with new layout.

Adam Ierymenko 10 years ago
parent
commit
4923ab2945

+ 2 - 2
osnet/NativeSocketManager.cpp

@@ -726,8 +726,8 @@ void NativeSocketManager::poll(unsigned long timeout,void (*handler)(const Share
 	{
 		Mutex::Lock _l2(_tcpSockets_m);
 		for(std::map< InetAddress,SharedPtr<Socket> >::iterator s(_tcpSockets.begin());s!=_tcpSockets.end();++s) {
-			if (((TcpSocket *)s->second.ptr())->_connecting)
-				FD_SET(s->second->_sock,&efds);
+			if (((NativeTcpSocket *)s->second.ptr())->_connecting)
+				FD_SET(((NativeTcpSocket *)s->second.ptr())->_sock,&efds);
 		}
 	}
 #endif

+ 38 - 16
windows/ZeroTierOne/ZeroTierOne.vcxproj

@@ -24,12 +24,7 @@
     <ClCompile Include="..\..\control\NodeControlClient.cpp" />
     <ClCompile Include="..\..\control\NodeControlService.cpp" />
     <ClCompile Include="..\..\ext\lz4\lz4.c" />
-    <ClCompile Include="..\..\main.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
-    </ClCompile>
+    <ClCompile Include="..\..\main.cpp" />
     <ClCompile Include="..\..\node\C25519.cpp" />
     <ClCompile Include="..\..\node\CertificateOfMembership.cpp" />
     <ClCompile Include="..\..\node\Defaults.cpp" />
@@ -52,25 +47,50 @@
     <ClCompile Include="..\..\node\Salsa20.cpp" />
     <ClCompile Include="..\..\node\Service.cpp" />
     <ClCompile Include="..\..\node\SHA512.cpp" />
-    <ClCompile Include="..\..\node\SocketManager.cpp" />
     <ClCompile Include="..\..\node\SoftwareUpdater.cpp" />
     <ClCompile Include="..\..\node\Switch.cpp" />
-    <ClCompile Include="..\..\node\TcpSocket.cpp" />
     <ClCompile Include="..\..\node\Topology.cpp" />
-    <ClCompile Include="..\..\node\UdpSocket.cpp" />
     <ClCompile Include="..\..\node\Utils.cpp" />
+    <ClCompile Include="..\..\osnet\NativeSocketManager.cpp" />
     <ClCompile Include="..\..\osnet\WindowsEthernetTap.cpp" />
     <ClCompile Include="..\..\osnet\WindowsEthernetTapFactory.cpp" />
     <ClCompile Include="..\..\osnet\WindowsRoutingTable.cpp" />
-    <ClCompile Include="..\..\selftest.cpp">
+    <ClCompile Include="..\..\testnet.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\..\testnet\SimNet.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\..\testnet\SimNetSocketManager.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\..\testnet\TestEthernetTap.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\..\testnet\TestEthernetTapFactory.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\..\testnet\TestRoutingTable.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     </ClCompile>
-    <ClCompile Include="..\..\testnet\TestEthernetTap.cpp" />
-    <ClCompile Include="..\..\testnet\TestEthernetTapFactory.cpp" />
-    <ClCompile Include="..\..\testnet\TestRoutingTable.cpp" />
     <ClCompile Include="ServiceBase.cpp" />
     <ClCompile Include="ServiceInstaller.cpp" />
     <ClCompile Include="ZeroTierOneService.cpp" />
@@ -91,11 +111,11 @@
     <ClInclude Include="..\..\node\C25519.hpp" />
     <ClInclude Include="..\..\node\CertificateOfMembership.hpp" />
     <ClInclude Include="..\..\node\CMWC4096.hpp" />
-    <ClInclude Include="..\..\node\Condition.hpp" />
     <ClInclude Include="..\..\node\Constants.hpp" />
     <ClInclude Include="..\..\node\Defaults.hpp" />
     <ClInclude Include="..\..\node\Dictionary.hpp" />
     <ClInclude Include="..\..\node\EthernetTap.hpp" />
+    <ClInclude Include="..\..\node\EthernetTapFactory.hpp" />
     <ClInclude Include="..\..\node\HttpClient.hpp" />
     <ClInclude Include="..\..\node\Identity.hpp" />
     <ClInclude Include="..\..\node\IncomingPacket.hpp" />
@@ -125,14 +145,16 @@
     <ClInclude Include="..\..\node\SocketManager.hpp" />
     <ClInclude Include="..\..\node\SoftwareUpdater.hpp" />
     <ClInclude Include="..\..\node\Switch.hpp" />
-    <ClInclude Include="..\..\node\TcpSocket.hpp" />
     <ClInclude Include="..\..\node\Thread.hpp" />
     <ClInclude Include="..\..\node\Topology.hpp" />
-    <ClInclude Include="..\..\node\UdpSocket.hpp" />
     <ClInclude Include="..\..\node\Utils.hpp" />
+    <ClInclude Include="..\..\osnet\NativeSocketManager.hpp" />
     <ClInclude Include="..\..\osnet\WindowsEthernetTap.hpp" />
     <ClInclude Include="..\..\osnet\WindowsEthernetTapFactory.hpp" />
     <ClInclude Include="..\..\osnet\WindowsRoutingTable.hpp" />
+    <ClInclude Include="..\..\testnet\MTQ.hpp" />
+    <ClInclude Include="..\..\testnet\SimNet.hpp" />
+    <ClInclude Include="..\..\testnet\SimNetSocketManager.hpp" />
     <ClInclude Include="..\..\testnet\TestEthernetTap.hpp" />
     <ClInclude Include="..\..\testnet\TestEthernetTapFactory.hpp" />
     <ClInclude Include="..\..\testnet\TestRoutingTable.hpp" />

+ 212 - 179
windows/ZeroTierOne/ZeroTierOne.vcxproj.filters

@@ -13,338 +13,371 @@
       <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
     </Filter>
+    <Filter Include="Source Files\node">
+      <UniqueIdentifier>{67b1c0f8-b018-4169-9c14-7032ed12c786}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\control">
+      <UniqueIdentifier>{64683235-3edd-443c-828c-c8e657d3bfd7}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\osnet">
+      <UniqueIdentifier>{c8a3c54f-bb49-4c3f-b406-5177bc14a447}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\testnet">
+      <UniqueIdentifier>{142d7af3-1770-44d7-bd87-d509bb25be1e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\include">
+      <UniqueIdentifier>{40761a4c-e8db-4a91-9cab-7afef332f4a8}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\control">
+      <UniqueIdentifier>{066d9967-d4f3-4b41-b9a8-b18ea763aca3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\node">
+      <UniqueIdentifier>{da3b8126-840c-45db-8abe-9d7e7976f8be}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\osnet">
+      <UniqueIdentifier>{173e391d-1519-41b8-960b-9b8dad083827}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\testnet">
+      <UniqueIdentifier>{6f36ddd5-a2e1-48e1-9543-1ab975f91780}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\ext\lz4\lz4.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\node\C25519.cpp">
+    <ClCompile Include="ZeroTierOneService.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\node\C25519.cpp">
+      <Filter>Source Files\node</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\node\CertificateOfMembership.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Defaults.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\node\Dictionary.cpp">
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\HttpClient.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Identity.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\node\IncomingPacket.cpp">
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\InetAddress.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Logger.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Multicaster.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Network.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\NetworkConfig.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Node.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\NodeConfig.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\node\OutboundMulticast.cpp">
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Packet.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Peer.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Poly1305.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\node\RoutingTable.cpp">
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Salsa20.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Service.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\SHA512.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\SoftwareUpdater.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Switch.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Topology.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\node\UdpSocket.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
     <ClCompile Include="..\..\node\Utils.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="ServiceBase.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\node</Filter>
     </ClCompile>
-    <ClCompile Include="ServiceInstaller.cpp">
-      <Filter>Source Files</Filter>
+    <ClCompile Include="..\..\control\IpcConnection.cpp">
+      <Filter>Source Files\control</Filter>
     </ClCompile>
-    <ClCompile Include="ZeroTierOneService.cpp">
-      <Filter>Source Files</Filter>
+    <ClCompile Include="..\..\control\IpcListener.cpp">
+      <Filter>Source Files\control</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\node\SocketManager.cpp">
-      <Filter>Source Files</Filter>
+    <ClCompile Include="..\..\control\NodeControlClient.cpp">
+      <Filter>Source Files\control</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\node\TcpSocket.cpp">
-      <Filter>Source Files</Filter>
+    <ClCompile Include="..\..\control\NodeControlService.cpp">
+      <Filter>Source Files\control</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\node\RoutingTable.cpp">
-      <Filter>Source Files</Filter>
+    <ClCompile Include="..\..\osnet\NativeSocketManager.cpp">
+      <Filter>Source Files\osnet</Filter>
     </ClCompile>
     <ClCompile Include="..\..\osnet\WindowsEthernetTap.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\osnet</Filter>
     </ClCompile>
     <ClCompile Include="..\..\osnet\WindowsEthernetTapFactory.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\osnet</Filter>
     </ClCompile>
     <ClCompile Include="..\..\osnet\WindowsRoutingTable.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\osnet</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\node\Dictionary.cpp">
-      <Filter>Source Files</Filter>
+    <ClCompile Include="..\..\testnet\SimNet.cpp">
+      <Filter>Source Files\testnet</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\main.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\selftest.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\control\IpcConnection.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\control\IpcListener.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\control\NodeControlClient.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\control\NodeControlService.cpp">
-      <Filter>Source Files</Filter>
+    <ClCompile Include="..\..\testnet\SimNetSocketManager.cpp">
+      <Filter>Source Files\testnet</Filter>
     </ClCompile>
     <ClCompile Include="..\..\testnet\TestEthernetTap.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\testnet</Filter>
     </ClCompile>
     <ClCompile Include="..\..\testnet\TestEthernetTapFactory.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\testnet</Filter>
     </ClCompile>
     <ClCompile Include="..\..\testnet\TestRoutingTable.cpp">
+      <Filter>Source Files\testnet</Filter>
+    </ClCompile>
+    <ClCompile Include="ServiceBase.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\node\IncomingPacket.cpp">
+    <ClCompile Include="ServiceInstaller.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\node\OutboundMulticast.cpp">
+    <ClCompile Include="..\..\testnet.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\main.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\..\ext\lz4\lz4.h">
+    <ClInclude Include="resource.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\node\Address.hpp">
+    <ClInclude Include="ServiceBase.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\node\Array.hpp">
+    <ClInclude Include="ServiceInstaller.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\node\AtomicCounter.hpp">
+    <ClInclude Include="ZeroTierOneService.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\node\BandwidthAccount.hpp">
+    <ClInclude Include="..\..\version.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\testnet\MTQ.hpp">
+      <Filter>Header Files\testnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\testnet\SimNet.hpp">
+      <Filter>Header Files\testnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\testnet\SimNetSocketManager.hpp">
+      <Filter>Header Files\testnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\testnet\TestEthernetTap.hpp">
+      <Filter>Header Files\testnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\testnet\TestEthernetTapFactory.hpp">
+      <Filter>Header Files\testnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\testnet\TestRoutingTable.hpp">
+      <Filter>Header Files\testnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\ZeroTierOne.h">
+      <Filter>Header Files\include</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\control\IpcConnection.hpp">
+      <Filter>Header Files\control</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\control\IpcListener.hpp">
+      <Filter>Header Files\control</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\control\NodeControlClient.hpp">
+      <Filter>Header Files\control</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\control\NodeControlService.hpp">
+      <Filter>Header Files\control</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\osnet\NativeSocketManager.hpp">
+      <Filter>Header Files\osnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\osnet\WindowsEthernetTap.hpp">
+      <Filter>Header Files\osnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\osnet\WindowsEthernetTapFactory.hpp">
+      <Filter>Header Files\osnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\osnet\WindowsRoutingTable.hpp">
+      <Filter>Header Files\osnet</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\Address.hpp">
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\AntiRecursion.hpp">
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\Array.hpp">
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\AtomicCounter.hpp">
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\BandwidthAccount.hpp">
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\node\Buffer.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\C25519.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\CertificateOfMembership.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\CMWC4096.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\Condition.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Constants.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Defaults.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Dictionary.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\EthernetTap.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\EthernetTapFactory.hpp">
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\HttpClient.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Identity.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\IncomingPacket.hpp">
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\InetAddress.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Logger.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\MAC.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Multicaster.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\MulticastGroup.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Mutex.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Network.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\NetworkConfig.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Node.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\NodeConfig.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\NonCopyable.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\OutboundMulticast.hpp">
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Packet.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\Path.hpp">
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Peer.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Poly1305.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\RoutingTable.hpp">
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\RuntimeEnvironment.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Salsa20.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Service.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\SHA512.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\SharedPtr.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\Socket.hpp">
+      <Filter>Header Files\node</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\node\SocketManager.hpp">
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\SoftwareUpdater.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Switch.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Thread.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Topology.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\UdpSocket.hpp">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
     <ClInclude Include="..\..\node\Utils.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="resource.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="ServiceBase.h">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\node</Filter>
     </ClInclude>
-    <ClInclude Include="ServiceInstaller.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="ZeroTierOneService.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\Path.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\Socket.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\SocketManager.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\TcpSocket.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\AntiRecursion.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\RoutingTable.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\osnet\WindowsEthernetTap.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\osnet\WindowsEthernetTapFactory.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\osnet\WindowsRoutingTable.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\control\IpcConnection.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\control\IpcListener.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\control\NodeControlClient.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\control\NodeControlService.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\testnet\TestEthernetTap.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\testnet\TestEthernetTapFactory.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\testnet\TestRoutingTable.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\IncomingPacket.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\ZeroTierOne.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\node\OutboundMulticast.hpp">
+    <ClInclude Include="..\..\ext\lz4\lz4.h">
       <Filter>Header Files</Filter>
     </ClInclude>
   </ItemGroup>

+ 3 - 1
windows/ZeroTierOne/ZeroTierOneService.cpp

@@ -39,6 +39,7 @@
 
 #include "../../osnet/WindowsEthernetTapFactory.hpp"
 #include "../../osnet/WindowsRoutingTable.hpp"
+#include "../../osnet/NativeSocketManager.hpp"
 
 #pragma endregion // Includes
 
@@ -84,12 +85,13 @@ restart_node:
 	try {
 		ZeroTier::WindowsEthernetTapFactory tapFactory(ZeroTier::ZT_DEFAULTS.defaultHomePath.c_str());
 		ZeroTier::WindowsRoutingTable routingTable;
+		ZeroTier::NativeSocketManager socketManager(ZT_DEFAULT_UDP_PORT,0);
 
 		{
 			// start or restart
 			ZeroTier::Mutex::Lock _l(_lock);
 			delete _node;
-			_node = new ZeroTier::Node(ZeroTier::ZT_DEFAULTS.defaultHomePath.c_str(),&tapFactory,&routingTable,ZT_DEFAULT_UDP_PORT,0,false);
+			_node = new ZeroTier::Node(ZeroTier::ZT_DEFAULTS.defaultHomePath.c_str(),&tapFactory,&routingTable,&socketManager,false,(const char *)0);
 		}
 
 		switch(_node->run()) {