From 2da6a7570b1bdbb99da9662c7e66c3028f342a5d Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 22 Jan 2014 18:38:45 -0800 Subject: [PATCH] More tap driver work, increment version number, remove old binaries since signatures may not have been valid. --- .gitignore | 1 + ext/bin/tap-windows/x64/ztTap100.inf | 85 ------------------ ext/bin/tap-windows/x64/ztTap100.sys | Bin 30392 -> 0 bytes ext/bin/tap-windows/x64/zttap100.cat | Bin 8974 -> 0 bytes ext/bin/tap-windows/x86/ztTap100.inf | 85 ------------------ ext/bin/tap-windows/x86/ztTap100.sys | Bin 27800 -> 0 bytes ext/bin/tap-windows/x86/zttap100.cat | Bin 1048 -> 0 bytes node/EthernetTap.cpp | 2 +- .../TapDriver Package.vcxproj | 30 ------- .../TapDriver Package.vcxproj.filters | 8 -- windows/TapDriver/TapDriver.vcxproj | 5 +- windows/TapDriver/TapDriver.vcxproj.filters | 2 +- windows/TapDriver/config.h | 12 +-- windows/TapDriver/constants.h | 1 - .../TapDriver/{ztTap100.inf => zttap200.inf} | 60 ++++++------- 15 files changed, 39 insertions(+), 252 deletions(-) delete mode 100644 ext/bin/tap-windows/x64/ztTap100.inf delete mode 100644 ext/bin/tap-windows/x64/ztTap100.sys delete mode 100644 ext/bin/tap-windows/x64/zttap100.cat delete mode 100644 ext/bin/tap-windows/x86/ztTap100.inf delete mode 100644 ext/bin/tap-windows/x86/ztTap100.sys delete mode 100644 ext/bin/tap-windows/x86/zttap100.cat rename windows/TapDriver/{ztTap100.inf => zttap200.inf} (56%) diff --git a/.gitignore b/.gitignore index 02568362d..8b855c4f9 100755 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ *.autosave /ZeroTier One.zip /ZeroTier One.dmg +/windows/x64 diff --git a/ext/bin/tap-windows/x64/ztTap100.inf b/ext/bin/tap-windows/x64/ztTap100.inf deleted file mode 100644 index ff7eb6a26..000000000 --- a/ext/bin/tap-windows/x64/ztTap100.inf +++ /dev/null @@ -1,85 +0,0 @@ -[Version] -Signature="$WINDOWS NT$" -Class=Net -ClassGuid={4d36e972-e325-11ce-bfc1-08002be10318} -Provider=%Provider% -CatalogFile=ztTap100.cat -DriverVer=01/20/2014,14.30.21.864 - - -[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 deleted file mode 100644 index 6641337f136642bed7aafa794dcb8e6fe052ccf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30392 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 diff --git a/ext/bin/tap-windows/x64/zttap100.cat b/ext/bin/tap-windows/x64/zttap100.cat deleted file mode 100644 index e1fdb5fd1b0179fd875a8a8c7b2733ca162f7c73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8974 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 {% zGg3V3sd3V|-T5WSy3EZh;kNJ`i;7=gMa_#edUM)~T9}*D;P{MnLHTBtNm|4SquAq7 z-qOGfuQ#tY$C+k|$`?R;r=lbXl?cJ9zbyQ~8u5&oW(;>1%u0+D~ zXd20SH&sb?$0?4S(7*p;{%JFzui*7p!< zFy6&qM)`~!gqytgT)+odUGLg5(3>T^>lA&b!>IdXWqe0zIkagocbQ20o;wT9Ne$u~ zYBvcM3~KSaZdE$pFC%9^ws8IlThbQmoS5(jr{q_zR1nRLk*Lpe(DlgS*AP`Bv2b9A z2d9gHVFb)v{u>J&a85RJ=kmAn^a2JVI(Z(4frUuu@rcaiF`59D1P0CIaXZ)(>pI>Ux?xr%=*pCMdOH|yx_WFW) zG@Kl_cW=(A8kq}W58@jFOj3&z_dHyeX*AsC5#zahEph+SI)+@Y`|X>Z{m~0uRaUC! zI%=@M;l|=_b^%PyY5G# zck0!Zzqodc%xCKv;lJO;w4f$hLwBJ>--|xakd+#IiE1hbBI?dsGfifVfS^moA-rBT4#qJ*&8M5M^$xym-T!|;A31ZS;x}o%G;xX ztV1je9${fXMNji*FpJPU$4xv$_QLj~X!O5|d%`knq#~ zXrb>ht4loQuW40?c<-^ZUHkpR*Ah9Zg!{@R?K*s@{^dUJEL4BMO8M?MD?Q=35$#q*=Oq-F>pRKJkwDA&Oqs9GT-- zk?IhI{W6Ei@r2-iM??4f$53rvdtc4J9S}_ z5qohTR`|#9M`%2z&MzFog;i=heeNxsybtS!=7qC3N7 zhC@Vs#+U2sCTuUhv-@qYWLfuMz#;zC_f^MxOWKVk6oU*xjLgtji(OjMs|q4vgwt#m8N=!q^hXA2WCCT|?0S52MGN-~a#s diff --git a/ext/bin/tap-windows/x86/ztTap100.inf b/ext/bin/tap-windows/x86/ztTap100.inf deleted file mode 100644 index 1849019bf..000000000 --- a/ext/bin/tap-windows/x86/ztTap100.inf +++ /dev/null @@ -1,85 +0,0 @@ -[Version] -Signature="$WINDOWS NT$" -Class=Net -ClassGuid={4d36e972-e325-11ce-bfc1-08002be10318} -Provider=%Provider% -CatalogFile=ztTap100.cat -DriverVer=01/20/2014,14.30.31.745 - - -[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 deleted file mode 100644 index 6dce8e8e38478cd7f77e791de3132fe38f88bb7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27800 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 diff --git a/ext/bin/tap-windows/x86/zttap100.cat b/ext/bin/tap-windows/x86/zttap100.cat deleted file mode 100644 index 9eff33eba39fa07b270c34b14dc169fac16c0659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1048 zcmcgqOKTHR6h8OnPBiJH7A;DH47ErR+lF&zl1WE`kW3Ql1B!`QUz-FfM2m`bqaw;I zx^vNmh`4AFvjxp&U%e&>9LBQ=~%9bTGQ z`kE0tWH(Y4M@mQ`G;x&JOr|E1LW!uD7TqYZ0n<9$$#lX-+3=6{_z+WL3 z_bTjVsE;Twjx!Nu_>G51N21K`ulJHKy+w<=6mtk+i`k}uHz+!_#2Y<6!$cb~z+E`sV7oyA)Drg?u`#vvYe(lkSJbPTNMpLxG; HHmIWS{kWez diff --git a/node/EthernetTap.cpp b/node/EthernetTap.cpp index 231fde066..96d2839a3 100644 --- a/node/EthernetTap.cpp +++ b/node/EthernetTap.cpp @@ -1168,7 +1168,7 @@ EthernetTap::EthernetTap( Utils::snprintf(tapPath,sizeof(tapPath),"\\\\.\\Global\\%s.tap",_myDeviceInstanceId.c_str()); _tap = CreateFileA(tapPath,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_SYSTEM|FILE_FLAG_OVERLAPPED,NULL); if (_tap == INVALID_HANDLE_VALUE) - throw std::runtime_error("unable to open tap in \\\\.\\Global\\ namespace"); + throw std::runtime_error(std::string("unable to open tap device ")+tapPath); // Set media status to enabled uint32_t tmpi = 1; diff --git a/windows/TapDriver Package/TapDriver Package.vcxproj b/windows/TapDriver Package/TapDriver Package.vcxproj index 3e311b482..3f0d1df08 100644 --- a/windows/TapDriver Package/TapDriver Package.vcxproj +++ b/windows/TapDriver Package/TapDriver Package.vcxproj @@ -195,36 +195,6 @@ false - - - false - false - false - false - false - false - true - true - true - true - true - true - - - true - true - true - true - true - true - false - false - false - false - false - false - - diff --git a/windows/TapDriver Package/TapDriver Package.vcxproj.filters b/windows/TapDriver Package/TapDriver Package.vcxproj.filters index 44a2620e8..e1b34f2aa 100644 --- a/windows/TapDriver Package/TapDriver Package.vcxproj.filters +++ b/windows/TapDriver Package/TapDriver Package.vcxproj.filters @@ -6,12 +6,4 @@ inf;inv;inx;mof;mc; - - - Driver Files - - - Driver Files - - \ No newline at end of file diff --git a/windows/TapDriver/TapDriver.vcxproj b/windows/TapDriver/TapDriver.vcxproj index 33421c842..ec1d9c454 100644 --- a/windows/TapDriver/TapDriver.vcxproj +++ b/windows/TapDriver/TapDriver.vcxproj @@ -173,9 +173,10 @@ http://timestamp.digicert.com/ - ztTap100 + zttap200 $(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\ http://timestamp.digicert.com/ + true ztTap100 @@ -266,7 +267,7 @@ - + diff --git a/windows/TapDriver/TapDriver.vcxproj.filters b/windows/TapDriver/TapDriver.vcxproj.filters index 1b864a260..570ea7273 100644 --- a/windows/TapDriver/TapDriver.vcxproj.filters +++ b/windows/TapDriver/TapDriver.vcxproj.filters @@ -68,7 +68,7 @@ - + Driver Files diff --git a/windows/TapDriver/config.h b/windows/TapDriver/config.h index 1dc6ac878..28bd73f69 100644 --- a/windows/TapDriver/config.h +++ b/windows/TapDriver/config.h @@ -1,12 +1,12 @@ -#define PRODUCT_NAME "ZeroTier One Ethernet Tap" -#define PRODUCT_VERSION "1.0.0" -#define PRODUCT_VERSION_RESOURCE 1,0,0,1 -#define PRODUCT_TAP_WIN_COMPONENT_ID "ztTap100" -#define PRODUCT_TAP_WIN_MAJOR 1 +#define PRODUCT_NAME "ZeroTier One Virtual Network Port" +#define PRODUCT_VERSION "2.0.0" +#define PRODUCT_VERSION_RESOURCE 2,0,0,1 +#define PRODUCT_TAP_WIN_COMPONENT_ID "zttap200" +#define PRODUCT_TAP_WIN_MAJOR 2 #define PRODUCT_TAP_WIN_MINOR 0 #define PRODUCT_TAP_WIN_PROVIDER "ZeroTier Networks" #define PRODUCT_TAP_WIN_DEVICE_DESCRIPTION PRODUCT_NAME -#define PRODUCT_TAP_WIN_RELDATE "01/20/2014" +#define PRODUCT_TAP_WIN_RELDATE "01/22/2014" #define TAP_DRIVER_MAJOR_VERSION PRODUCT_TAP_WIN_MAJOR #define TAP_DRIVER_MINOR_VERSION PRODUCT_TAP_WIN_MINOR diff --git a/windows/TapDriver/constants.h b/windows/TapDriver/constants.h index 0e8d86f3a..78174d257 100644 --- a/windows/TapDriver/constants.h +++ b/windows/TapDriver/constants.h @@ -47,6 +47,5 @@ #define PACKET_QUEUE_SIZE 64 // tap -> userspace queue size #define IRP_QUEUE_SIZE 16 // max number of simultaneous i/o operations from userspace -#define INJECT_QUEUE_SIZE 16 // DHCP/ARP -> tap injection queue #define TAP_LITTLE_ENDIAN // affects ntohs, htonl, etc. functions diff --git a/windows/TapDriver/ztTap100.inf b/windows/TapDriver/zttap200.inf similarity index 56% rename from windows/TapDriver/ztTap100.inf rename to windows/TapDriver/zttap200.inf index cf31e9ff5..fdd05f537 100644 --- a/windows/TapDriver/ztTap100.inf +++ b/windows/TapDriver/zttap200.inf @@ -3,39 +3,39 @@ Signature="$WINDOWS NT$" Class=Net ClassGuid={4d36e972-e325-11ce-bfc1-08002be10318} Provider=%Provider% -CatalogFile=ztTap100.cat - +CatalogFile=zttap200.cat [Strings] -DeviceDescription = "ZeroTier One Ethernet Tap" -Provider = "ZeroTier Networks" +DeviceDescription = "ZeroTier One Virtual Network Port" +Provider = "ZeroTier Networks LLC" +; To build for x86, take NTamd64 off this and off the named section manually, build, then put it back! [Manufacturer] -%Provider%=ztTap100,NTamd64 +%Provider%=zttap200,NTamd64 -[ztTap100] -%DeviceDescription%=ztTap100.ndi,ztTap100 +[zttap200] +%DeviceDescription%=zttap200.ndi,zttap200 -[ztTap100.NTamd64] -%DeviceDescription%=ztTap100.ndi,ztTap100 +[ztTap200.NTamd64] +%DeviceDescription%=zttap200.ndi,zttap200 -[ztTap100.ndi] -CopyFiles = ztTap100.driver,ztTap100.files -AddReg = ztTap100.reg -AddReg = ztTap100.params.reg +[zttap200.ndi] +CopyFiles = zttap200.driver,zttap200.files +AddReg = zttap200.reg +AddReg = zttap200.params.reg Characteristics = 0x81 -[ztTap100.ndi.Services] -AddService = ztTap100, 2, ztTap100.service +[zttap200.ndi.Services] +AddService = zttap200, 2, zttap200.service -[ztTap100.reg] -HKR, Ndi, Service, 0, "ztTap100" +[zttap200.reg] +HKR, Ndi, Service, 0, "zttap200" HKR, Ndi\Interfaces, UpperRange, 0, "ndis5" HKR, Ndi\Interfaces, LowerRange, 0, "ethernet" HKR, , Manufacturer, 0, "%Provider%" HKR, , ProductName, 0, "%DeviceDescription%" -[ztTap100.params.reg] +[zttap200.params.reg] HKR, Ndi\params\MTU, ParamDesc, 0, "MTU" HKR, Ndi\params\MTU, Type, 0, "int" HKR, Ndi\params\MTU, Default, 0, "2800" @@ -52,33 +52,27 @@ 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] +[zttap200.service] DisplayName = %DeviceDescription% ServiceType = 1 StartType = 3 ErrorControl = 1 LoadOrderGroup = NDIS -ServiceBinary = %12%\ztTap100.sys +ServiceBinary = %12%\zttap200.sys [SourceDisksNames] -1 = %DeviceDescription%, ztTap100.sys +1 = %DeviceDescription%, zttap200.sys [SourceDisksFiles] -ztTap100.sys = 1 +zttap200.sys = 1 [DestinationDirs] -ztTap100.files = 11 -ztTap100.driver = 12 +zttap200.files = 11 +zttap200.driver = 12 -[ztTap100.files] +[zttap200.files] ; -[ztTap100.driver] -ztTap100.sys,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK +[zttap200.driver] +zttap200.sys,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK