summaryrefslogtreecommitdiff
path: root/vsprojects
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-12 13:02:02 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-12 13:02:02 -0800
commit54d1b11b1981481ba177c8f7c84c179977f5652d (patch)
treeaa8eacfe1d0badfca3f9cb6e9856b9f458e1a785 /vsprojects
parentf038ed9ca2f3e65e063571e77cd48f1072f2d3e3 (diff)
parent68defd998008e83e5348d29cab5535dab3d444e8 (diff)
downloadinfinitytier-54d1b11b1981481ba177c8f7c84c179977f5652d.tar.gz
infinitytier-54d1b11b1981481ba177c8f7c84c179977f5652d.zip
Merge branch 'adamierymenko-dev'
Diffstat (limited to 'vsprojects')
-rw-r--r--vsprojects/InstallerUpdater/App.config6
-rw-r--r--vsprojects/InstallerUpdater/InstallerUpdater.csproj85
-rw-r--r--vsprojects/InstallerUpdater/MainForm.Designer.cs39
-rw-r--r--vsprojects/InstallerUpdater/MainForm.cs20
-rw-r--r--vsprojects/InstallerUpdater/Program.cs22
-rw-r--r--vsprojects/InstallerUpdater/Properties/AssemblyInfo.cs36
-rw-r--r--vsprojects/InstallerUpdater/Properties/Resources.Designer.cs71
-rw-r--r--vsprojects/InstallerUpdater/Properties/Resources.resx117
-rw-r--r--vsprojects/InstallerUpdater/Properties/Settings.Designer.cs30
-rw-r--r--vsprojects/InstallerUpdater/Properties/Settings.settings7
-rw-r--r--vsprojects/SelfTest/SelfTest.vcxproj231
-rw-r--r--vsprojects/SelfTest/SelfTest.vcxproj.filters227
-rw-r--r--vsprojects/SelfTest/targetver.h8
-rw-r--r--vsprojects/Service/App.config6
-rw-r--r--vsprojects/Service/Program.cs17
-rw-r--r--vsprojects/Service/Properties/AssemblyInfo.cs36
-rw-r--r--vsprojects/Service/Service.csproj108
-rw-r--r--vsprojects/Service/ZeroTierOneService.Designer.cs71
-rw-r--r--vsprojects/Service/ZeroTierOneService.cs44
-rw-r--r--vsprojects/Service/ZeroTierOneService.resx129
-rw-r--r--vsprojects/TapDriver Package/TapDriver Package.vcxproj155
-rw-r--r--vsprojects/TapDriver Package/TapDriver Package.vcxproj.filters9
-rw-r--r--vsprojects/TapDriver/TapDriver.vcxproj352
-rw-r--r--vsprojects/TapDriver/TapDriver.vcxproj.filters81
-rw-r--r--vsprojects/TapDriver/config.h12
-rw-r--r--vsprojects/TapDriver/constants.h52
-rw-r--r--vsprojects/TapDriver/dhcp.c603
-rw-r--r--vsprojects/TapDriver/dhcp.h168
-rw-r--r--vsprojects/TapDriver/endian.h35
-rw-r--r--vsprojects/TapDriver/error.c387
-rw-r--r--vsprojects/TapDriver/error.h88
-rw-r--r--vsprojects/TapDriver/instance.c241
-rw-r--r--vsprojects/TapDriver/lock.h75
-rw-r--r--vsprojects/TapDriver/macinfo.c154
-rw-r--r--vsprojects/TapDriver/macinfo.h38
-rw-r--r--vsprojects/TapDriver/mem.c186
-rw-r--r--vsprojects/TapDriver/proto.h224
-rw-r--r--vsprojects/TapDriver/prototypes.h260
-rw-r--r--vsprojects/TapDriver/tap-windows.h73
-rw-r--r--vsprojects/TapDriver/tapdrvr.c3173
-rw-r--r--vsprojects/TapDriver/testcert.pfxbin2651 -> 0 bytes
-rw-r--r--vsprojects/TapDriver/types.h182
-rw-r--r--vsprojects/TapDriver/ztTap100.inf84
-rw-r--r--vsprojects/ZeroTierOne/ZeroTierOne.vcxproj228
-rw-r--r--vsprojects/ZeroTierOne/ZeroTierOne.vcxproj.filters228
45 files changed, 0 insertions, 8398 deletions
diff --git a/vsprojects/InstallerUpdater/App.config b/vsprojects/InstallerUpdater/App.config
deleted file mode 100644
index 8e156463..00000000
--- a/vsprojects/InstallerUpdater/App.config
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
- <startup>
- <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
- </startup>
-</configuration> \ No newline at end of file
diff --git a/vsprojects/InstallerUpdater/InstallerUpdater.csproj b/vsprojects/InstallerUpdater/InstallerUpdater.csproj
deleted file mode 100644
index 6c263186..00000000
--- a/vsprojects/InstallerUpdater/InstallerUpdater.csproj
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{B2A5CD75-E0FF-42A3-833A-0C6B0278CFEA}</ProjectGuid>
- <OutputType>WinExe</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>InstallerUpdater</RootNamespace>
- <AssemblyName>InstallerUpdater</AssemblyName>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
- <FileAlignment>512</FileAlignment>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <PlatformTarget>AnyCPU</PlatformTarget>
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <PlatformTarget>AnyCPU</PlatformTarget>
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="System" />
- <Reference Include="System.Core" />
- <Reference Include="System.Xml.Linq" />
- <Reference Include="System.Data.DataSetExtensions" />
- <Reference Include="Microsoft.CSharp" />
- <Reference Include="System.Data" />
- <Reference Include="System.Deployment" />
- <Reference Include="System.Drawing" />
- <Reference Include="System.Windows.Forms" />
- <Reference Include="System.Xml" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="MainForm.cs">
- <SubType>Form</SubType>
- </Compile>
- <Compile Include="MainForm.Designer.cs">
- <DependentUpon>MainForm.cs</DependentUpon>
- </Compile>
- <Compile Include="Program.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <EmbeddedResource Include="Properties\Resources.resx">
- <Generator>ResXFileCodeGenerator</Generator>
- <LastGenOutput>Resources.Designer.cs</LastGenOutput>
- <SubType>Designer</SubType>
- </EmbeddedResource>
- <Compile Include="Properties\Resources.Designer.cs">
- <AutoGen>True</AutoGen>
- <DependentUpon>Resources.resx</DependentUpon>
- </Compile>
- <None Include="Properties\Settings.settings">
- <Generator>SettingsSingleFileGenerator</Generator>
- <LastGenOutput>Settings.Designer.cs</LastGenOutput>
- </None>
- <Compile Include="Properties\Settings.Designer.cs">
- <AutoGen>True</AutoGen>
- <DependentUpon>Settings.settings</DependentUpon>
- <DesignTimeSharedInput>True</DesignTimeSharedInput>
- </Compile>
- </ItemGroup>
- <ItemGroup>
- <None Include="App.config" />
- </ItemGroup>
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
- -->
-</Project> \ No newline at end of file
diff --git a/vsprojects/InstallerUpdater/MainForm.Designer.cs b/vsprojects/InstallerUpdater/MainForm.Designer.cs
deleted file mode 100644
index 573a083e..00000000
--- a/vsprojects/InstallerUpdater/MainForm.Designer.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-namespace InstallerUpdater
-{
- partial class MainForm
- {
- /// <summary>
- /// Required designer variable.
- /// </summary>
- private System.ComponentModel.IContainer components = null;
-
- /// <summary>
- /// Clean up any resources being used.
- /// </summary>
- /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- /// <summary>
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- /// </summary>
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Text = "Form1";
- }
-
- #endregion
- }
-}
-
diff --git a/vsprojects/InstallerUpdater/MainForm.cs b/vsprojects/InstallerUpdater/MainForm.cs
deleted file mode 100644
index f671dfb6..00000000
--- a/vsprojects/InstallerUpdater/MainForm.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace InstallerUpdater
-{
- public partial class MainForm : Form
- {
- public MainForm()
- {
- InitializeComponent();
- }
- }
-}
diff --git a/vsprojects/InstallerUpdater/Program.cs b/vsprojects/InstallerUpdater/Program.cs
deleted file mode 100644
index d7f1996e..00000000
--- a/vsprojects/InstallerUpdater/Program.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace InstallerUpdater
-{
- static class Program
- {
- /// <summary>
- /// The main entry point for the application.
- /// </summary>
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new MainForm());
- }
- }
-}
diff --git a/vsprojects/InstallerUpdater/Properties/AssemblyInfo.cs b/vsprojects/InstallerUpdater/Properties/AssemblyInfo.cs
deleted file mode 100644
index 03edc8bd..00000000
--- a/vsprojects/InstallerUpdater/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("InstallerUpdater")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("InstallerUpdater")]
-[assembly: AssemblyCopyright("Copyright © 2013")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("8ae5142c-2de0-430e-aff7-b2487042615d")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/vsprojects/InstallerUpdater/Properties/Resources.Designer.cs b/vsprojects/InstallerUpdater/Properties/Resources.Designer.cs
deleted file mode 100644
index 3fb330e2..00000000
--- a/vsprojects/InstallerUpdater/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.18052
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace InstallerUpdater.Properties
-{
-
-
- /// <summary>
- /// A strongly-typed resource class, for looking up localized strings, etc.
- /// </summary>
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
- }
-
- /// <summary>
- /// Returns the cached ResourceManager instance used by this class.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("InstallerUpdater.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- /// <summary>
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
- return resourceCulture;
- }
- set
- {
- resourceCulture = value;
- }
- }
- }
-}
diff --git a/vsprojects/InstallerUpdater/Properties/Resources.resx b/vsprojects/InstallerUpdater/Properties/Resources.resx
deleted file mode 100644
index af7dbebb..00000000
--- a/vsprojects/InstallerUpdater/Properties/Resources.resx
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
-</root> \ No newline at end of file
diff --git a/vsprojects/InstallerUpdater/Properties/Settings.Designer.cs b/vsprojects/InstallerUpdater/Properties/Settings.Designer.cs
deleted file mode 100644
index 8713e48d..00000000
--- a/vsprojects/InstallerUpdater/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.18052
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace InstallerUpdater.Properties
-{
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
- return defaultInstance;
- }
- }
- }
-}
diff --git a/vsprojects/InstallerUpdater/Properties/Settings.settings b/vsprojects/InstallerUpdater/Properties/Settings.settings
deleted file mode 100644
index 39645652..00000000
--- a/vsprojects/InstallerUpdater/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
- <Profiles>
- <Profile Name="(Default)" />
- </Profiles>
- <Settings />
-</SettingsFile>
diff --git a/vsprojects/SelfTest/SelfTest.vcxproj b/vsprojects/SelfTest/SelfTest.vcxproj
deleted file mode 100644
index db4e163f..00000000
--- a/vsprojects/SelfTest/SelfTest.vcxproj
+++ /dev/null
@@ -1,231 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{DCD73B97-0F44-4044-8BA4-95B59CCAB4BD}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>SelfTest</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>$(SolutionDir)\Build\$(Configuration)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(Configuration)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(Configuration)\</OutDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>$(SolutionDir)\ext\bin\libcrypto\win32-vs2012\libeay32.lib;wsock32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>$(SolutionDir)\ext\bin\libcrypto\win32-vs2012\libeay32.lib;wsock32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>wsock32.lib;ws2_32.lib;iphlpapi.lib;$(SolutionDir)\ext\bin\libcrypto\win32-vs2012\libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>wsock32.lib;ws2_32.lib;iphlpapi.lib;$(SolutionDir)\ext\bin\libcrypto\win64-vs2012\libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="..\..\node\Address.hpp" />
- <ClInclude Include="..\..\node\Array.hpp" />
- <ClInclude Include="..\..\node\AtomicCounter.hpp" />
- <ClInclude Include="..\..\node\BloomFilter.hpp" />
- <ClInclude Include="..\..\node\Buffer.hpp" />
- <ClInclude Include="..\..\node\CMWC4096.hpp" />
- <ClInclude Include="..\..\node\Condition.hpp" />
- <ClInclude Include="..\..\node\Constants.hpp" />
- <ClInclude Include="..\..\node\Defaults.hpp" />
- <ClInclude Include="..\..\node\Demarc.hpp" />
- <ClInclude Include="..\..\node\Dictionary.hpp" />
- <ClInclude Include="..\..\node\EllipticCurveKey.hpp" />
- <ClInclude Include="..\..\node\EllipticCurveKeyPair.hpp" />
- <ClInclude Include="..\..\node\EthernetTap.hpp" />
- <ClInclude Include="..\..\node\Filter.hpp" />
- <ClInclude Include="..\..\node\HMAC.hpp" />
- <ClInclude Include="..\..\node\Identity.hpp" />
- <ClInclude Include="..\..\node\InetAddress.hpp" />
- <ClInclude Include="..\..\node\Logger.hpp" />
- <ClInclude Include="..\..\node\MAC.hpp" />
- <ClInclude Include="..\..\node\Multicaster.hpp" />
- <ClInclude Include="..\..\node\MulticastGroup.hpp" />
- <ClInclude Include="..\..\node\Mutex.hpp" />
- <ClInclude Include="..\..\node\Network.hpp" />
- <ClInclude Include="..\..\node\Node.hpp" />
- <ClInclude Include="..\..\node\NodeConfig.hpp" />
- <ClInclude Include="..\..\node\NonCopyable.hpp" />
- <ClInclude Include="..\..\node\Packet.hpp" />
- <ClInclude Include="..\..\node\PacketDecoder.hpp" />
- <ClInclude Include="..\..\node\Peer.hpp" />
- <ClInclude Include="..\..\node\Range.hpp" />
- <ClInclude Include="..\..\node\RateLimiter.hpp" />
- <ClInclude Include="..\..\node\RuntimeEnvironment.hpp" />
- <ClInclude Include="..\..\node\Salsa20.hpp" />
- <ClInclude Include="..\..\node\Service.hpp" />
- <ClInclude Include="..\..\node\SharedPtr.hpp" />
- <ClInclude Include="..\..\node\Switch.hpp" />
- <ClInclude Include="..\..\node\SysEnv.hpp" />
- <ClInclude Include="..\..\node\Thread.hpp" />
- <ClInclude Include="..\..\node\Topology.hpp" />
- <ClInclude Include="..\..\node\UdpSocket.hpp" />
- <ClInclude Include="..\..\node\Utils.hpp" />
- <ClInclude Include="resource.h" />
- <ClInclude Include="targetver.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\ext\kissdb\kissdb.c" />
- <ClCompile Include="..\..\ext\lz4\lz4.c" />
- <ClCompile Include="..\..\ext\lz4\lz4hc.c" />
- <ClCompile Include="..\..\node\Defaults.cpp" />
- <ClCompile Include="..\..\node\Demarc.cpp" />
- <ClCompile Include="..\..\node\EllipticCurveKeyPair.cpp" />
- <ClCompile Include="..\..\node\EthernetTap.cpp" />
- <ClCompile Include="..\..\node\Filter.cpp" />
- <ClCompile Include="..\..\node\HMAC.cpp" />
- <ClCompile Include="..\..\node\Identity.cpp" />
- <ClCompile Include="..\..\node\InetAddress.cpp" />
- <ClCompile Include="..\..\node\Logger.cpp" />
- <ClCompile Include="..\..\node\Network.cpp" />
- <ClCompile Include="..\..\node\Node.cpp" />
- <ClCompile Include="..\..\node\NodeConfig.cpp" />
- <ClCompile Include="..\..\node\Packet.cpp" />
- <ClCompile Include="..\..\node\PacketDecoder.cpp" />
- <ClCompile Include="..\..\node\Peer.cpp" />
- <ClCompile Include="..\..\node\Salsa20.cpp" />
- <ClCompile Include="..\..\node\Service.cpp" />
- <ClCompile Include="..\..\node\Switch.cpp" />
- <ClCompile Include="..\..\node\SysEnv.cpp" />
- <ClCompile Include="..\..\node\Topology.cpp" />
- <ClCompile Include="..\..\node\UdpSocket.cpp" />
- <ClCompile Include="..\..\node\Utils.cpp" />
- <ClCompile Include="..\..\selftest.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/vsprojects/SelfTest/SelfTest.vcxproj.filters b/vsprojects/SelfTest/SelfTest.vcxproj.filters
deleted file mode 100644
index fa8c8331..00000000
--- a/vsprojects/SelfTest/SelfTest.vcxproj.filters
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="targetver.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Address.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Array.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\AtomicCounter.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\BloomFilter.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Buffer.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\CMWC4096.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Condition.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Constants.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Defaults.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Demarc.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Dictionary.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\EllipticCurveKey.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\EllipticCurveKeyPair.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\EthernetTap.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Filter.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\HMAC.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Identity.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\InetAddress.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Logger.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\MAC.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Multicaster.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\MulticastGroup.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Mutex.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Network.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Node.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\NodeConfig.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\NonCopyable.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Packet.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\PacketDecoder.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Peer.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Range.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\RateLimiter.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\RuntimeEnvironment.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Salsa20.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Service.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\SharedPtr.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Switch.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\SysEnv.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Thread.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Topology.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\UdpSocket.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Utils.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="resource.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\node\Defaults.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Demarc.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\EllipticCurveKeyPair.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\EthernetTap.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Filter.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\HMAC.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Identity.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\InetAddress.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Logger.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Network.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Node.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\NodeConfig.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Packet.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\PacketDecoder.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Peer.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Salsa20.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Service.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Switch.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\SysEnv.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Topology.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\UdpSocket.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Utils.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\selftest.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\ext\kissdb\kissdb.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\ext\lz4\lz4.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\ext\lz4\lz4hc.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/vsprojects/SelfTest/targetver.h b/vsprojects/SelfTest/targetver.h
deleted file mode 100644
index 87c0086d..00000000
--- a/vsprojects/SelfTest/targetver.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-// Including SDKDDKVer.h defines the highest available Windows platform.
-
-// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
-// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
-
-#include <SDKDDKVer.h>
diff --git a/vsprojects/Service/App.config b/vsprojects/Service/App.config
deleted file mode 100644
index 8e156463..00000000
--- a/vsprojects/Service/App.config
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
- <startup>
- <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
- </startup>
-</configuration> \ No newline at end of file
diff --git a/vsprojects/Service/Program.cs b/vsprojects/Service/Program.cs
deleted file mode 100644
index 579e5bfe..00000000
--- a/vsprojects/Service/Program.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.ServiceProcess;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Service
-{
- static class Program
- {
- static void Main()
- {
- ServiceBase.Run(new ZeroTierOneService());
- }
- }
-}
diff --git a/vsprojects/Service/Properties/AssemblyInfo.cs b/vsprojects/Service/Properties/AssemblyInfo.cs
deleted file mode 100644
index 04bb7710..00000000
--- a/vsprojects/Service/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Service")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Service")]
-[assembly: AssemblyCopyright("Copyright © 2013")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("8c5f91e6-d727-431c-b99c-8e16dc423889")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/vsprojects/Service/Service.csproj b/vsprojects/Service/Service.csproj
deleted file mode 100644
index 10372114..00000000
--- a/vsprojects/Service/Service.csproj
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{079E8119-388C-4676-964E-0B8C5324F770}</ProjectGuid>
- <OutputType>WinExe</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Service</RootNamespace>
- <AssemblyName>Service</AssemblyName>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
- <FileAlignment>512</FileAlignment>
- <PublishUrl>publish\</PublishUrl>
- <Install>true</Install>
- <InstallFrom>Disk</InstallFrom>
- <UpdateEnabled>false</UpdateEnabled>
- <UpdateMode>Foreground</UpdateMode>
- <UpdateInterval>7</UpdateInterval>
- <UpdateIntervalUnits>Days</UpdateIntervalUnits>
- <UpdatePeriodically>false</UpdatePeriodically>
- <UpdateRequired>false</UpdateRequired>
- <MapFileExtensions>true</MapFileExtensions>
- <ApplicationRevision>0</ApplicationRevision>
- <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
- <IsWebBootstrapper>false</IsWebBootstrapper>
- <UseApplicationTrust>false</UseApplicationTrust>
- <BootstrapperEnabled>true</BootstrapperEnabled>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <PlatformTarget>AnyCPU</PlatformTarget>
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <Prefer32Bit>false</Prefer32Bit>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <PlatformTarget>AnyCPU</PlatformTarget>
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <Prefer32Bit>false</Prefer32Bit>
- </PropertyGroup>
- <PropertyGroup>
- <StartupObject>Service.Program</StartupObject>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="System" />
- <Reference Include="System.Core" />
- <Reference Include="System.Windows.Forms" />
- <Reference Include="System.Xml.Linq" />
- <Reference Include="System.Data.DataSetExtensions" />
- <Reference Include="Microsoft.CSharp" />
- <Reference Include="System.Data" />
- <Reference Include="System.ServiceProcess" />
- <Reference Include="System.Xml" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="ZeroTierOneService.cs">
- <SubType>Component</SubType>
- </Compile>
- <Compile Include="ZeroTierOneService.Designer.cs">
- <DependentUpon>ZeroTierOneService.cs</DependentUpon>
- </Compile>
- <Compile Include="Program.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- </ItemGroup>
- <ItemGroup>
- <None Include="App.config" />
- </ItemGroup>
- <ItemGroup>
- <EmbeddedResource Include="ZeroTierOneService.resx">
- <DependentUpon>ZeroTierOneService.cs</DependentUpon>
- </EmbeddedResource>
- </ItemGroup>
- <ItemGroup>
- <BootstrapperPackage Include=".NETFramework,Version=v4.5">
- <Visible>False</Visible>
- <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
- <Install>true</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
- <Install>false</Install>
- </BootstrapperPackage>
- <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
- <Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1</ProductName>
- <Install>false</Install>
- </BootstrapperPackage>
- </ItemGroup>
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
- -->
-</Project> \ No newline at end of file
diff --git a/vsprojects/Service/ZeroTierOneService.Designer.cs b/vsprojects/Service/ZeroTierOneService.Designer.cs
deleted file mode 100644
index 9b1f6ddf..00000000
--- a/vsprojects/Service/ZeroTierOneService.Designer.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-namespace Service
-{
- partial class ZeroTierOneService
- {
- /// <summary>
- /// Required designer variable.
- /// </summary>
- private System.ComponentModel.IContainer components = null;
-
- /// <summary>
- /// Clean up any resources being used.
- /// </summary>
- /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Component Designer generated code
-
- /// <summary>
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- /// </summary>
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- this.zeroTierProcess = new System.Diagnostics.Process();
- this.checkForUpdatesTimer = new System.Windows.Forms.Timer(this.components);
- //
- // zeroTierProcess
- //
- this.zeroTierProcess.EnableRaisingEvents = true;
- this.zeroTierProcess.StartInfo.CreateNoWindow = true;
- this.zeroTierProcess.StartInfo.Domain = "";
- this.zeroTierProcess.StartInfo.LoadUserProfile = false;
- this.zeroTierProcess.StartInfo.Password = null;
- this.zeroTierProcess.StartInfo.RedirectStandardError = true;
- this.zeroTierProcess.StartInfo.RedirectStandardInput = true;
- this.zeroTierProcess.StartInfo.RedirectStandardOutput = true;
- this.zeroTierProcess.StartInfo.StandardErrorEncoding = null;
- this.zeroTierProcess.StartInfo.StandardOutputEncoding = null;
- this.zeroTierProcess.StartInfo.UserName = "";
- this.zeroTierProcess.StartInfo.UseShellExecute = false;
- this.zeroTierProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
- this.zeroTierProcess.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(this.zeroTierProcess_OutputDataReceived);
- this.zeroTierProcess.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(this.zeroTierProcess_ErrorDataReceived);
- this.zeroTierProcess.Exited += new System.EventHandler(this.zeroTierProcess_Exited);
- //
- // checkForUpdatesTimer
- //
- this.checkForUpdatesTimer.Enabled = true;
- this.checkForUpdatesTimer.Interval = 3600000;
- this.checkForUpdatesTimer.Tick += new System.EventHandler(this.checkForUpdatesTimer_Tick);
- //
- // ZeroTierOneService
- //
- this.ServiceName = "ZeroTier One";
-
- }
-
- #endregion
-
- private System.Diagnostics.Process zeroTierProcess;
- private System.Windows.Forms.Timer checkForUpdatesTimer;
- }
-}
diff --git a/vsprojects/Service/ZeroTierOneService.cs b/vsprojects/Service/ZeroTierOneService.cs
deleted file mode 100644
index f654f108..00000000
--- a/vsprojects/Service/ZeroTierOneService.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Diagnostics;
-using System.Linq;
-using System.ServiceProcess;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Service
-{
- public partial class ZeroTierOneService : ServiceBase
- {
- public ZeroTierOneService()
- {
- InitializeComponent();
- }
-
- protected override void OnStart(string[] args)
- {
- }
-
- protected override void OnStop()
- {
- }
-
- private void zeroTierProcess_Exited(object sender, EventArgs e)
- {
- }
-
- private void zeroTierProcess_ErrorDataReceived(object sender, DataReceivedEventArgs e)
- {
- }
-
- private void zeroTierProcess_OutputDataReceived(object sender, DataReceivedEventArgs e)
- {
- }
-
- private void checkForUpdatesTimer_Tick(object sender, EventArgs e)
- {
- }
- }
-}
diff --git a/vsprojects/Service/ZeroTierOneService.resx b/vsprojects/Service/ZeroTierOneService.resx
deleted file mode 100644
index 73b94cb8..00000000
--- a/vsprojects/Service/ZeroTierOneService.resx
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <metadata name="zeroTierProcess.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
- <value>17, 17</value>
- </metadata>
- <metadata name="checkForUpdatesTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
- <value>146, 17</value>
- </metadata>
- <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
- <value>False</value>
- </metadata>
-</root> \ No newline at end of file
diff --git a/vsprojects/TapDriver Package/TapDriver Package.vcxproj b/vsprojects/TapDriver Package/TapDriver Package.vcxproj
deleted file mode 100644
index 6ac36e9e..00000000
--- a/vsprojects/TapDriver Package/TapDriver Package.vcxproj
+++ /dev/null
@@ -1,155 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Win8 Debug|Win32">
- <Configuration>Win8 Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win8 Release|Win32">
- <Configuration>Win8 Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win7 Debug|Win32">
- <Configuration>Win7 Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win7 Release|Win32">
- <Configuration>Win7 Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Vista Debug|Win32">
- <Configuration>Vista Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Vista Release|Win32">
- <Configuration>Vista Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win8 Debug|x64">
- <Configuration>Win8 Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win8 Release|x64">
- <Configuration>Win8 Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win7 Debug|x64">
- <Configuration>Win7 Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win7 Release|x64">
- <Configuration>Win7 Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Vista Debug|x64">
- <Configuration>Vista Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Vista Release|x64">
- <Configuration>Vista Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{FDA1DD8D-1D56-4BC1-B402-FCC0B550D946}</ProjectGuid>
- <TemplateGuid>{4605da2c-74a5-4865-98e1-152ef136825f}</TemplateGuid>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
- <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
- <Configuration>Win8 Debug</Configuration>
- <Platform Condition="'$(Platform)' == ''">Win32</Platform>
- </PropertyGroup>
- <PropertyGroup Label="Globals">
- <RootNamespace>TapDriver_Package</RootNamespace>
- <VCTargetsPath Condition="'$(VCTargetsPath11)' != '' and '$(VisualStudioVersion)' == '11.0'">$(VCTargetsPath11)</VCTargetsPath>
- </PropertyGroup>
- <PropertyGroup Label="PropertySheets">
- <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
- <ConfigurationType>Utility</ConfigurationType>
- <DriverType>Package</DriverType>
- <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'" Label="Configuration">
- <TargetVersion>Windows8</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'" Label="Configuration">
- <TargetVersion>Windows8</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'" Label="Configuration">
- <TargetVersion>Windows7</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'" Label="Configuration">
- <TargetVersion>Windows7</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'" Label="Configuration">
- <TargetVersion>Vista</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'" Label="Configuration">
- <TargetVersion>Vista</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'" Label="Configuration">
- <TargetVersion>Windows8</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'" Label="Configuration">
- <TargetVersion>Windows8</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'" Label="Configuration">
- <TargetVersion>Windows7</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'" Label="Configuration">
- <TargetVersion>Windows7</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'" Label="Configuration">
- <TargetVersion>Vista</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'" Label="Configuration">
- <TargetVersion>Vista</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <PropertyGroup>
- <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
- <EnableDeployment>False</EnableDeployment>
- <RemoveDriver>True</RemoveDriver>
- <HardwareIdString />
- <CommandLine />
- <DeployFiles />
- <EnableVerifier>False</EnableVerifier>
- <AllDrivers>False</AllDrivers>
- <VerifyProjectOutput>True</VerifyProjectOutput>
- <VerifyDrivers />
- <VerifyFlags>133563</VerifyFlags>
- <PackageDir>$(OutDir)TapDriver Package</PackageDir>
- </PropertyGroup>
- <ItemDefinitionGroup>
- </ItemDefinitionGroup>
- <ItemGroup>
- <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\TapDriver\TapDriver.vcxproj">
- <Project>{689210b1-467c-4850-bb7d-2e10d5b4a3da}</Project>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/vsprojects/TapDriver Package/TapDriver Package.vcxproj.filters b/vsprojects/TapDriver Package/TapDriver Package.vcxproj.filters
deleted file mode 100644
index e1b34f2a..00000000
--- a/vsprojects/TapDriver Package/TapDriver Package.vcxproj.filters
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Driver Files">
- <UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier>
- <Extensions>inf;inv;inx;mof;mc;</Extensions>
- </Filter>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/vsprojects/TapDriver/TapDriver.vcxproj b/vsprojects/TapDriver/TapDriver.vcxproj
deleted file mode 100644
index 03357d5f..00000000
--- a/vsprojects/TapDriver/TapDriver.vcxproj
+++ /dev/null
@@ -1,352 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Win8 Debug|Win32">
- <Configuration>Win8 Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win8 Release|Win32">
- <Configuration>Win8 Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win7 Debug|Win32">
- <Configuration>Win7 Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win7 Release|Win32">
- <Configuration>Win7 Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Vista Debug|Win32">
- <Configuration>Vista Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Vista Release|Win32">
- <Configuration>Vista Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win8 Debug|x64">
- <Configuration>Win8 Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win8 Release|x64">
- <Configuration>Win8 Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win7 Debug|x64">
- <Configuration>Win7 Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Win7 Release|x64">
- <Configuration>Win7 Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Vista Debug|x64">
- <Configuration>Vista Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Vista Release|x64">
- <Configuration>Vista Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{689210B1-467C-4850-BB7D-2E10D5B4A3DA}</ProjectGuid>
- <TemplateGuid>{1bc93793-694f-48fe-9372-81e2b05556fd}</TemplateGuid>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
- <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
- <Configuration>Win8 Debug</Configuration>
- <Platform Condition="'$(Platform)' == ''">Win32</Platform>
- </PropertyGroup>
- <PropertyGroup Label="Globals">
- <RootNamespace>TapDriver</RootNamespace>
- <VCTargetsPath Condition="'$(VCTargetsPath11)' != '' and '$(VisualStudioVersion)' == '11.0'">$(VCTargetsPath11)</VCTargetsPath>
- </PropertyGroup>
- <PropertyGroup Label="PropertySheets">
- <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
- <ConfigurationType>Driver</ConfigurationType>
- <DriverType>KMDF</DriverType>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'" Label="Configuration">
- <TargetVersion>Windows8</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'" Label="Configuration">
- <TargetVersion>Windows8</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'" Label="Configuration">
- <TargetVersion>Windows7</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'" Label="Configuration">
- <TargetVersion>Windows7</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'" Label="Configuration">
- <TargetVersion>Vista</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'" Label="Configuration">
- <TargetVersion>Vista</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'" Label="Configuration">
- <TargetVersion>Windows8</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'" Label="Configuration">
- <TargetVersion>Windows8</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'" Label="Configuration">
- <TargetVersion>Windows7</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'" Label="Configuration">
- <TargetVersion>Windows7</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'" Label="Configuration">
- <TargetVersion>Vista</TargetVersion>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'" Label="Configuration">
- <TargetVersion>Vista</TargetVersion>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- <IntDir>$(Platform)\$(ConfigurationName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup>
- <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- <IntDir>$(Platform)\$(ConfigurationName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- <IntDir>$(Platform)\$(ConfigurationName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- <IntDir>$(Platform)\$(ConfigurationName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- <IntDir>$(Platform)\$(ConfigurationName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- <IntDir>$(Platform)\$(ConfigurationName)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
- <TargetName>ztTap100</TargetName>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(ConfigurationName)\</OutDir>
- </PropertyGroup>
- <ItemDefinitionGroup>
- <ClCompile>
- <WppEnabled>false</WppEnabled>
- <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
- <WppKernelMode>true</WppKernelMode>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">false</TreatWarningAsError>
- <DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">None</DebugInformationFormat>
- <DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">None</DebugInformationFormat>
- <DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">None</DebugInformationFormat>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">false</TreatWarningAsError>
- <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">Level2</WarningLevel>
- <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">false</TreatWarningAsError>
- <DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">None</DebugInformationFormat>
- <DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">None</DebugInformationFormat>
- <DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">None</DebugInformationFormat>
- </ClCompile>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">C:\WinDDK\7600.16385.1\lib\wnet\i386\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\i386\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">C:\WinDDK\7600.16385.1\lib\wnet\i386\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\i386\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">C:\WinDDK\7600.16385.1\lib\wnet\i386\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\i386\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">C:\WinDDK\7600.16385.1\lib\wnet\i386\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\i386\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">C:\WinDDK\7600.16385.1\lib\wnet\i386\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\i386\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">C:\WinDDK\7600.16385.1\lib\wnet\i386\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\i386\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'">C:\WinDDK\7600.16385.1\lib\wnet\amd64\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\amd64\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">C:\WinDDK\7600.16385.1\lib\wnet\amd64\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\amd64\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">C:\WinDDK\7600.16385.1\lib\wnet\amd64\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\amd64\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">C:\WinDDK\7600.16385.1\lib\wnet\amd64\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\amd64\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">C:\WinDDK\7600.16385.1\lib\wnet\amd64\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\amd64\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <Link>
- <AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">C:\WinDDK\7600.16385.1\lib\wnet\amd64\ndis.lib;C:\WinDDK\7600.16385.1\lib\wnet\amd64\ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <Inf Include="ztTap100.inf" />
- </ItemGroup>
- <ItemGroup>
- <FilesToPackage Include="$(TargetPath)" />
- <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dhcp.c">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="error.c">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="instance.c">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="macinfo.c">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="mem.c">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Vista Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="tapdrvr.c" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="config.h" />
- <ClInclude Include="constants.h" />
- <ClInclude Include="dhcp.h" />
- <ClInclude Include="endian.h" />
- <ClInclude Include="error.h" />
- <ClInclude Include="lock.h" />
- <ClInclude Include="macinfo.h" />
- <ClInclude Include="proto.h" />
- <ClInclude Include="prototypes.h" />
- <ClInclude Include="tap-windows.h" />
- <ClInclude Include="types.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/vsprojects/TapDriver/TapDriver.vcxproj.filters b/vsprojects/TapDriver/TapDriver.vcxproj.filters
deleted file mode 100644
index 4bac59db..00000000
--- a/vsprojects/TapDriver/TapDriver.vcxproj.filters
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <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="Driver Files">
- <UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier>
- <Extensions>inf;inv;inx;mof;mc;</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dhcp.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="error.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="instance.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="macinfo.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="mem.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="tapdrvr.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="constants.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="dhcp.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="endian.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="error.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="lock.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="macinfo.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="proto.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="prototypes.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="tap-windows.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="types.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="config.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <Inf Include="ztTap100.inf">
- <Filter>Driver Files</Filter>
- </Inf>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/vsprojects/TapDriver/config.h b/vsprojects/TapDriver/config.h
deleted file mode 100644
index 5a6ff247..00000000
--- a/vsprojects/TapDriver/config.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#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_TAP_WIN_MINOR 0
-#define PRODUCT_TAP_WIN_PROVIDER "ZeroTier Networks"
-#define PRODUCT_TAP_WIN_DEVICE_DESCRIPTION PRODUCT_NAME
-#define PRODUCT_TAP_WIN_RELDATE "08/01/2013"
-
-#define TAP_DRIVER_MAJOR_VERSION PRODUCT_TAP_WIN_MAJOR
-#define TAP_DRIVER_MINOR_VERSION PRODUCT_TAP_WIN_MINOR
diff --git a/vsprojects/TapDriver/constants.h b/vsprojects/TapDriver/constants.h
deleted file mode 100644
index 698dc629..00000000
--- a/vsprojects/TapDriver/constants.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-//====================================================================
-// Product and Version public settings
-//====================================================================
-
-#define PRODUCT_STRING PRODUCT_TAP_DEVICE_DESCRIPTION
-
-#define TAP_NDIS_MAJOR_VERSION 5
-#define TAP_NDIS_MINOR_VERSION 0
-
-//===========================================================
-// Driver constants
-//===========================================================
-
-#define ETHERNET_HEADER_SIZE (sizeof (ETH_HEADER))
-#define ETHERNET_MTU 2800 // ZeroTier One MTU
-#define ETHERNET_PACKET_SIZE (ETHERNET_MTU + ETHERNET_HEADER_SIZE)
-#define DEFAULT_PACKET_LOOKAHEAD (ETHERNET_PACKET_SIZE)
-
-#define NIC_MAX_MCAST_LIST 32 // Max length of multicast address list
-
-#define MINIMUM_MTU 576 // USE TCP Minimum MTU
-#define MAXIMUM_MTU 65536 // IP maximum MTU
-
-#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/vsprojects/TapDriver/dhcp.c b/vsprojects/TapDriver/dhcp.c
deleted file mode 100644
index f3c61d6f..00000000
--- a/vsprojects/TapDriver/dhcp.c
+++ /dev/null
@@ -1,603 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#if 0
-
-//=========================
-// Code to set DHCP options
-//=========================
-
-VOID
-SetDHCPOpt (DHCPMsg *m, void *data, unsigned int len)
-{
- if (!m->overflow)
- {
- if (m->optlen + len <= DHCP_OPTIONS_BUFFER_SIZE)
- {
- if (len)
- {
- NdisMoveMemory (m->msg.options + m->optlen, data, len);
- m->optlen += len;
- }
- }
- else
- {
- m->overflow = TRUE;
- }
- }
-}
-
-VOID
-SetDHCPOpt0 (DHCPMsg *msg, int type)
-{
- DHCPOPT0 opt;
- opt.type = (UCHAR) type;
- SetDHCPOpt (msg, &opt, sizeof (opt));
-}
-
-VOID
-SetDHCPOpt8 (DHCPMsg *msg, int type, ULONG data)
-{
- DHCPOPT8 opt;
- opt.type = (UCHAR) type;
- opt.len = sizeof (opt.data);
- opt.data = (UCHAR) data;
- SetDHCPOpt (msg, &opt, sizeof (opt));
-}
-
-VOID
-SetDHCPOpt32 (DHCPMsg *msg, int type, ULONG data)
-{
- DHCPOPT32 opt;
- opt.type = (UCHAR) type;
- opt.len = sizeof (opt.data);
- opt.data = data;
- SetDHCPOpt (msg, &opt, sizeof (opt));
-}
-
-//==============
-// Checksum code
-//==============
-
-USHORT
-ip_checksum (const UCHAR *buf, const int len_ip_header)
-{
- USHORT word16;
- ULONG sum = 0;
- int i;
-
- // make 16 bit words out of every two adjacent 8 bit words in the packet
- // and add them up
- for (i = 0; i < len_ip_header - 1; i += 2) {
- word16 = ((buf[i] << 8) & 0xFF00) + (buf[i+1] & 0xFF);
- sum += (ULONG) word16;
- }
-
- // take only 16 bits out of the 32 bit sum and add up the carries
- while (sum >> 16)
- sum = (sum & 0xFFFF) + (sum >> 16);
-
- // one's complement the result
- return ((USHORT) ~sum);
-}
-
-USHORT
-udp_checksum (const UCHAR *buf,
- const int len_udp,
- const UCHAR *src_addr,
- const UCHAR *dest_addr)
-{
- USHORT word16;
- ULONG sum = 0;
- int i;
-
- // make 16 bit words out of every two adjacent 8 bit words and
- // calculate the sum of all 16 bit words
- for (i = 0; i < len_udp; i += 2){
- word16 = ((buf[i] << 8) & 0xFF00) + ((i + 1 < len_udp) ? (buf[i+1] & 0xFF) : 0);
- sum += word16;
- }
-
- // add the UDP pseudo header which contains the IP source and destination addresses
- for (i = 0; i < 4; i += 2){
- word16 =((src_addr[i] << 8) & 0xFF00) + (src_addr[i+1] & 0xFF);
- sum += word16;
- }
- for (i = 0; i < 4; i += 2){
- word16 =((dest_addr[i] << 8) & 0xFF00) + (dest_addr[i+1] & 0xFF);
- sum += word16;
- }
-
- // the protocol number and the length of the UDP packet
- sum += (USHORT) IPPROTO_UDP + (USHORT) len_udp;
-
- // keep only the last 16 bits of the 32 bit calculated sum and add the carries
- while (sum >> 16)
- sum = (sum & 0xFFFF) + (sum >> 16);
-
- // Take the one's complement of sum
- return ((USHORT) ~sum);
-}
-
-//================================
-// Set IP and UDP packet checksums
-//================================
-
-VOID
-SetChecksumDHCPMsg (DHCPMsg *m)
-{
- // Set IP checksum
- m->msg.pre.ip.check = htons (ip_checksum ((UCHAR *) &m->msg.pre.ip, sizeof (IPHDR)));
-
- // Set UDP Checksum
- m->msg.pre.udp.check = htons (udp_checksum ((UCHAR *) &m->msg.pre.udp,
- sizeof (UDPHDR) + sizeof (DHCP) + m->optlen,
- (UCHAR *)&m->msg.pre.ip.saddr,
- (UCHAR *)&m->msg.pre.ip.daddr));
-}
-
-//===================
-// DHCP message tests
-//===================
-
-int
-GetDHCPMessageType (const DHCP *dhcp, const int optlen)
-{
- const UCHAR *p = (UCHAR *) (dhcp + 1);
- int i;
-
- for (i = 0; i < optlen; ++i)
- {
- const UCHAR type = p[i];
- const int room = optlen - i - 1;
- if (type == DHCP_END) // didn't find what we were looking for
- return -1;
- else if (type == DHCP_PAD) // no-operation
- ;
- else if (type == DHCP_MSG_TYPE) // what we are looking for
- {
- if (room >= 2)
- {
- if (p[i+1] == 1) // message length should be 1
- return p[i+2]; // return message type
- }
- return -1;
- }
- else // some other message
- {
- if (room >= 1)
- {
- const int len = p[i+1]; // get message length
- i += (len + 1); // advance to next message
- }
- }
- }
- return -1;
-}
-
-BOOLEAN
-DHCPMessageOurs (const TapAdapterPointer p_Adapter,
- const ETH_HEADER *eth,
- const IPHDR *ip,
- const UDPHDR *udp,
- const DHCP *dhcp)
-{
- // Must be UDPv4 protocol
- if (!(eth->proto == htons (ETH_P_IP) && ip->protocol == IPPROTO_UDP))
- return FALSE;
-
- // Source MAC must be our adapter
- if (!MAC_EQUAL (eth->src, p_Adapter->m_MAC))
- return FALSE;
-
- // Dest MAC must be either broadcast or our virtual DHCP server
- if (!(MAC_EQUAL (eth->dest, p_Adapter->m_MAC_Broadcast)
- || MAC_EQUAL (eth->dest, p_Adapter->m_dhcp_server_mac)))
- return FALSE;
-
- // Port numbers must be correct
- if (!(udp->dest == htons (BOOTPS_PORT)
- && udp->source == htons (BOOTPC_PORT)))
- return FALSE;
-
- // Hardware address must be MAC addr sized
- if (!(dhcp->hlen == sizeof (MACADDR)))
- return FALSE;
-
- // Hardware address must match our adapter
- if (!MAC_EQUAL (eth->src, dhcp->chaddr))
- return FALSE;
-
- return TRUE;
-}
-
-
-//=====================================================
-// Build all of DHCP packet except for DHCP options.
-// Assume that *p has been zeroed before we are called.
-//=====================================================
-
-VOID
-BuildDHCPPre (const TapAdapterPointer a,
- DHCPPre *p,
- const ETH_HEADER *eth,
- const IPHDR *ip,
- const UDPHDR *udp,
- const DHCP *dhcp,
- const int optlen,
- const int type)
-{
- // Should we broadcast or direct to a specific MAC / IP address?
- const BOOLEAN broadcast = (type == DHCPNAK
- || MAC_EQUAL (eth->dest, a->m_MAC_Broadcast));
- // Build ethernet header
-
- COPY_MAC (p->eth.src, a->m_dhcp_server_mac);
-
- if (broadcast)
- COPY_MAC (p->eth.dest, a->m_MAC_Broadcast);
- else
- COPY_MAC (p->eth.dest, eth->src);
-
- p->eth.proto = htons (ETH_P_IP);
-
- // Build IP header
-
- p->ip.version_len = (4 << 4) | (sizeof (IPHDR) >> 2);
- p->ip.tos = 0;
- p->ip.tot_len = htons (sizeof (IPHDR) + sizeof (UDPHDR) + sizeof (DHCP) + optlen);
- p->ip.id = 0;
- p->ip.frag_off = 0;
- p->ip.ttl = 16;
- p->ip.protocol = IPPROTO_UDP;
- p->ip.check = 0;
- p->ip.saddr = a->m_dhcp_server_ip;
-
- if (broadcast)
- p->ip.daddr = ~0;
- else
- p->ip.daddr = a->m_dhcp_addr;
-
- // Build UDP header
-
- p->udp.source = htons (BOOTPS_PORT);
- p->udp.dest = htons (BOOTPC_PORT);
- p->udp.len = htons (sizeof (UDPHDR) + sizeof (DHCP) + optlen);
- p->udp.check = 0;
-
- // Build DHCP response
-
- p->dhcp.op = BOOTREPLY;
- p->dhcp.htype = 1;
- p->dhcp.hlen = sizeof (MACADDR);
- p->dhcp.hops = 0;
- p->dhcp.xid = dhcp->xid;
- p->dhcp.secs = 0;
- p->dhcp.flags = 0;
- p->dhcp.ciaddr = 0;
-
- if (type == DHCPNAK)
- p->dhcp.yiaddr = 0;
- else
- p->dhcp.yiaddr = a->m_dhcp_addr;
-
- p->dhcp.siaddr = a->m_dhcp_server_ip;
- p->dhcp.giaddr = 0;
- COPY_MAC (p->dhcp.chaddr, eth->src);
- p->dhcp.magic = htonl (0x63825363);
-}
-//=============================
-// Build specific DHCP messages
-//=============================
-
-VOID
-SendDHCPMsg (const TapAdapterPointer a,
- const int type,
- const ETH_HEADER *eth,
- const IPHDR *ip,
- const UDPHDR *udp,
- const DHCP *dhcp)
-{
- DHCPMsg *pkt;
-
- if (!(type == DHCPOFFER || type == DHCPACK || type == DHCPNAK))
- {
- DEBUGP (("[TAP] SendDHCPMsg: Bad DHCP type: %d\n", type));
- return;
- }
-
- pkt = (DHCPMsg *) MemAlloc (sizeof (DHCPMsg), TRUE);
-
- if (pkt)
- {
- //-----------------------
- // Build DHCP options
- //-----------------------
-
- // Message Type
- SetDHCPOpt8 (pkt, DHCP_MSG_TYPE, type);
-
- // Server ID
- SetDHCPOpt32 (pkt, DHCP_SERVER_ID, a->m_dhcp_server_ip);
-
- if (type == DHCPOFFER || type == DHCPACK)
- {
- // Lease Time
- SetDHCPOpt32 (pkt, DHCP_LEASE_TIME, htonl (a->m_dhcp_lease_time));
-
- // Netmask
- SetDHCPOpt32 (pkt, DHCP_NETMASK, a->m_dhcp_netmask);
-
- // Other user-defined options
- SetDHCPOpt (pkt,
- a->m_dhcp_user_supplied_options_buffer,
- a->m_dhcp_user_supplied_options_buffer_len);
- }
-
- // End
- SetDHCPOpt0 (pkt, DHCP_END);
-
- if (!DHCPMSG_OVERFLOW (pkt))
- {
- // The initial part of the DHCP message (not including options) gets built here
- BuildDHCPPre (a,
- &pkt->msg.pre,
- eth,
- ip,
- udp,
- dhcp,
- DHCPMSG_LEN_OPT (pkt),
- type);
-
- SetChecksumDHCPMsg (pkt);
-
- DUMP_PACKET ("DHCPMsg",
- DHCPMSG_BUF (pkt),
- DHCPMSG_LEN_FULL (pkt));
-
- // Return DHCP response to kernel
- InjectPacketDeferred (a,
- DHCPMSG_BUF (pkt),
- DHCPMSG_LEN_FULL (pkt));
- }
- else
- {
- DEBUGP (("[TAP] SendDHCPMsg: DHCP buffer overflow\n"));
- }
-
- MemFree (pkt, sizeof (DHCPMsg));
- }
-}
-
-//===================================================================
-// Handle a BOOTPS packet produced by the local system to
-// resolve the address/netmask of this adapter.
-// If we are in TAP_WIN_IOCTL_CONFIG_DHCP_MASQ mode, reply
-// to the message. Return TRUE if we processed the passed
-// message, so that downstream stages can ignore it.
-//===================================================================
-
-BOOLEAN
-ProcessDHCP (TapAdapterPointer p_Adapter,
- const ETH_HEADER *eth,
- const IPHDR *ip,
- const UDPHDR *udp,
- const DHCP *dhcp,
- int optlen)
-{
- int msg_type;
-
- // Sanity check IP header
- if (!(ntohs (ip->tot_len) == sizeof (IPHDR) + sizeof (UDPHDR) + sizeof (DHCP) + optlen
- && (ntohs (ip->frag_off) & IP_OFFMASK) == 0))
- return TRUE;
-
- // Does this message belong to us?
- if (!DHCPMessageOurs (p_Adapter, eth, ip, udp, dhcp))
- return FALSE;
-
- msg_type = GetDHCPMessageType (dhcp, optlen);
-
- // Drop non-BOOTREQUEST messages
- if (dhcp->op != BOOTREQUEST)
- return TRUE;
-
- // Drop any messages except DHCPDISCOVER or DHCPREQUEST
- if (!(msg_type == DHCPDISCOVER || msg_type == DHCPREQUEST))
- return TRUE;
-
- // Should we reply with DHCPOFFER, DHCPACK, or DHCPNAK?
- if (msg_type == DHCPREQUEST
- && ((dhcp->ciaddr && dhcp->ciaddr != p_Adapter->m_dhcp_addr)
- || !p_Adapter->m_dhcp_received_discover
- || p_Adapter->m_dhcp_bad_requests >= BAD_DHCPREQUEST_NAK_THRESHOLD))
- SendDHCPMsg (p_Adapter,
- DHCPNAK,
- eth, ip, udp, dhcp);
- else
- SendDHCPMsg (p_Adapter,
- (msg_type == DHCPDISCOVER ? DHCPOFFER : DHCPACK),
- eth, ip, udp, dhcp);
-
- // Remember if we received a DHCPDISCOVER
- if (msg_type == DHCPDISCOVER)
- p_Adapter->m_dhcp_received_discover = TRUE;
-
- // Is this a bad DHCPREQUEST?
- if (msg_type == DHCPREQUEST && dhcp->ciaddr && dhcp->ciaddr != p_Adapter->m_dhcp_addr)
- ++p_Adapter->m_dhcp_bad_requests;
-
- return TRUE;
-}
-
-#if DBG
-
-const char *
-message_op_text (int op)
-{
- switch (op)
- {
- case BOOTREQUEST:
- return "BOOTREQUEST";
- case BOOTREPLY:
- return "BOOTREPLY";
- default:
- return "???";
- }
-}
-
-const char *
-message_type_text (int type)
-{
- switch (type)
- {
- case DHCPDISCOVER:
- return "DHCPDISCOVER";
- case DHCPOFFER:
- return "DHCPOFFER";
- case DHCPREQUEST:
- return "DHCPREQUEST";
- case DHCPDECLINE:
- return "DHCPDECLINE";
- case DHCPACK:
- return "DHCPACK";
- case DHCPNAK:
- return "DHCPNAK";
- case DHCPRELEASE:
- return "DHCPRELEASE";
- case DHCPINFORM:
- return "DHCPINFORM";
- default:
- return "???";
- }
-}
-
-const char *
-port_name (int port)
-{
- switch (port)
- {
- case BOOTPS_PORT:
- return "BOOTPS";
- case BOOTPC_PORT:
- return "BOOTPC";
- default:
- return "unknown";
- }
-}
-
-VOID
-DumpDHCP (const ETH_HEADER *eth,
- const IPHDR *ip,
- const UDPHDR *udp,
- const DHCP *dhcp,
- const int optlen)
-{
- DEBUGP ((" %s", message_op_text (dhcp->op)));
- DEBUGP ((" %s ", message_type_text (GetDHCPMessageType (dhcp, optlen))));
- PrIP (ip->saddr);
- DEBUGP ((":%s[", port_name (ntohs (udp->source))));
- PrMac (eth->src);
- DEBUGP (("] -> "));
- PrIP (ip->daddr);
- DEBUGP ((":%s[", port_name (ntohs (udp->dest))));
- PrMac (eth->dest);
- DEBUGP (("]"));
- if (dhcp->ciaddr)
- {
- DEBUGP ((" ci="));
- PrIP (dhcp->ciaddr);
- }
- if (dhcp->yiaddr)
- {
- DEBUGP ((" yi="));
- PrIP (dhcp->yiaddr);
- }
- if (dhcp->siaddr)
- {
- DEBUGP ((" si="));
- PrIP (dhcp->siaddr);
- }
- if (dhcp->hlen == sizeof (MACADDR))
- {
- DEBUGP ((" ch="));
- PrMac (dhcp->chaddr);
- }
-
- DEBUGP ((" xid=0x%08x", ntohl (dhcp->xid)));
-
- if (ntohl (dhcp->magic) != 0x63825363)
- DEBUGP ((" ma=0x%08x", ntohl (dhcp->magic)));
- if (dhcp->htype != 1)
- DEBUGP ((" htype=%d", dhcp->htype));
- if (dhcp->hops)
- DEBUGP ((" hops=%d", dhcp->hops));
- if (ntohs (dhcp->secs))
- DEBUGP ((" secs=%d", ntohs (dhcp->secs)));
- if (ntohs (dhcp->flags))
- DEBUGP ((" flags=0x%04x", ntohs (dhcp->flags)));
-
- // extra stuff
-
- if (ip->version_len != 0x45)
- DEBUGP ((" vl=0x%02x", ip->version_len));
- if (ntohs (ip->tot_len) != sizeof (IPHDR) + sizeof (UDPHDR) + sizeof (DHCP) + optlen)
- DEBUGP ((" tl=%d", ntohs (ip->tot_len)));
- if (ntohs (udp->len) != sizeof (UDPHDR) + sizeof (DHCP) + optlen)
- DEBUGP ((" ul=%d", ntohs (udp->len)));
-
- if (ip->tos)
- DEBUGP ((" tos=0x%02x", ip->tos));
- if (ntohs (ip->id))
- DEBUGP ((" id=0x%04x", ntohs (ip->id)));
- if (ntohs (ip->frag_off))
- DEBUGP ((" frag_off=0x%04x", ntohs (ip->frag_off)));
-
- DEBUGP ((" ttl=%d", ip->ttl));
- DEBUGP ((" ic=0x%04x [0x%04x]", ntohs (ip->check),
- ip_checksum ((UCHAR*)ip, sizeof (IPHDR))));
- DEBUGP ((" uc=0x%04x [0x%04x/%d]", ntohs (udp->check),
- udp_checksum ((UCHAR *) udp,
- sizeof (UDPHDR) + sizeof (DHCP) + optlen,
- (UCHAR *) &ip->saddr,
- (UCHAR *) &ip->daddr),
- optlen));
-
- // Options
- {
- const UCHAR *opt = (UCHAR *) (dhcp + 1);
- int i;
-
- DEBUGP ((" OPT"));
- for (i = 0; i < optlen; ++i)
- {
- const UCHAR data = opt[i];
- DEBUGP ((".%d", data));
- }
- }
-}
-
-#endif /* DBG */
-
-#endif
diff --git a/vsprojects/TapDriver/dhcp.h b/vsprojects/TapDriver/dhcp.h
deleted file mode 100644
index 92e5ca87..00000000
--- a/vsprojects/TapDriver/dhcp.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#if 0
-
-#pragma pack(1)
-
-//===================================================
-// How many bad DHCPREQUESTs do we receive before we
-// return a NAK?
-//
-// A bad DHCPREQUEST is defined to be one where the
-// requestor doesn't know its IP address.
-//===================================================
-
-#define BAD_DHCPREQUEST_NAK_THRESHOLD 3
-
-//==============================================
-// Maximum number of DHCP options bytes supplied
-//==============================================
-
-#define DHCP_USER_SUPPLIED_OPTIONS_BUFFER_SIZE 256
-#define DHCP_OPTIONS_BUFFER_SIZE 256
-
-//===================================
-// UDP port numbers of DHCP messages.
-//===================================
-
-#define BOOTPS_PORT 67
-#define BOOTPC_PORT 68
-
-//===========================
-// The DHCP message structure
-//===========================
-
-typedef struct {
-# define BOOTREQUEST 1
-# define BOOTREPLY 2
- UCHAR op; /* message op */
-
- UCHAR htype; /* hardware address type (e.g. '1' = 10Mb Ethernet) */
- UCHAR hlen; /* hardware address length (e.g. '6' for 10Mb Ethernet) */
- UCHAR hops; /* client sets to 0, may be used by relay agents */
- ULONG xid; /* transaction ID, chosen by client */
- USHORT secs; /* seconds since request process began, set by client */
- USHORT flags;
- ULONG ciaddr; /* client IP address, client sets if known */
- ULONG yiaddr; /* 'your' IP address -- server's response to client */
- ULONG siaddr; /* server IP address */
- ULONG giaddr; /* relay agent IP address */
- UCHAR chaddr[16]; /* client hardware address */
- UCHAR sname[64]; /* optional server host name */
- UCHAR file[128]; /* boot file name */
- ULONG magic; /* must be 0x63825363 (network order) */
-} DHCP;
-
-typedef struct {
- ETH_HEADER eth;
- IPHDR ip;
- UDPHDR udp;
- DHCP dhcp;
-} DHCPPre;
-
-typedef struct {
- DHCPPre pre;
- UCHAR options[DHCP_OPTIONS_BUFFER_SIZE];
-} DHCPFull;
-
-typedef struct {
- unsigned int optlen;
- BOOLEAN overflow;
- DHCPFull msg;
-} DHCPMsg;
-
-//===================
-// Macros for DHCPMSG
-//===================
-
-#define DHCPMSG_LEN_BASE(p) (sizeof (DHCPPre))
-#define DHCPMSG_LEN_OPT(p) ((p)->optlen)
-#define DHCPMSG_LEN_FULL(p) (DHCPMSG_LEN_BASE(p) + DHCPMSG_LEN_OPT(p))
-#define DHCPMSG_BUF(p) ((UCHAR*) &(p)->msg)
-#define DHCPMSG_OVERFLOW(p) ((p)->overflow)
-
-//========================================
-// structs to hold individual DHCP options
-//========================================
-
-typedef struct {
- UCHAR type;
-} DHCPOPT0;
-
-typedef struct {
- UCHAR type;
- UCHAR len;
- UCHAR data;
-} DHCPOPT8;
-
-typedef struct {
- UCHAR type;
- UCHAR len;
- ULONG data;
-} DHCPOPT32;
-
-#pragma pack()
-
-//==================
-// DHCP Option types
-//==================
-
-#define DHCP_MSG_TYPE 53 /* message type (u8) */
-#define DHCP_PARM_REQ 55 /* parameter request list: c1 (u8), ... */
-#define DHCP_CLIENT_ID 61 /* client ID: type (u8), i1 (u8), ... */
-#define DHCP_IP 50 /* requested IP addr (u32) */
-#define DHCP_NETMASK 1 /* subnet mask (u32) */
-#define DHCP_LEASE_TIME 51 /* lease time sec (u32) */
-#define DHCP_RENEW_TIME 58 /* renewal time sec (u32) */
-#define DHCP_REBIND_TIME 59 /* rebind time sec (u32) */
-#define DHCP_SERVER_ID 54 /* server ID: IP addr (u32) */
-#define DHCP_PAD 0
-#define DHCP_END 255
-
-//====================
-// DHCP Messages types
-//====================
-
-#define DHCPDISCOVER 1
-#define DHCPOFFER 2
-#define DHCPREQUEST 3
-#define DHCPDECLINE 4
-#define DHCPACK 5
-#define DHCPNAK 6
-#define DHCPRELEASE 7
-#define DHCPINFORM 8
-
-#if DBG
-
-VOID
-DumpDHCP (const ETH_HEADER *eth,
- const IPHDR *ip,
- const UDPHDR *udp,
- const DHCP *dhcp,
- const int optlen);
-
-#endif
-
-#endif
diff --git a/vsprojects/TapDriver/endian.h b/vsprojects/TapDriver/endian.h
deleted file mode 100644
index 0f7025d5..00000000
--- a/vsprojects/TapDriver/endian.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifdef TAP_LITTLE_ENDIAN
-#define ntohs(x) RtlUshortByteSwap(x)
-#define htons(x) RtlUshortByteSwap(x)
-#define ntohl(x) RtlUlongByteSwap(x)
-#define htonl(x) RtlUlongByteSwap(x)
-#else
-#define ntohs(x) ((USHORT)(x))
-#define htons(x) ((USHORT)(x))
-#define ntohl(x) ((ULONG)(x))
-#define htonl(x) ((ULONG)(x))
-#endif
diff --git a/vsprojects/TapDriver/error.c b/vsprojects/TapDriver/error.c
deleted file mode 100644
index e03fd114..00000000
--- a/vsprojects/TapDriver/error.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-//-----------------
-// DEBUGGING OUTPUT
-//-----------------
-
-const char *g_LastErrorFilename;
-int g_LastErrorLineNumber;
-
-#if DBG
-
-DebugOutput g_Debug;
-
-BOOLEAN
-NewlineExists (const char *str, int len)
-{
- while (len-- > 0)
- {
- const char c = *str++;
- if (c == '\n')
- return TRUE;
- else if (c == '\0')
- break;
- }
- return FALSE;
-}
-
-VOID
-MyDebugInit (unsigned int bufsiz)
-{
- NdisZeroMemory (&g_Debug, sizeof (g_Debug));
- g_Debug.text = (char *) MemAlloc (bufsiz, FALSE);
- if (g_Debug.text)
- g_Debug.capacity = bufsiz;
-}
-
-VOID
-MyDebugFree ()
-{
- if (g_Debug.text)
- MemFree (g_Debug.text, g_Debug.capacity);
- NdisZeroMemory (&g_Debug, sizeof (g_Debug));
-}
-
-VOID
-MyDebugPrint (const unsigned char* format, ...)
-{
- if (g_Debug.text && g_Debug.capacity > 0 && CAN_WE_PRINT)
- {
- BOOLEAN owned;
- ACQUIRE_MUTEX_ADAPTIVE (&g_Debug.lock, owned);
- if (owned)
- {
- const int remaining = (int)g_Debug.capacity - (int)g_Debug.out;
-
- if (remaining > 0)
- {
- va_list args;
- NTSTATUS status;
- char *end;
-
-#ifdef DBG_PRINT
- va_start (args, format);
- vDbgPrintEx (DPFLTR_IHVNETWORK_ID, DPFLTR_INFO_LEVEL, format, args);
- va_end (args);
-#endif
- va_start (args, format);
- status = RtlStringCchVPrintfExA (g_Debug.text + g_Debug.out,
- remaining,
- &end,
- NULL,
- STRSAFE_NO_TRUNCATION | STRSAFE_IGNORE_NULLS,
- format,
- args);
- va_end (args);
-va_start (args, format);
-vDbgPrintEx(DPFLTR_IHVDRIVER_ID , 1, format, args);
-va_end (args);
- if (status == STATUS_SUCCESS)
- g_Debug.out = (unsigned int) (end - g_Debug.text);
- else
- g_Debug.error = TRUE;
- }
- else
- g_Debug.error = TRUE;
-
- RELEASE_MUTEX (&g_Debug.lock);
- }
- else
- g_Debug.error = TRUE;
- }
-}
-
-BOOLEAN
-GetDebugLine (char *buf, const int len)
-{
- static const char *truncated = "[OUTPUT TRUNCATED]\n";
- BOOLEAN ret = FALSE;
-
- NdisZeroMemory (buf, len);
-
- if (g_Debug.text && g_Debug.capacity > 0)
- {
- BOOLEAN owned;
- ACQUIRE_MUTEX_ADAPTIVE (&g_Debug.lock, owned);
- if (owned)
- {
- int i = 0;
-
- if (g_Debug.error || NewlineExists (g_Debug.text + g_Debug.in, (int)g_Debug.out - (int)g_Debug.in))
- {
- while (i < (len - 1) && g_Debug.in < g_Debug.out)
- {
- const char c = g_Debug.text[g_Debug.in++];
- if (c == '\n')
- break;
- buf[i++] = c;
- }
- if (i < len)
- buf[i] = '\0';
- }
-
- if (!i)
- {
- if (g_Debug.in == g_Debug.out)
- {
- g_Debug.in = g_Debug.out = 0;
- if (g_Debug.error)
- {
- const unsigned int tlen = strlen (truncated);
- if (tlen < g_Debug.capacity)
- {
- NdisMoveMemory (g_Debug.text, truncated, tlen+1);
- g_Debug.out = tlen;
- }
- g_Debug.error = FALSE;
- }
- }
- }
- else
- ret = TRUE;
-
- RELEASE_MUTEX (&g_Debug.lock);
- }
- }
- return ret;
-}
-
-VOID
-MyAssert (const unsigned char *file, int line)
-{
- DEBUGP (("MYASSERT failed %s/%d\n", file, line));
- KeBugCheckEx (0x0F00BABA,
- (ULONG_PTR) line,
- (ULONG_PTR) 0,
- (ULONG_PTR) 0,
- (ULONG_PTR) 0);
-}
-
-VOID
-PrMac (const MACADDR mac)
-{
- DEBUGP (("%x:%x:%x:%x:%x:%x",
- mac[0], mac[1], mac[2],
- mac[3], mac[4], mac[5]));
-}
-
-VOID
-PrIP (IPADDR ip_addr)
-{
- const unsigned char *ip = (const unsigned char *) &ip_addr;
-
- DEBUGP (("%d.%d.%d.%d",
- ip[0], ip[1], ip[2], ip[3]));
-}
-
-const char *
-PrIPProto (int proto)
-{
- switch (proto)
- {
- case IPPROTO_UDP:
- return "UDP";
- case IPPROTO_TCP:
- return "TCP";
- case IPPROTO_ICMP:
- return "ICMP";
- case IPPROTO_IGMP:
- return "IGMP";
- default:
- return "???";
- }
-}
-
-VOID
-DumpARP (const char *prefix, const ARP_PACKET *arp)
-{
- DEBUGP (("%s ARP src=", prefix));
- PrMac (arp->m_MAC_Source);
- DEBUGP ((" dest="));
- PrMac (arp->m_MAC_Destination);
- DEBUGP ((" OP=0x%04x",
- (int)ntohs(arp->m_ARP_Operation)));
- DEBUGP ((" M=0x%04x(%d)",
- (int)ntohs(arp->m_MAC_AddressType),
- (int)arp->m_MAC_AddressSize));
- DEBUGP ((" P=0x%04x(%d)",
- (int)ntohs(arp->m_PROTO_AddressType),
- (int)arp->m_PROTO_AddressSize));
-
- DEBUGP ((" MacSrc="));
- PrMac (arp->m_ARP_MAC_Source);
- DEBUGP ((" MacDest="));
- PrMac (arp->m_ARP_MAC_Destination);
-
- DEBUGP ((" IPSrc="));
- PrIP (arp->m_ARP_IP_Source);
- DEBUGP ((" IPDest="));
- PrIP (arp->m_ARP_IP_Destination);
-
- DEBUGP (("\n"));
-}
-
-struct ethpayload {
- ETH_HEADER eth;
- UCHAR payload[DEFAULT_PACKET_LOOKAHEAD];
-};
-
-VOID
-DumpPacket2 (const char *prefix,
- const ETH_HEADER *eth,
- const unsigned char *data,
- unsigned int len)
-{
- struct ethpayload *ep = (struct ethpayload *) MemAlloc (sizeof (struct ethpayload), TRUE);
- if (ep)
- {
- if (len > DEFAULT_PACKET_LOOKAHEAD)
- len = DEFAULT_PACKET_LOOKAHEAD;
- ep->eth = *eth;
- NdisMoveMemory (ep->payload, data, len);
- DumpPacket (prefix, (unsigned char *) ep, sizeof (ETH_HEADER) + len);
- MemFree (ep, sizeof (struct ethpayload));
- }
-}
-
-VOID
-DumpPacket (const char *prefix,
- const unsigned char *data,
- unsigned int len)
-{
- const ETH_HEADER *eth = (const ETH_HEADER *) data;
- const IPHDR *ip = (const IPHDR *) (data + sizeof (ETH_HEADER));
-
- if (len < sizeof (ETH_HEADER))
- {
- DEBUGP (("%s TRUNCATED PACKET LEN=%d\n", prefix, len));
- return;
- }
-
- // ARP Packet?
- if (len >= sizeof (ARP_PACKET) && eth->proto == htons (ETH_P_ARP))
- {
- DumpARP (prefix, (const ARP_PACKET *) data);
- return;
- }
-
- // IPv4 packet?
- if (len >= (sizeof (IPHDR) + sizeof (ETH_HEADER))
- && eth->proto == htons (ETH_P_IP)
- && IPH_GET_VER (ip->version_len) == 4)
- {
- const int hlen = IPH_GET_LEN (ip->version_len);
- const int blen = len - sizeof (ETH_HEADER);
- BOOLEAN did = FALSE;
-
- DEBUGP (("%s IPv4 %s[%d]", prefix, PrIPProto (ip->protocol), len));
-
- if (!(ntohs (ip->tot_len) == blen && hlen <= blen))
- {
- DEBUGP ((" XXX"));
- return;
- }
-
- // TCP packet?
- if (ip->protocol == IPPROTO_TCP
- && blen - hlen >= (sizeof (TCPHDR)))
- {
- const TCPHDR *tcp = (TCPHDR *) (data + sizeof (ETH_HEADER) + hlen);
- DEBUGP ((" "));
- PrIP (ip->saddr);
- DEBUGP ((":%d", ntohs (tcp->source)));
- DEBUGP ((" -> "));
- PrIP (ip->daddr);
- DEBUGP ((":%d", ntohs (tcp->dest)));
- did = TRUE;
- }
-
- // UDP packet?
- else if ((ntohs (ip->frag_off) & IP_OFFMASK) == 0
- && ip->protocol == IPPROTO_UDP
- && blen - hlen >= (sizeof (UDPHDR)))
- {
- const UDPHDR *udp = (UDPHDR *) (data + sizeof (ETH_HEADER) + hlen);
-
-#if 0
- // DHCP packet?
- if ((udp->dest == htons (BOOTPC_PORT) || udp->dest == htons (BOOTPS_PORT))
- && blen - hlen >= (sizeof (UDPHDR) + sizeof (DHCP)))
- {
- const DHCP *dhcp = (DHCP *) (data
- + hlen
- + sizeof (ETH_HEADER)
- + sizeof (UDPHDR));
-
- int optlen = len
- - sizeof (ETH_HEADER)
- - hlen
- - sizeof (UDPHDR)
- - sizeof (DHCP);
-
- if (optlen < 0)
- optlen = 0;
-
- DumpDHCP (eth, ip, udp, dhcp, optlen);
- did = TRUE;
- }
-#endif
-
- if (!did)
- {
- DEBUGP ((" "));
- PrIP (ip->saddr);
- DEBUGP ((":%d", ntohs (udp->source)));
- DEBUGP ((" -> "));
- PrIP (ip->daddr);
- DEBUGP ((":%d", ntohs (udp->dest)));
- did = TRUE;
- }
- }
-
- if (!did)
- {
- DEBUGP ((" ipproto=%d ", ip->protocol));
- PrIP (ip->saddr);
- DEBUGP ((" -> "));
- PrIP (ip->daddr);
- }
-
- DEBUGP (("\n"));
- return;
- }
-
- {
- DEBUGP (("%s ??? src=", prefix));
- PrMac (eth->src);
- DEBUGP ((" dest="));
- PrMac (eth->dest);
- DEBUGP ((" proto=0x%04x len=%d\n",
- (int) ntohs(eth->proto),
- len));
- }
-}
-
-#endif
diff --git a/vsprojects/TapDriver/error.h b/vsprojects/TapDriver/error.h
deleted file mode 100644
index 47f436c5..00000000
--- a/vsprojects/TapDriver/error.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-//-----------------
-// DEBUGGING OUTPUT
-//-----------------
-
-#define NOTE_ERROR() \
-{ \
- g_LastErrorFilename = __FILE__; \
- g_LastErrorLineNumber = __LINE__; \
-}
-
-#if DBG
-
-typedef struct {
- unsigned int in;
- unsigned int out;
- unsigned int capacity;
- char *text;
- BOOLEAN error;
- MUTEX lock;
-} DebugOutput;
-
-VOID MyDebugPrint (const unsigned char* format, ...);
-
-VOID MyAssert (const unsigned char *file, int line);
-
-VOID DumpPacket (const char *prefix,
- const unsigned char *data,
- unsigned int len);
-
-VOID DumpPacket2 (const char *prefix,
- const ETH_HEADER *eth,
- const unsigned char *data,
- unsigned int len);
-
-#define CAN_WE_PRINT (DEBUGP_AT_DISPATCH || KeGetCurrentIrql () < DISPATCH_LEVEL)
-
-#if ALSO_DBGPRINT
-#define DEBUGP(fmt) { MyDebugPrint fmt; if (CAN_WE_PRINT) DbgPrint fmt; }
-#else
-#define DEBUGP(fmt) { MyDebugPrint fmt; }
-#endif
-
-#define MYASSERT(exp) \
-{ \
- if (!(exp)) \
- { \
- MyAssert(__FILE__, __LINE__); \
- } \
-}
-
-#define DUMP_PACKET(prefix, data, len) \
- DumpPacket (prefix, data, len)
-
-#define DUMP_PACKET2(prefix, eth, data, len) \
- DumpPacket2 (prefix, eth, data, len)
-
-#else
-
-#define DEBUGP(fmt)
-#define MYASSERT(exp)
-#define DUMP_PACKET(prefix, data, len)
-#define DUMP_PACKET2(prefix, eth, data, len)
-
-#endif
diff --git a/vsprojects/TapDriver/instance.c b/vsprojects/TapDriver/instance.c
deleted file mode 100644
index 33ef878f..00000000
--- a/vsprojects/TapDriver/instance.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#define INSTANCE_KEY(a) ((PVOID)((a)->m_Extension.m_TapDevice))
-
-#define N_INSTANCE_BUCKETS 256
-
-typedef struct _INSTANCE {
- struct _INSTANCE *next;
- TapAdapterPointer m_Adapter;
-} INSTANCE;
-
-typedef struct {
- INSTANCE *list;
- MUTEX lock;
-} INSTANCE_BUCKET;
-
-typedef struct {
- INSTANCE_BUCKET buckets[N_INSTANCE_BUCKETS];
-} INSTANCE_HASH;
-
-INSTANCE_HASH *g_InstanceHash = NULL;
-
-// must return a hash >= 0 and < N_INSTANCE_BUCKETS
-int
-InstanceHashValue (PVOID addr)
-{
- UCHAR *p = (UCHAR *) &addr;
-
- if (sizeof (addr) == 4)
- return p[0] ^ p[1] ^ p[2] ^ p[3];
- else if (sizeof (addr) == 8)
- return p[0] ^ p[1] ^ p[2] ^ p[3] ^ p[4] ^ p[5] ^ p[6] ^ p[7];
- else
- {
- MYASSERT (0);
- }
-}
-
-BOOLEAN
-InitInstanceList (VOID)
-{
- MYASSERT (g_InstanceHash == NULL);
- g_InstanceHash = MemAlloc (sizeof (INSTANCE_HASH), TRUE);
- if (g_InstanceHash)
- {
- int i;
- for (i = 0; i < N_INSTANCE_BUCKETS; ++i)
- INIT_MUTEX (&g_InstanceHash->buckets[i].lock);
- return TRUE;
- }
- else
- return FALSE;
-}
-
-int
-NInstances (VOID)
-{
- int i, n = 0;
-
- if (g_InstanceHash)
- {
- for (i = 0; i < N_INSTANCE_BUCKETS; ++i)
- {
- BOOLEAN got_lock;
- INSTANCE_BUCKET *ib = &g_InstanceHash->buckets[i];
- ACQUIRE_MUTEX_ADAPTIVE (&ib->lock, got_lock);
-
- if (got_lock)
- {
- INSTANCE *current;
- for (current = ib->list; current != NULL; current = current->next)
- ++n;
- RELEASE_MUTEX (&ib->lock);
- }
- else
- return -1;
- }
- }
-
- return n;
-}
-
-int
-InstanceMaxBucketSize (VOID)
-{
- int i, n = 0;
-
- if (g_InstanceHash)
- {
- for (i = 0; i < N_INSTANCE_BUCKETS; ++i)
- {
- BOOLEAN got_lock;
- int bucket_size = 0;
- INSTANCE_BUCKET *ib = &g_InstanceHash->buckets[i];
- ACQUIRE_MUTEX_ADAPTIVE (&ib->lock, got_lock);
-
- if (got_lock)
- {
- INSTANCE *current;
- for (current = ib->list; current != NULL; current = current->next)
- ++bucket_size;
- if (bucket_size > n)
- n = bucket_size;
- RELEASE_MUTEX (&ib->lock);
- }
- else
- return -1;
- }
- }
-
- return n;
-}
-
-VOID
-FreeInstanceList (VOID)
-{
- if (g_InstanceHash)
- {
- MYASSERT (NInstances() == 0);
- MemFree (g_InstanceHash, sizeof (INSTANCE_HASH));
- g_InstanceHash = NULL;
- }
-}
-
-BOOLEAN
-AddAdapterToInstanceList (TapAdapterPointer p_Adapter)
-{
- BOOLEAN got_lock;
- BOOLEAN ret = FALSE;
- const int hash = InstanceHashValue(INSTANCE_KEY(p_Adapter));
- INSTANCE_BUCKET *ib = &g_InstanceHash->buckets[hash];
-
- DEBUGP (("[TAP] AddAdapterToInstanceList hash=%d\n", hash));
-
- ACQUIRE_MUTEX_ADAPTIVE (&ib->lock, got_lock);
-
- if (got_lock)
- {
- INSTANCE *i = MemAlloc (sizeof (INSTANCE), FALSE);
- if (i)
- {
- MYASSERT (p_Adapter);
- i->m_Adapter = p_Adapter;
- i->next = ib->list;
- ib->list = i;
- ret = TRUE;
- }
- RELEASE_MUTEX (&ib->lock);
- }
-
- return ret;
-}
-
-BOOLEAN
-RemoveAdapterFromInstanceList (TapAdapterPointer p_Adapter)
-{
- BOOLEAN got_lock;
- BOOLEAN ret = FALSE;
- INSTANCE_BUCKET *ib = &g_InstanceHash->buckets[InstanceHashValue(INSTANCE_KEY(p_Adapter))];
-
- ACQUIRE_MUTEX_ADAPTIVE (&ib->lock, got_lock);
-
- if (got_lock)
- {
- INSTANCE *current, *prev=NULL;
- for (current = ib->list; current != NULL; current = current->next)
- {
- if (current->m_Adapter == p_Adapter) // found match
- {
- if (prev)
- prev->next = current->next;
- else
- ib->list = current->next;
- MemFree (current->m_Adapter, sizeof (TapAdapter));
- MemFree (current, sizeof (INSTANCE));
- ret = TRUE;
- break;
- }
- prev = current;
- }
- RELEASE_MUTEX (&ib->lock);
- }
-
- return ret;
-}
-
-TapAdapterPointer
-LookupAdapterInInstanceList (PDEVICE_OBJECT p_DeviceObject)
-{
- BOOLEAN got_lock;
- TapAdapterPointer ret = NULL;
- INSTANCE_BUCKET *ib = &g_InstanceHash->buckets[InstanceHashValue((PVOID)p_DeviceObject)];
-
- ACQUIRE_MUTEX_ADAPTIVE (&ib->lock, got_lock);
-
- if (got_lock)
- {
- INSTANCE *current, *prev=NULL;
- for (current = ib->list; current != NULL; current = current->next)
- {
- if (p_DeviceObject == INSTANCE_KEY (current->m_Adapter)) // found match
- {
- // move it to head of list
- if (prev)
- {
- prev->next = current->next;
- current->next = ib->list;
- ib->list = current;
- }
- ret = ib->list->m_Adapter;
- break;
- }
- prev = current;
- }
- RELEASE_MUTEX (&ib->lock);
- }
-
- return ret;
-}
diff --git a/vsprojects/TapDriver/lock.h b/vsprojects/TapDriver/lock.h
deleted file mode 100644
index e2a2029e..00000000
--- a/vsprojects/TapDriver/lock.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-typedef struct
-{
- volatile long count;
-} MUTEX;
-
-#define MUTEX_SLEEP_TIME 10000 // microseconds
-
-#define INIT_MUTEX(m) { (m)->count = 0; }
-
-#define ACQUIRE_MUTEX_BLOCKING(m) \
-{ \
- while (NdisInterlockedIncrement (&((m)->count)) != 1) \
- { \
- NdisInterlockedDecrement(&((m)->count)); \
- NdisMSleep(MUTEX_SLEEP_TIME); \
- } \
-}
-
-#define RELEASE_MUTEX(m) \
-{ \
- NdisInterlockedDecrement(&((m)->count)); \
-}
-
-#define ACQUIRE_MUTEX_NONBLOCKING(m, result) \
-{ \
- if (NdisInterlockedIncrement (&((m)->count)) != 1) \
- { \
- NdisInterlockedDecrement(&((m)->count)); \
- result = FALSE; \
- } \
- else \
- { \
- result = TRUE; \
- } \
-}
-
-#define ACQUIRE_MUTEX_ADAPTIVE(m, result) \
-{ \
- result = TRUE; \
- while (NdisInterlockedIncrement (&((m)->count)) != 1) \
- { \
- NdisInterlockedDecrement(&((m)->count)); \
- if (KeGetCurrentIrql () < DISPATCH_LEVEL) \
- NdisMSleep(MUTEX_SLEEP_TIME); \
- else \
- { \
- result = FALSE; \
- break; \
- } \
- } \
-}
diff --git a/vsprojects/TapDriver/macinfo.c b/vsprojects/TapDriver/macinfo.c
deleted file mode 100644
index fca53079..00000000
--- a/vsprojects/TapDriver/macinfo.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "macinfo.h"
-
-int
-HexStringToDecimalInt (const int p_Character)
-{
- int l_Value = 0;
-
- if (p_Character >= 'A' && p_Character <= 'F')
- l_Value = (p_Character - 'A') + 10;
- else if (p_Character >= 'a' && p_Character <= 'f')
- l_Value = (p_Character - 'a') + 10;
- else if (p_Character >= '0' && p_Character <= '9')
- l_Value = p_Character - '0';
-
- return l_Value;
-}
-
-BOOLEAN
-ParseMAC (MACADDR dest, const char *src)
-{
- int c;
- int mac_index = 0;
- BOOLEAN high_digit = FALSE;
- int delim_action = 1;
-
- MYASSERT (src);
- MYASSERT (dest);
-
- CLEAR_MAC (dest);
-
- while (c = *src++)
- {
- if (IsMacDelimiter (c))
- {
- mac_index += delim_action;
- high_digit = FALSE;
- delim_action = 1;
- }
- else if (IsHexDigit (c))
- {
- const int digit = HexStringToDecimalInt (c);
- if (mac_index < sizeof (MACADDR))
- {
- if (!high_digit)
- {
- dest[mac_index] = (char)(digit);
- high_digit = TRUE;
- delim_action = 1;
- }
- else
- {
- dest[mac_index] = (char)(dest[mac_index] * 16 + digit);
- ++mac_index;
- high_digit = FALSE;
- delim_action = 0;
- }
- }
- else
- return FALSE;
- }
- else
- return FALSE;
- }
-
- return (mac_index + delim_action) >= sizeof (MACADDR);
-}
-
-/*
- * Generate a MAC using the GUID in the adapter name.
- *
- * The mac is constructed as 00:FF:xx:xx:xx:xx where
- * the Xs are taken from the first 32 bits of the GUID in the
- * adapter name. This is similar to the Linux 2.4 tap MAC
- * generator, except linux uses 32 random bits for the Xs.
- *
- * In general, this solution is reasonable for most
- * applications except for very large bridged TAP networks,
- * where the probability of address collisions becomes more
- * than infintesimal.
- *
- * Using the well-known "birthday paradox", on a 1000 node
- * network the probability of collision would be
- * 0.000116292153. On a 10,000 node network, the probability
- * of collision would be 0.01157288998621678766.
- */
-
-VOID GenerateRandomMac (MACADDR mac, const unsigned char *adapter_name)
-{
- unsigned const char *cp = adapter_name;
- unsigned char c;
- unsigned int i = 2;
- unsigned int byte = 0;
- int brace = 0;
- int state = 0;
-
- CLEAR_MAC (mac);
-
- mac[0] = 0x00;
- mac[1] = 0xFF;
-
- while (c = *cp++)
- {
- if (i >= sizeof (MACADDR))
- break;
- if (c == '{')
- brace = 1;
- if (IsHexDigit (c) && brace)
- {
- const unsigned int digit = HexStringToDecimalInt (c);
- if (state)
- {
- byte <<= 4;
- byte |= digit;
- mac[i++] = (unsigned char) byte;
- state = 0;
- }
- else
- {
- byte = digit;
- state = 1;
- }
- }
- }
-}
-
-VOID GenerateRelatedMAC (MACADDR dest, const MACADDR src, const int delta)
-{
- COPY_MAC (dest, src);
- dest[2] += (UCHAR) delta;
-}
diff --git a/vsprojects/TapDriver/macinfo.h b/vsprojects/TapDriver/macinfo.h
deleted file mode 100644
index ba843e8c..00000000
--- a/vsprojects/TapDriver/macinfo.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef MacInfoDefined
-#define MacInfoDefined
-
-//===================================================================================
-// Macros
-//===================================================================================
-#define IsMacDelimiter(a) (a == ':' || a == '-' || a == '.')
-#define IsHexDigit(c) ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'))
-
-#define COPY_MAC(dest, src) NdisMoveMemory ((dest), (src), sizeof (MACADDR))
-#define CLEAR_MAC(dest) NdisZeroMemory ((dest), sizeof (MACADDR))
-#define MAC_EQUAL(a,b) (memcmp ((a), (b), sizeof (MACADDR)) == 0)
-
-#endif
diff --git a/vsprojects/TapDriver/mem.c b/vsprojects/TapDriver/mem.c
deleted file mode 100644
index c56304cc..00000000
--- a/vsprojects/TapDriver/mem.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-//------------------
-// Memory Management
-//------------------
-
-PVOID
-MemAlloc (ULONG p_Size, BOOLEAN zero)
-{
- PVOID l_Return = NULL;
-
- if (p_Size)
- {
- __try
- {
- if (NdisAllocateMemoryWithTag (&l_Return, p_Size, 'APAT')
- == NDIS_STATUS_SUCCESS)
- {
- if (zero)
- NdisZeroMemory (l_Return, p_Size);
- }
- else
- l_Return = NULL;
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- l_Return = NULL;
- }
- }
-
- return l_Return;
-}
-
-VOID
-MemFree (PVOID p_Addr, ULONG p_Size)
-{
- if (p_Addr && p_Size)
- {
- __try
- {
-#if DBG
- NdisZeroMemory (p_Addr, p_Size);
-#endif
- NdisFreeMemory (p_Addr, p_Size, 0);
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- }
- }
-}
-
-/*
- * Circular queue management routines.
- */
-
-#define QUEUE_BYTE_ALLOCATION(size) \
- (sizeof (Queue) + (size * sizeof (PVOID)))
-
-#define QUEUE_ADD_INDEX(var, inc) \
-{ \
- var += inc; \
- if (var >= q->capacity) \
- var -= q->capacity; \
- MYASSERT (var < q->capacity); \
-}
-
-#define QUEUE_SANITY_CHECK() \
- MYASSERT (q != NULL && q->base < q->capacity && q->size <= q->capacity)
-
-#define QueueCount(q) (q->size)
-
-#define UPDATE_MAX_SIZE() \
-{ \
- if (q->size > q->max_size) \
- q->max_size = q->size; \
-}
-
-Queue *
-QueueInit (ULONG capacity)
-{
- Queue *q;
-
- MYASSERT (capacity > 0);
- q = (Queue *) MemAlloc (QUEUE_BYTE_ALLOCATION (capacity), TRUE);
- if (!q)
- return NULL;
-
- q->base = q->size = 0;
- q->capacity = capacity;
- q->max_size = 0;
- return q;
-}
-
-VOID
-QueueFree (Queue *q)
-{
- if (q)
- {
- QUEUE_SANITY_CHECK ();
- MemFree (q, QUEUE_BYTE_ALLOCATION (q->capacity));
- }
-}
-
-PVOID
-QueuePush (Queue *q, PVOID item)
-{
- ULONG dest;
- QUEUE_SANITY_CHECK ();
- if (q->size == q->capacity)
- return NULL;
- dest = q->base;
- QUEUE_ADD_INDEX (dest, q->size);
- q->data[dest] = item;
- ++q->size;
- UPDATE_MAX_SIZE();
- return item;
-}
-
-PVOID
-QueuePop (Queue *q)
-{
- ULONG oldbase;
- QUEUE_SANITY_CHECK ();
- if (!q->size)
- return NULL;
- oldbase = q->base;
- QUEUE_ADD_INDEX (q->base, 1);
- --q->size;
- UPDATE_MAX_SIZE();
- return q->data[oldbase];
-}
-
-PVOID
-QueueExtract (Queue *q, PVOID item)
-{
- ULONG src, dest, count, n;
- QUEUE_SANITY_CHECK ();
- n = 0;
- src = dest = q->base;
- count = q->size;
- while (count--)
- {
- if (item == q->data[src])
- {
- ++n;
- --q->size;
- }
- else
- {
- q->data[dest] = q->data[src];
- QUEUE_ADD_INDEX (dest, 1);
- }
- QUEUE_ADD_INDEX (src, 1);
- }
- if (n)
- return item;
- else
- return NULL;
-}
-
-#undef QUEUE_BYTE_ALLOCATION
-#undef QUEUE_ADD_INDEX
-#undef QUEUE_SANITY_CHECK
-#undef UPDATE_MAX_SIZE
diff --git a/vsprojects/TapDriver/proto.h b/vsprojects/TapDriver/proto.h
deleted file mode 100644
index 71916a96..00000000
--- a/vsprojects/TapDriver/proto.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-//============================================================
-// MAC address, Ethernet header, and ARP
-//============================================================
-
-#pragma pack(1)
-
-#define IP_HEADER_SIZE 20
-#define IPV6_HEADER_SIZE 40
-
-typedef unsigned char MACADDR [6];
-typedef unsigned long IPADDR;
-typedef unsigned char IPV6ADDR [16];
-
-//-----------------
-// Ethernet address
-//-----------------
-
-typedef struct {
- MACADDR addr;
-} ETH_ADDR;
-
-typedef struct {
- ETH_ADDR list[NIC_MAX_MCAST_LIST];
-} MC_LIST;
-
-//----------------
-// Ethernet header
-//----------------
-
-typedef struct
-{
- MACADDR dest; /* destination eth addr */
- MACADDR src; /* source ether addr */
-
-# define ETH_P_IP 0x0800 /* IPv4 protocol */
-# define ETH_P_IPV6 0x86DD /* IPv6 protocol */
-# define ETH_P_ARP 0x0806 /* ARP protocol */
- USHORT proto; /* packet type ID field */
-} ETH_HEADER, *PETH_HEADER;
-
-//----------------
-// ARP packet
-//----------------
-
-typedef struct
- {
- MACADDR m_MAC_Destination; // Reverse these two
- MACADDR m_MAC_Source; // to answer ARP requests
- USHORT m_Proto; // 0x0806
-
-# define MAC_ADDR_TYPE 0x0001
- USHORT m_MAC_AddressType; // 0x0001
-
- USHORT m_PROTO_AddressType; // 0x0800
- UCHAR m_MAC_AddressSize; // 0x06
- UCHAR m_PROTO_AddressSize; // 0x04
-
-# define ARP_REQUEST 0x0001
-# define ARP_REPLY 0x0002
- USHORT m_ARP_Operation; // 0x0001 for ARP request, 0x0002 for ARP reply
-
- MACADDR m_ARP_MAC_Source;
- IPADDR m_ARP_IP_Source;
- MACADDR m_ARP_MAC_Destination;
- IPADDR m_ARP_IP_Destination;
- }
-ARP_PACKET, *PARP_PACKET;
-
-//----------
-// IP Header
-//----------
-
-typedef struct {
-# define IPH_GET_VER(v) (((v) >> 4) & 0x0F)
-# define IPH_GET_LEN(v) (((v) & 0x0F) << 2)
- UCHAR version_len;
-
- UCHAR tos;
- USHORT tot_len;
- USHORT id;
-
-# define IP_OFFMASK 0x1fff
- USHORT frag_off;
-
- UCHAR ttl;
-
-# define IPPROTO_UDP 17 /* UDP protocol */
-# define IPPROTO_TCP 6 /* TCP protocol */
-# define IPPROTO_ICMP 1 /* ICMP protocol */
-# define IPPROTO_IGMP 2 /* IGMP protocol */
- UCHAR protocol;
-
- USHORT check;
- ULONG saddr;
- ULONG daddr;
- /* The options start here. */
-} IPHDR;
-
-//-----------
-// UDP header
-//-----------
-
-typedef struct {
- USHORT source;
- USHORT dest;
- USHORT len;
- USHORT check;
-} UDPHDR;
-
-//--------------------------
-// TCP header, per RFC 793.
-//--------------------------
-
-typedef struct {
- USHORT source; /* source port */
- USHORT dest; /* destination port */
- ULONG seq; /* sequence number */
- ULONG ack_seq; /* acknowledgement number */
-
-# define TCPH_GET_DOFF(d) (((d) & 0xF0) >> 2)
- UCHAR doff_res;
-
-# define TCPH_FIN_MASK (1<<0)
-# define TCPH_SYN_MASK (1<<1)
-# define TCPH_RST_MASK (1<<2)
-# define TCPH_PSH_MASK (1<<3)
-# define TCPH_ACK_MASK (1<<4)
-# define TCPH_URG_MASK (1<<5)
-# define TCPH_ECE_MASK (1<<6)
-# define TCPH_CWR_MASK (1<<7)
- UCHAR flags;
-
- USHORT window;
- USHORT check;
- USHORT urg_ptr;
-} TCPHDR;
-
-#define TCPOPT_EOL 0
-#define TCPOPT_NOP 1
-#define TCPOPT_MAXSEG 2
-#define TCPOLEN_MAXSEG 4
-
-//------------
-// IPv6 Header
-//------------
-
-typedef struct {
- UCHAR version_prio;
- UCHAR flow_lbl[3];
- USHORT payload_len;
-# define IPPROTO_ICMPV6 0x3a /* ICMP protocol v6 */
- UCHAR nexthdr;
- UCHAR hop_limit;
- IPV6ADDR saddr;
- IPV6ADDR daddr;
-} IPV6HDR;
-
-//--------------------------------------------
-// IPCMPv6 NS/NA Packets (RFC4443 and RFC4861)
-//--------------------------------------------
-
-// Neighbor Solictiation - RFC 4861, 4.3
-// (this is just the ICMPv6 part of the packet)
-typedef struct {
- UCHAR type;
-# define ICMPV6_TYPE_NS 135 // neighbour solicitation
- UCHAR code;
-# define ICMPV6_CODE_0 0 // no specific sub-code for NS/NA
- USHORT checksum;
- ULONG reserved;
- IPV6ADDR target_addr;
-} ICMPV6_NS;
-
-// Neighbor Advertisement - RFC 4861, 4.4 + 4.6/4.6.1
-// (this is just the ICMPv6 payload)
-typedef struct {
- UCHAR type;
-# define ICMPV6_TYPE_NA 136 // neighbour advertisement
- UCHAR code;
-# define ICMPV6_CODE_0 0 // no specific sub-code for NS/NA
- USHORT checksum;
- UCHAR rso_bits; // Router(0), Solicited(2), Ovrrd(4)
- UCHAR reserved[3];
- IPV6ADDR target_addr;
-// always include "Target Link-layer Address" option (RFC 4861 4.6.1)
- UCHAR opt_type;
-#define ICMPV6_OPTION_TLLA 2
- UCHAR opt_length;
-#define ICMPV6_LENGTH_TLLA 1 // multiplied by 8 -> 1 = 8 bytes
- MACADDR target_macaddr;
-} ICMPV6_NA;
-
-// this is the complete packet with Ethernet and IPv6 headers
-typedef struct {
- ETH_HEADER eth;
- IPV6HDR ipv6;
- ICMPV6_NA icmpv6;
-} ICMPV6_NA_PKT;
-
-#pragma pack()
diff --git a/vsprojects/TapDriver/prototypes.h b/vsprojects/TapDriver/prototypes.h
deleted file mode 100644
index 50cc4610..00000000
--- a/vsprojects/TapDriver/prototypes.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef TAP_PROTOTYPES_DEFINED
-#define TAP_PROTOTYPES_DEFINED
-
-NTSTATUS DriverEntry
- (
- IN PDRIVER_OBJECT p_DriverObject,
- IN PUNICODE_STRING p_RegistryPath
- );
-
-VOID TapDriverUnload
- (
- IN PDRIVER_OBJECT p_DriverObject
- );
-
-NDIS_STATUS AdapterCreate
- (
- OUT PNDIS_STATUS p_ErrorStatus,
- OUT PUINT p_MediaIndex,
- IN PNDIS_MEDIUM p_Media,
- IN UINT p_MediaCount,
- IN NDIS_HANDLE p_AdapterHandle,
- IN NDIS_HANDLE p_ConfigurationHandle
- );
-
-VOID AdapterHalt
- (
- IN NDIS_HANDLE p_AdapterContext
- );
-
-VOID AdapterFreeResources
- (
- TapAdapterPointer p_Adapter
- );
-
-NDIS_STATUS AdapterReset
- (
- OUT PBOOLEAN p_AddressingReset,
- IN NDIS_HANDLE p_AdapterContext
- );
-
-NDIS_STATUS AdapterQuery
- (
- IN NDIS_HANDLE p_AdapterContext,
- IN NDIS_OID p_OID,
- IN PVOID p_Buffer,
- IN ULONG p_BufferLength,
- OUT PULONG p_BytesWritten,
- OUT PULONG p_BytesNeeded
- );
-
-NDIS_STATUS AdapterModify
- (
- IN NDIS_HANDLE p_AdapterContext,
- IN NDIS_OID p_OID,
- IN PVOID p_Buffer,
- IN ULONG p_BufferLength,
- OUT PULONG p_BytesRead,
- OUT PULONG p_BytesNeeded
- );
-
-NDIS_STATUS AdapterTransmit
- (
- IN NDIS_HANDLE p_AdapterContext,
- IN PNDIS_PACKET p_Packet,
- IN UINT p_Flags
- );
-
-NDIS_STATUS AdapterReceive
- (
- OUT PNDIS_PACKET p_Packet,
- OUT PUINT p_Transferred,
- IN NDIS_HANDLE p_AdapterContext,
- IN NDIS_HANDLE p_ReceiveContext,
- IN UINT p_Offset,
- IN UINT p_ToTransfer
- );
-
-NTSTATUS TapDeviceHook
- (
- IN PDEVICE_OBJECT p_DeviceObject,
- IN PIRP p_IRP
- );
-
-NDIS_STATUS CreateTapDevice
- (
- TapExtensionPointer p_Extension,
- const char *p_Name
- );
-
-VOID DestroyTapDevice
- (
- TapExtensionPointer p_Extension
- );
-
-VOID TapDeviceFreeResources
- (
- TapExtensionPointer p_Extension
- );
-
-NTSTATUS CompleteIRP
- (
- IN PIRP p_IRP,
- IN TapPacketPointer p_PacketBuffer,
- IN CCHAR PriorityBoost
- );
-
-VOID CancelIRPCallback
- (
- IN PDEVICE_OBJECT p_DeviceObject,
- IN PIRP p_IRP
- );
-
-VOID CancelIRP
- (
- TapExtensionPointer p_Extension,
- IN PIRP p_IRP,
- BOOLEAN callback
- );
-
-VOID FlushQueues
- (
- TapExtensionPointer p_Extension
- );
-
-VOID ResetTapAdapterState
- (
- TapAdapterPointer p_Adapter
- );
-
-BOOLEAN ProcessARP
- (
- TapAdapterPointer p_Adapter,
- const PARP_PACKET src,
- const IPADDR adapter_ip,
- const IPADDR ip_network,
- const IPADDR ip_netmask,
- const MACADDR mac
- );
-
-VOID SetMediaStatus
- (
- TapAdapterPointer p_Adapter,
- BOOLEAN state
- );
-
-VOID InjectPacketDeferred
- (
- TapAdapterPointer p_Adapter,
- UCHAR *packet,
- const unsigned int len
- );
-
-VOID InjectPacketNow
- (
- TapAdapterPointer p_Adapter,
- UCHAR *packet,
- const unsigned int len
- );
-
-// for KDEFERRED_ROUTINE and Static Driver Verifier
-//#include <wdm.h>
-//KDEFERRED_ROUTINE InjectPacketDpc;
-
-VOID InjectPacketDpc
- (
- KDPC *Dpc,
- PVOID DeferredContext,
- PVOID SystemArgument1,
- PVOID SystemArgument2
- );
-
-VOID CheckIfDhcpAndTunMode
- (
- TapAdapterPointer p_Adapter
- );
-
-VOID HookDispatchFunctions();
-
-#if ENABLE_NONADMIN
-
-#if defined(DDKVER_MAJOR) && DDKVER_MAJOR < 5600
-/*
- * Better solution for use on Vista DDK, but possibly not compatible with
- * earlier DDKs:
- *
- * Eliminate the definition of SECURITY_DESCRIPTOR (and even ZwSetSecurityObject),
- * and at the top of tapdrv.c change:
- *
- * #include <ndis.h>
- * #include <ntstrsafe.h>
- * #include <ntddk.h>
- *
- * To
- *
- * #include <ntifs.h>
- * #include <ndis.h>
- * #include <ntstrsafe.h>
- */
-typedef struct _SECURITY_DESCRIPTOR {
- unsigned char opaque[64];
-} SECURITY_DESCRIPTOR;
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwSetSecurityObject (
- IN HANDLE Handle,
- IN SECURITY_INFORMATION SecurityInformation,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
-
-#endif
-
-VOID AllowNonAdmin (TapExtensionPointer p_Extension);
-
-#endif
-
-struct WIN2K_NDIS_MINIPORT_BLOCK
-{
- unsigned char opaque[16];
- UNICODE_STRING MiniportName; // how mini-port refers to us
-};
-
-#if PACKET_TRUNCATION_CHECK
-
-VOID IPv4PacketSizeVerify
- (
- const UCHAR *data,
- ULONG length,
- BOOLEAN tun,
- const char *prefix,
- LONG *counter
- );
-
-#endif
-
-#endif
diff --git a/vsprojects/TapDriver/tap-windows.h b/vsprojects/TapDriver/tap-windows.h
deleted file mode 100644
index ff1baf17..00000000
--- a/vsprojects/TapDriver/tap-windows.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#ifndef __TAP_WIN_H
-#define __TAP_WIN_H
-
-/*
- * =============
- * TAP IOCTLs
- * =============
- */
-
-#define TAP_WIN_CONTROL_CODE(request,method) \
- CTL_CODE (FILE_DEVICE_UNKNOWN, request, method, FILE_ANY_ACCESS)
-
-/* Present in 8.1 */
-
-#define TAP_WIN_IOCTL_GET_MAC TAP_WIN_CONTROL_CODE (1, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_GET_VERSION TAP_WIN_CONTROL_CODE (2, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_GET_MTU TAP_WIN_CONTROL_CODE (3, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_GET_INFO TAP_WIN_CONTROL_CODE (4, METHOD_BUFFERED)
-//#define TAP_WIN_IOCTL_CONFIG_POINT_TO_POINT TAP_WIN_CONTROL_CODE (5, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_SET_MEDIA_STATUS TAP_WIN_CONTROL_CODE (6, METHOD_BUFFERED)
-//#define TAP_WIN_IOCTL_CONFIG_DHCP_MASQ TAP_WIN_CONTROL_CODE (7, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_GET_LOG_LINE TAP_WIN_CONTROL_CODE (8, METHOD_BUFFERED)
-//#define TAP_WIN_IOCTL_CONFIG_DHCP_SET_OPT TAP_WIN_CONTROL_CODE (9, METHOD_BUFFERED)
-
-/* Added in 8.2 */
-
-/* obsoletes TAP_WIN_IOCTL_CONFIG_POINT_TO_POINT */
-//#define TAP_WIN_IOCTL_CONFIG_TUN TAP_WIN_CONTROL_CODE (10, METHOD_BUFFERED)
-
-/*
- * =================
- * Registry keys
- * =================
- */
-
-#define ADAPTER_KEY "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}"
-#define NETWORK_CONNECTIONS_KEY "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}"
-
-/*
- * ======================
- * Filesystem prefixes
- * ======================
- */
-
-#define USERMODEDEVICEDIR "\\\\.\\Global\\"
-#define SYSDEVICEDIR "\\Device\\"
-#define USERDEVICEDIR "\\DosDevices\\Global\\"
-#define TAP_WIN_SUFFIX ".tap"
-
-#endif
diff --git a/vsprojects/TapDriver/tapdrvr.c b/vsprojects/TapDriver/tapdrvr.c
deleted file mode 100644
index 4781c872..00000000
--- a/vsprojects/TapDriver/tapdrvr.c
+++ /dev/null
@@ -1,3173 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-//======================================================
-// This driver is designed to work on Win 2000 or higher
-// versions of Windows.
-//
-// It is SMP-safe and handles NDIS 5 power management.
-//
-// By default we operate as a "tap" virtual ethernet
-// 802.3 interface, but we can emulate a "tun"
-// interface (point-to-point IPv4) through the
-// TAP_WIN_IOCTL_CONFIG_POINT_TO_POINT or
-// TAP_WIN_IOCTL_CONFIG_TUN ioctl.
-//======================================================
-
-#include "tap-windows.h"
-#include "config.h"
-
-#define NDIS_MINIPORT_DRIVER
-#define BINARY_COMPATIBLE 0
-#define NDIS50_MINIPORT 1
-#define NDIS_WDM 0
-#define NDIS50 1
-#define NTSTRSAFE_LIB
-
-// Debug info output
-#define ALSO_DBGPRINT 1
-#define DEBUGP_AT_DISPATCH 0
-
-//========================================================
-// Check for truncated IPv4 packets, log errors if found.
-//========================================================
-#define PACKET_TRUNCATION_CHECK 0
-
-//========================================================
-// EXPERIMENTAL -- Configure TAP device object to be
-// accessible from non-administrative accounts, based
-// on an advanced properties setting.
-//
-// Duplicates the functionality of OpenVPN's
-// --allow-nonadmin directive.
-//========================================================
-//#define ENABLE_NONADMIN 1
-
-#if defined(DDKVER_MAJOR) && DDKVER_MAJOR < 5600
-#include <ndis.h>
-#include <ntstrsafe.h>
-#include <ntddk.h>
-#else
-#include <ntifs.h>
-#include <ndis.h>
-#include <ntstrsafe.h>
-#endif
-
-#include "lock.h"
-#include "constants.h"
-#include "proto.h"
-#include "error.h"
-#include "endian.h"
-#include "dhcp.h"
-#include "types.h"
-#include "prototypes.h"
-
-#include "mem.c"
-#include "macinfo.c"
-#include "error.c"
-#include "dhcp.c"
-#include "instance.c"
-
-#define IS_UP(ta) \
- ((ta)->m_InterfaceIsRunning && (ta)->m_Extension.m_TapIsRunning)
-
-#define INCREMENT_STAT(s) ++(s)
-
-#define NAME_BUFFER_SIZE 80
-
-//========================================================
-// Globals
-//========================================================
-
-NDIS_HANDLE g_NdisWrapperHandle;
-
-const UINT g_SupportedOIDList[] = {
- OID_GEN_HARDWARE_STATUS,
- OID_GEN_MEDIA_SUPPORTED,
- OID_GEN_MEDIA_IN_USE,
- OID_GEN_MAXIMUM_LOOKAHEAD,
- OID_GEN_MAC_OPTIONS,
- OID_GEN_LINK_SPEED,
- OID_GEN_TRANSMIT_BLOCK_SIZE,
- OID_GEN_RECEIVE_BLOCK_SIZE,
- OID_GEN_VENDOR_DESCRIPTION,
- OID_GEN_DRIVER_VERSION,
- OID_GEN_XMIT_OK,
- OID_GEN_RCV_OK,
- OID_GEN_XMIT_ERROR,
- OID_GEN_RCV_ERROR,
- OID_802_3_PERMANENT_ADDRESS,
- OID_802_3_CURRENT_ADDRESS,
- OID_GEN_RCV_NO_BUFFER,
- OID_802_3_RCV_ERROR_ALIGNMENT,
- OID_802_3_XMIT_ONE_COLLISION,
- OID_802_3_XMIT_MORE_COLLISIONS,
- OID_802_3_MULTICAST_LIST,
- OID_802_3_MAXIMUM_LIST_SIZE,
- OID_GEN_VENDOR_ID,
- OID_GEN_CURRENT_LOOKAHEAD,
- OID_GEN_CURRENT_PACKET_FILTER,
- OID_GEN_PROTOCOL_OPTIONS,
- OID_GEN_MAXIMUM_TOTAL_SIZE,
- OID_GEN_TRANSMIT_BUFFER_SPACE,
- OID_GEN_RECEIVE_BUFFER_SPACE,
- OID_GEN_MAXIMUM_FRAME_SIZE,
- OID_GEN_VENDOR_DRIVER_VERSION,
- OID_GEN_MAXIMUM_SEND_PACKETS,
- OID_GEN_MEDIA_CONNECT_STATUS,
- OID_GEN_SUPPORTED_LIST
-};
-
-//============================================================
-// Driver Entry
-//============================================================
-#pragma NDIS_INIT_FUNCTION (DriverEntry)
-
-DRIVER_INITIALIZE DriverEntry;
-NTSTATUS
-DriverEntry (IN PDRIVER_OBJECT p_DriverObject,
- IN PUNICODE_STRING p_RegistryPath)
-{
- NDIS_STATUS l_Status = NDIS_STATUS_FAILURE;
- NDIS_MINIPORT_CHARACTERISTICS *l_Properties = NULL;
-
- //========================================================
- // Notify NDIS that a new miniport driver is initializing.
- //========================================================
-
- NdisMInitializeWrapper (&g_NdisWrapperHandle,
- p_DriverObject,
- p_RegistryPath, NULL);
-
- //======================
- // Global initialization
- //======================
-
-#if DBG
- MyDebugInit (10000); // Allocate debugging text space
-#endif
-
- if (!InitInstanceList ())
- {
- DEBUGP (("[TAP] Allocation failed for adapter instance list\n"));
- goto cleanup;
- }
-
- //=======================================
- // Set and register miniport entry points
- //=======================================
-
- l_Properties = MemAlloc (sizeof (NDIS_MINIPORT_CHARACTERISTICS), TRUE);
-
- if (l_Properties == NULL)
- {
- DEBUGP (("[TAP] Allocation failed for miniport entry points\n"));
- goto cleanup;
- }
-
- l_Properties->MajorNdisVersion = TAP_NDIS_MAJOR_VERSION;
- l_Properties->MinorNdisVersion = TAP_NDIS_MINOR_VERSION;
- l_Properties->InitializeHandler = AdapterCreate;
- l_Properties->HaltHandler = AdapterHalt;
- l_Properties->ResetHandler = AdapterReset; /* DISPATCH_LEVEL */
- l_Properties->TransferDataHandler = AdapterReceive; /* DISPATCH_LEVEL */
- l_Properties->SendHandler = AdapterTransmit; /* DISPATCH_LEVEL */
- l_Properties->QueryInformationHandler = AdapterQuery; /* DISPATCH_LEVEL */
- l_Properties->SetInformationHandler = AdapterModify; /* DISPATCH_LEVEL */
-
- switch (l_Status =
- NdisMRegisterMiniport (g_NdisWrapperHandle, l_Properties,
- sizeof (NDIS_MINIPORT_CHARACTERISTICS)))
- {
- case NDIS_STATUS_SUCCESS:
- {
- DEBUGP (("[TAP] version [%d.%d] %s %s registered miniport successfully\n",
- TAP_DRIVER_MAJOR_VERSION,
- TAP_DRIVER_MINOR_VERSION,
- __DATE__,
- __TIME__));
- DEBUGP (("Registry Path: '%.*S'\n", p_RegistryPath->Length/2, p_RegistryPath->Buffer));
- break;
- }
-
- case NDIS_STATUS_BAD_CHARACTERISTICS:
- {
- DEBUGP (("[TAP] Miniport characteristics were badly defined\n"));
- NdisTerminateWrapper (g_NdisWrapperHandle, NULL);
- break;
- }
-
- case NDIS_STATUS_BAD_VERSION:
- {
- DEBUGP
- (("[TAP] NDIS Version is wrong for the given characteristics\n"));
- NdisTerminateWrapper (g_NdisWrapperHandle, NULL);
- break;
- }
-
- case NDIS_STATUS_RESOURCES:
- {
- DEBUGP (("[TAP] Insufficient resources\n"));
- NdisTerminateWrapper (g_NdisWrapperHandle, NULL);
- break;
- }
-
- default:
- case NDIS_STATUS_FAILURE:
- {
- DEBUGP (("[TAP] Unknown fatal registration error\n"));
- NdisTerminateWrapper (g_NdisWrapperHandle, NULL);
- break;
- }
- }
-
- cleanup:
- if (l_Properties)
- MemFree (l_Properties, sizeof (NDIS_MINIPORT_CHARACTERISTICS));
-
- if (l_Status == NDIS_STATUS_SUCCESS)
- NdisMRegisterUnloadHandler (g_NdisWrapperHandle, TapDriverUnload);
- else
- TapDriverUnload (p_DriverObject);
-
- return l_Status;
-}
-
-//============================================================
-// Driver Unload
-//============================================================
-DRIVER_UNLOAD TapDriverUnload;
-VOID
-TapDriverUnload (IN PDRIVER_OBJECT p_DriverObject)
-{
- DEBUGP (("[TAP] version [%d.%d] %s %s unloaded, instances=%d, imbs=%d\n",
- TAP_DRIVER_MAJOR_VERSION,
- TAP_DRIVER_MINOR_VERSION,
- __DATE__,
- __TIME__,
- NInstances(),
- InstanceMaxBucketSize()));
-
- FreeInstanceList ();
-
- //==============================
- // Free debugging text space
- //==============================
-#if DBG
- MyDebugFree ();
-#endif
-}
-
-//==========================================================
-// Adapter Initialization
-//==========================================================
-NDIS_STATUS AdapterCreate
-(OUT PNDIS_STATUS p_ErrorStatus,
- OUT PUINT p_MediaIndex,
- IN PNDIS_MEDIUM p_Media,
- IN UINT p_MediaCount,
- IN NDIS_HANDLE p_AdapterHandle,
- IN NDIS_HANDLE p_ConfigurationHandle)
-{
- TapAdapterPointer l_Adapter = NULL;
-
- NDIS_MEDIUM l_PreferredMedium = NdisMedium802_3; // Ethernet
- BOOLEAN l_MacFromRegistry = FALSE;
- UINT l_Index;
- NDIS_STATUS status;
-
-#if ENABLE_NONADMIN
- BOOLEAN enable_non_admin = FALSE;
-#endif
-
- DEBUGP (("[TAP] AdapterCreate called\n"));
-
- //====================================
- // Make sure adapter type is supported
- //====================================
-
- for (l_Index = 0;
- l_Index < p_MediaCount && p_Media[l_Index] != l_PreferredMedium;
- ++l_Index);
-
- if (l_Index == p_MediaCount)
- {
- DEBUGP (("[TAP] Unsupported adapter type [wanted: %d]\n",
- l_PreferredMedium));
- return NDIS_STATUS_UNSUPPORTED_MEDIA;
- }
-
- *p_MediaIndex = l_Index;
-
- //=========================================
- // Allocate memory for TapAdapter structure
- //=========================================
-
- l_Adapter = MemAlloc (sizeof (TapAdapter), TRUE);
-
- if (l_Adapter == NULL)
- {
- DEBUGP (("[TAP] Couldn't allocate adapter memory\n"));
- return NDIS_STATUS_RESOURCES;
- }
-
- //==========================================
- // Inform the NDIS library about significant
- // features of our virtual NIC.
- //==========================================
-
- NdisMSetAttributesEx
- (p_AdapterHandle,
- (NDIS_HANDLE) l_Adapter,
- 16,
- NDIS_ATTRIBUTE_DESERIALIZE
- | NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT
- | NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT
- | NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND,
- NdisInterfaceInternal);
-
- //=====================================
- // Initialize simple Adapter parameters
- //=====================================
-
- l_Adapter->m_Lookahead = DEFAULT_PACKET_LOOKAHEAD;
- l_Adapter->m_Medium = l_PreferredMedium;
- l_Adapter->m_DeviceState = '?';
- l_Adapter->m_MiniportAdapterHandle = p_AdapterHandle;
-
- //==================================
- // Allocate spinlock for controlling
- // access to multicast address list.
- //==================================
- NdisAllocateSpinLock (&l_Adapter->m_MCLock);
- l_Adapter->m_MCLockAllocated = TRUE;
-
- //====================================================
- // Register a shutdown handler which will be called
- // on system restart/shutdown to halt our virtual NIC.
- //====================================================
-
- NdisMRegisterAdapterShutdownHandler (p_AdapterHandle, l_Adapter,
- AdapterHalt);
- l_Adapter->m_RegisteredAdapterShutdownHandler = TRUE;
-
- //============================================
- // Get parameters from registry which were set
- // in the adapter advanced properties dialog.
- //============================================
- {
- NDIS_STATUS status;
- NDIS_HANDLE configHandle;
- NDIS_CONFIGURATION_PARAMETER *parm;
-
- // set defaults in case our registry query fails
- l_Adapter->m_MTU = ETHERNET_MTU;
- l_Adapter->m_MediaStateAlwaysConnected = FALSE;
- l_Adapter->m_MediaState = FALSE;
-
- NdisOpenConfiguration (&status, &configHandle, p_ConfigurationHandle);
- if (status != NDIS_STATUS_SUCCESS)
- {
- DEBUGP (("[TAP] Couldn't open adapter registry\n"));
- AdapterFreeResources (l_Adapter);
- return status;
- }
-
- //====================================
- // Allocate and construct adapter name
- //====================================
- {
-
- NDIS_STRING mkey = NDIS_STRING_CONST("MiniportName");
- NDIS_STRING vkey = NDIS_STRING_CONST("NdisVersion");
- NDIS_STATUS vstatus;
- NDIS_CONFIGURATION_PARAMETER *vparm;
-
- NdisReadConfiguration (&vstatus, &vparm, configHandle, &vkey, NdisParameterInteger);
- if (vstatus == NDIS_STATUS_SUCCESS)
- DEBUGP (("[TAP] NdisReadConfiguration NdisVersion=%X\n", vparm->ParameterData.IntegerData));
-
- NdisReadConfiguration (&status, &parm, configHandle, &mkey, NdisParameterString);
- if (status == NDIS_STATUS_SUCCESS)
- {
- if (parm->ParameterType == NdisParameterString)
- {
- DEBUGP (("[TAP] NdisReadConfiguration (MiniportName=%.*S)\n",
- parm->ParameterData.StringData.Length/2,
- parm->ParameterData.StringData.Buffer));
-
- if (RtlUnicodeStringToAnsiString (
- &l_Adapter->m_NameAnsi,
- &parm->ParameterData.StringData,
- TRUE) != STATUS_SUCCESS)
- {
- DEBUGP (("[TAP] MiniportName failed\n"));
- status = NDIS_STATUS_RESOURCES;
- }
- }
- }
- else
- {
- /* "MiniportName" is available only XP and above. Not on Windows 2000. */
- if (vstatus == NDIS_STATUS_SUCCESS && vparm->ParameterData.IntegerData == 0x50000)
- {
- /* Fallback for Windows 2000 with NDIS version 5.00.00
- Don't use this on Vista, 'NDIS_MINIPORT_BLOCK' was changed! */
- if (RtlUnicodeStringToAnsiString (&l_Adapter->m_NameAnsi,
- &((struct WIN2K_NDIS_MINIPORT_BLOCK *) p_AdapterHandle)->MiniportName,
- TRUE) != STATUS_SUCCESS)
- {
- DEBUGP (("[TAP] MiniportName (W2K) failed\n"));
- status = NDIS_STATUS_RESOURCES;
- }
- else
- {
- DEBUGP (("[TAP] MiniportName (W2K) succeeded: %s\n", l_Adapter->m_NameAnsi.Buffer));
- status = NDIS_STATUS_SUCCESS;
- }
- }
- }
- }
-
- /* Can't continue without name (see macro 'NAME') */
- if (status != NDIS_STATUS_SUCCESS || !l_Adapter->m_NameAnsi.Buffer)
- {
- NdisCloseConfiguration (configHandle);
- AdapterFreeResources (l_Adapter);
- DEBUGP (("[TAP] failed to get miniport name\n"));
- return NDIS_STATUS_RESOURCES;
- }
-
- /* Read MTU setting from registry */
- {
- NDIS_STRING key = NDIS_STRING_CONST("MTU");
- NdisReadConfiguration (&status, &parm, configHandle,
- &key, NdisParameterInteger);
- if (status == NDIS_STATUS_SUCCESS)
- {
- if (parm->ParameterType == NdisParameterInteger)
- {
- int mtu = parm->ParameterData.IntegerData;
- if (mtu < MINIMUM_MTU)
- mtu = MINIMUM_MTU;
- if (mtu > MAXIMUM_MTU)
- mtu = MAXIMUM_MTU;
- l_Adapter->m_MTU = mtu;
- }
- }
- }
-
- /* Read Media Status setting from registry */
- {
- NDIS_STRING key = NDIS_STRING_CONST("MediaStatus");
- NdisReadConfiguration (&status, &parm, configHandle,
- &key, NdisParameterInteger);
- if (status == NDIS_STATUS_SUCCESS)
- {
- if (parm->ParameterType == NdisParameterInteger)
- {
- if (parm->ParameterData.IntegerData)
- {
- l_Adapter->m_MediaStateAlwaysConnected = TRUE;
- l_Adapter->m_MediaState = TRUE;
- }
- }
- }
- }
-
-#if ENABLE_NONADMIN
- /* Read AllowNonAdmin setting from registry */
- {
- NDIS_STRING key = NDIS_STRING_CONST("AllowNonAdmin");
- NdisReadConfiguration (&status, &parm, configHandle,
- &key, NdisParameterInteger);
- if (status == NDIS_STATUS_SUCCESS)
- {
- if (parm->ParameterType == NdisParameterInteger)
- {
- if (parm->ParameterData.IntegerData)
- {
- enable_non_admin = TRUE;
- }
- }
- }
- }
-#endif
-
- /* Read optional MAC setting from registry */
- {
- NDIS_STRING key = NDIS_STRING_CONST("MAC");
- ANSI_STRING mac_string;
- NdisReadConfiguration (&status, &parm, configHandle,
- &key, NdisParameterString);
- if (status == NDIS_STATUS_SUCCESS)
- {
- if (parm->ParameterType == NdisParameterString)
- {
- if (RtlUnicodeStringToAnsiString (&mac_string, &parm->ParameterData.StringData, TRUE) == STATUS_SUCCESS)
- {
- l_MacFromRegistry = ParseMAC (l_Adapter->m_MAC, mac_string.Buffer);
- RtlFreeAnsiString (&mac_string);
- }
- }
- }
- }
-
- NdisCloseConfiguration (configHandle);
-
- DEBUGP (("[%s] MTU=%d\n", NAME (l_Adapter), l_Adapter->m_MTU));
- }
-
- //==================================
- // Store and update MAC address info
- //==================================
-
- if (!l_MacFromRegistry)
- GenerateRandomMac (l_Adapter->m_MAC, NAME (l_Adapter));
-
- DEBUGP (("[%s] Using MAC %x:%x:%x:%x:%x:%x\n",
- NAME (l_Adapter),
- l_Adapter->m_MAC[0], l_Adapter->m_MAC[1], l_Adapter->m_MAC[2],
- l_Adapter->m_MAC[3], l_Adapter->m_MAC[4], l_Adapter->m_MAC[5]));
-
-#if 0
- //==================
- // Set broadcast MAC
- //==================
- {
- int i;
- for (i = 0; i < sizeof (MACADDR); ++i)
- l_Adapter->m_MAC_Broadcast[i] = 0xFF;
- }
-#endif
-
- //====================================
- // Initialize TAP device
- //====================================
- {
- NDIS_STATUS tap_status;
- tap_status = CreateTapDevice (&l_Adapter->m_Extension, NAME (l_Adapter));
- if (tap_status != NDIS_STATUS_SUCCESS)
- {
- AdapterFreeResources (l_Adapter);
- DEBUGP (("[TAP] CreateTapDevice failed\n"));
- return tap_status;
- }
- }
-
- if (!AddAdapterToInstanceList (l_Adapter))
- {
- NOTE_ERROR ();
- TapDeviceFreeResources (&l_Adapter->m_Extension);
- AdapterFreeResources (l_Adapter);
- DEBUGP (("[TAP] AddAdapterToInstanceList failed\n"));
- return NDIS_STATUS_RESOURCES;
- }
-
- l_Adapter->m_InterfaceIsRunning = TRUE;
-
-#if ENABLE_NONADMIN
- if (enable_non_admin)
- AllowNonAdmin (&l_Adapter->m_Extension);
-#endif
-
- return NDIS_STATUS_SUCCESS;
-}
-
-VOID
-AdapterHalt (IN NDIS_HANDLE p_AdapterContext)
-{
- BOOLEAN status;
-
- TapAdapterPointer l_Adapter = (TapAdapterPointer) p_AdapterContext;
-
- NOTE_ERROR ();
-
- l_Adapter->m_InterfaceIsRunning = FALSE;
-
- DEBUGP (("[%s] is being halted\n", NAME (l_Adapter)));
-
- DestroyTapDevice (&l_Adapter->m_Extension);
-
- // Free resources
- DEBUGP (("[%s] Freeing Resources\n", NAME (l_Adapter)));
- AdapterFreeResources (l_Adapter);
-
- status = RemoveAdapterFromInstanceList (l_Adapter);
- DEBUGP (("[TAP] RemoveAdapterFromInstanceList returned %d\n", (int) status));
-
- DEBUGP (("[TAP] version [%d.%d] %s %s AdapterHalt returning\n",
- TAP_DRIVER_MAJOR_VERSION,
- TAP_DRIVER_MINOR_VERSION,
- __DATE__,
- __TIME__));
-}
-
-VOID
-AdapterFreeResources (TapAdapterPointer p_Adapter)
-{
- MYASSERT (!p_Adapter->m_CalledAdapterFreeResources);
- p_Adapter->m_CalledAdapterFreeResources = TRUE;
-
- if (p_Adapter->m_NameAnsi.Buffer)
- RtlFreeAnsiString (&p_Adapter->m_NameAnsi);
-
- if (p_Adapter->m_RegisteredAdapterShutdownHandler)
- NdisMDeregisterAdapterShutdownHandler (p_Adapter->m_MiniportAdapterHandle);
-
- if (p_Adapter->m_MCLockAllocated)
- NdisFreeSpinLock (&p_Adapter->m_MCLock);
-}
-
-VOID
-DestroyTapDevice (TapExtensionPointer p_Extension)
-{
- DEBUGP (("[%s] Destroying tap device\n", p_Extension->m_TapName));
-
- //======================================
- // Let clients know we are shutting down
- //======================================
- p_Extension->m_TapIsRunning = FALSE;
- p_Extension->m_TapOpens = 0;
- p_Extension->m_Halt = TRUE;
-
- //=====================================
- // If we are concurrently executing in
- // TapDeviceHook or AdapterTransmit,
- // give those calls time to finish.
- // Note that we must be running at IRQL
- // < DISPATCH_LEVEL in order to call
- // NdisMSleep.
- //=====================================
- NdisMSleep (500000);
-
- //===========================================================
- // Exhaust IRP and packet queues. Any pending IRPs will
- // be cancelled, causing user-space to get this error
- // on overlapped reads:
- // The I/O operation has been aborted because of either a
- // thread exit or an application request. (code=995)
- // It's important that user-space close the device handle
- // when this code is returned, so that when we finally
- // do a NdisMDeregisterDevice, the device reference count
- // is 0. Otherwise the driver will not unload even if the
- // the last adapter has been halted.
- //===========================================================
- FlushQueues (p_Extension);
- NdisMSleep (500000); // give user space time to respond to IRP cancel
-
- TapDeviceFreeResources (p_Extension);
-}
-
-VOID
-TapDeviceFreeResources (TapExtensionPointer p_Extension)
-{
- MYASSERT (p_Extension);
- MYASSERT (!p_Extension->m_CalledTapDeviceFreeResources);
- p_Extension->m_CalledTapDeviceFreeResources = TRUE;
-
- if (p_Extension->m_PacketQueue)
- QueueFree (p_Extension->m_PacketQueue);
- if (p_Extension->m_IrpQueue)
- QueueFree (p_Extension->m_IrpQueue);
- if (p_Extension->m_InjectQueue)
- QueueFree (p_Extension->m_InjectQueue);
-
- if (p_Extension->m_CreatedUnicodeLinkName)
- RtlFreeUnicodeString (&p_Extension->m_UnicodeLinkName);
-
- //==========================================================
- // According to DDK docs, the device is not actually deleted
- // until its reference count falls to zero. That means we
- // still need to gracefully fail TapDeviceHook requests
- // after this point, otherwise ugly things would happen if
- // the device was disabled (e.g. in the network connections
- // control panel) while a userspace app still held an open
- // file handle to it.
- //==========================================================
-
- if (p_Extension->m_TapDevice)
- {
- BOOLEAN status;
- status = (NdisMDeregisterDevice (p_Extension->m_TapDeviceHandle)
- == NDIS_STATUS_SUCCESS);
- DEBUGP (("[TAP] Deregistering TAP device, status=%d\n", (int)status));
- }
-
- if (p_Extension->m_TapName)
- MemFree (p_Extension->m_TapName, NAME_BUFFER_SIZE);
-
- if (p_Extension->m_InjectDpcInitialized)
- KeRemoveQueueDpc (&p_Extension->m_InjectDpc);
-
- if (p_Extension->m_AllocatedSpinlocks)
- {
- NdisFreeSpinLock (&p_Extension->m_QueueLock);
- NdisFreeSpinLock (&p_Extension->m_InjectLock);
- }
-}
-
-//========================================================================
-// Tap Device Initialization
-//========================================================================
-
-NDIS_STATUS
-CreateTapDevice (TapExtensionPointer p_Extension, const char *p_Name)
-{
-# define SIZEOF_DISPATCH (sizeof(PDRIVER_DISPATCH) * (IRP_MJ_MAXIMUM_FUNCTION + 1))
- PDRIVER_DISPATCH *l_Dispatch = NULL;
- ANSI_STRING l_TapString, l_LinkString;
- UNICODE_STRING l_TapUnicode;
- BOOLEAN l_FreeTapUnicode = FALSE;
- NTSTATUS l_Status, l_Return = NDIS_STATUS_SUCCESS;
- const char *l_UsableName;
-
- DEBUGP (("[TAP] version [%d.%d] creating tap device: %s\n",
- TAP_DRIVER_MAJOR_VERSION,
- TAP_DRIVER_MINOR_VERSION,
- p_Name));
-
- NdisZeroMemory (p_Extension, sizeof (TapExtension));
-
- INIT_MUTEX (&p_Extension->m_OpenCloseMutex);
-
- l_LinkString.Buffer = NULL;
- l_TapString.Buffer = NULL;
-
- l_TapString.MaximumLength = l_LinkString.MaximumLength = NAME_BUFFER_SIZE;
-
- //=======================================
- // Set TAP device entry points
- //=======================================
-
- if ((l_Dispatch = MemAlloc (SIZEOF_DISPATCH, TRUE)) == NULL)
- {
- DEBUGP (("[%s] couldn't alloc TAP dispatch table\n", p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
-
- l_Dispatch[IRP_MJ_DEVICE_CONTROL] = TapDeviceHook;
- l_Dispatch[IRP_MJ_READ] = TapDeviceHook;
- l_Dispatch[IRP_MJ_WRITE] = TapDeviceHook;
- l_Dispatch[IRP_MJ_CREATE] = TapDeviceHook;
- l_Dispatch[IRP_MJ_CLOSE] = TapDeviceHook;
-
- //==================================
- // Find the beginning of the GUID
- //==================================
- l_UsableName = p_Name;
- while (*l_UsableName != '{')
- {
- if (*l_UsableName == '\0')
- {
- DEBUGP (("[%s] couldn't find leading '{' in name\n", p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
- ++l_UsableName;
- }
-
- //==================================
- // Allocate pool for TAP device name
- //==================================
-
- if ((p_Extension->m_TapName = l_TapString.Buffer =
- MemAlloc (NAME_BUFFER_SIZE, TRUE)) == NULL)
- {
- DEBUGP (("[%s] couldn't alloc TAP name buffer\n", p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
-
- //================================================
- // Allocate pool for TAP symbolic link name buffer
- //================================================
-
- if ((l_LinkString.Buffer =
- MemAlloc (NAME_BUFFER_SIZE, TRUE)) == NULL)
- {
- DEBUGP (("[%s] couldn't alloc TAP symbolic link name buffer\n",
- p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
-
- //=======================================================
- // Set TAP device name
- //=======================================================
-
- l_Status = RtlStringCchPrintfExA
- (l_TapString.Buffer,
- l_TapString.MaximumLength,
- NULL,
- NULL,
- STRSAFE_FILL_BEHIND_NULL | STRSAFE_IGNORE_NULLS,
- "%s%s%s",
- SYSDEVICEDIR,
- l_UsableName,
- TAP_WIN_SUFFIX);
-
- if (l_Status != STATUS_SUCCESS)
- {
- DEBUGP (("[%s] couldn't format TAP device name\n",
- p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
- l_TapString.Length = (USHORT) strlen (l_TapString.Buffer);
-
- DEBUGP (("TAP DEV NAME: '%s'\n", l_TapString.Buffer));
-
- //=======================================================
- // Set TAP link name
- //=======================================================
-
- l_Status = RtlStringCchPrintfExA
- (l_LinkString.Buffer,
- l_LinkString.MaximumLength,
- NULL,
- NULL,
- STRSAFE_FILL_BEHIND_NULL | STRSAFE_IGNORE_NULLS,
- "%s%s%s",
- USERDEVICEDIR,
- l_UsableName,
- TAP_WIN_SUFFIX);
-
- if (l_Status != STATUS_SUCCESS)
- {
- DEBUGP (("[%s] couldn't format TAP device symbolic link\n",
- p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
- l_LinkString.Length = (USHORT) strlen (l_LinkString.Buffer);
-
- DEBUGP (("TAP LINK NAME: '%s'\n", l_LinkString.Buffer));
-
- //==================================================
- // Convert strings to unicode
- //==================================================
- if (RtlAnsiStringToUnicodeString (&l_TapUnicode, &l_TapString, TRUE) !=
- STATUS_SUCCESS)
- {
- DEBUGP (("[%s] couldn't alloc TAP unicode name buffer\n",
- p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
- l_FreeTapUnicode = TRUE;
-
- if (RtlAnsiStringToUnicodeString
- (&p_Extension->m_UnicodeLinkName, &l_LinkString, TRUE)
- != STATUS_SUCCESS)
- {
- DEBUGP
- (("[%s] Couldn't allocate unicode string for symbolic link name\n",
- p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
- p_Extension->m_CreatedUnicodeLinkName = TRUE;
-
- //==================================================
- // Create new TAP device with symbolic
- // link and associate with adapter.
- //==================================================
-
- l_Status = NdisMRegisterDevice
- (g_NdisWrapperHandle,
- &l_TapUnicode,
- &p_Extension->m_UnicodeLinkName,
- l_Dispatch,
- &p_Extension->m_TapDevice,
- &p_Extension->m_TapDeviceHandle
- );
-
- if (l_Status != STATUS_SUCCESS)
- {
- DEBUGP (("[%s] couldn't be created\n", p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
-
- /* Set TAP device flags */
- p_Extension->m_TapDevice->Flags |= DO_DIRECT_IO;
-
- //========================================================
- // Initialize Packet and IRP queues.
- //
- // The packet queue is used to buffer data which has been
- // "transmitted" by the virtual NIC, before user space
- // has had a chance to read it.
- //
- // The IRP queue is used to buffer pending I/O requests
- // from userspace, i.e. read requests on the TAP device
- // waiting for the system to "transmit" something through
- // the virtual NIC.
- //
- // Basically, packets in the packet queue are used
- // to satisfy IRP requests in the IRP queue.
- //
- // QueueLock is used to lock the packet queue used
- // for the TAP-Windows NIC -> User Space packet flow direction.
- //
- // All accesses to packet or IRP queues should be
- // bracketed by the QueueLock spinlock,
- // in order to be SMP-safe.
- //========================================================
-
- NdisAllocateSpinLock (&p_Extension->m_QueueLock);
- NdisAllocateSpinLock (&p_Extension->m_InjectLock);
- p_Extension->m_AllocatedSpinlocks = TRUE;
-
- p_Extension->m_PacketQueue = QueueInit (PACKET_QUEUE_SIZE);
- p_Extension->m_IrpQueue = QueueInit (IRP_QUEUE_SIZE);
- p_Extension->m_InjectQueue = QueueInit (INJECT_QUEUE_SIZE);
- if (!p_Extension->m_PacketQueue
- || !p_Extension->m_IrpQueue
- || !p_Extension->m_InjectQueue)
- {
- DEBUGP (("[%s] couldn't alloc TAP queues\n", p_Name));
- l_Return = NDIS_STATUS_RESOURCES;
- goto cleanup;
- }
-
- //=================================================================
- // Initialize deferred procedure call for DHCP/ARP packet injection
- //=================================================================
-
- KeInitializeDpc (&p_Extension->m_InjectDpc, InjectPacketDpc, NULL);
- p_Extension->m_InjectDpcInitialized = TRUE;
-
- //========================
- // Finalize initialization
- //========================
-
- p_Extension->m_TapIsRunning = TRUE;
-
- DEBUGP (("[%s] successfully created TAP device [%s]\n", p_Name,
- p_Extension->m_TapName));
-
- cleanup:
- if (l_FreeTapUnicode)
- RtlFreeUnicodeString (&l_TapUnicode);
- if (l_LinkString.Buffer)
- MemFree (l_LinkString.Buffer, NAME_BUFFER_SIZE);
- if (l_Dispatch)
- MemFree (l_Dispatch, SIZEOF_DISPATCH);
-
- if (l_Return != NDIS_STATUS_SUCCESS)
- TapDeviceFreeResources (p_Extension);
-
- return l_Return;
-}
-#undef SIZEOF_DISPATCH
-
-//========================================================
-// Adapter Control
-//========================================================
-NDIS_STATUS
-AdapterReset (OUT PBOOLEAN p_AddressingReset, IN NDIS_HANDLE p_AdapterContext)
-{
- TapAdapterPointer l_Adapter = (TapAdapterPointer) p_AdapterContext;
- DEBUGP (("[%s] is resetting\n", NAME (l_Adapter)));
- return NDIS_STATUS_SUCCESS;
-}
-
-NDIS_STATUS AdapterReceive
- (OUT PNDIS_PACKET p_Packet,
- OUT PUINT p_Transferred,
- IN NDIS_HANDLE p_AdapterContext,
- IN NDIS_HANDLE p_ReceiveContext,
- IN UINT p_Offset,
- IN UINT p_ToTransfer)
-{
- return NDIS_STATUS_SUCCESS;
-}
-
-//==============================================================
-// Adapter Option Query/Modification
-//==============================================================
-NDIS_STATUS AdapterQuery
-(IN NDIS_HANDLE p_AdapterContext,
- IN NDIS_OID p_OID,
- IN PVOID p_Buffer,
- IN ULONG p_BufferLength,
- OUT PULONG p_BytesWritten, OUT PULONG p_BytesNeeded)
-{
- TapAdapterPointer l_Adapter = (TapAdapterPointer) p_AdapterContext;
- TapAdapterQuery l_Query, *l_QueryPtr = &l_Query;
- NDIS_STATUS l_Status = NDIS_STATUS_SUCCESS;
- UINT l_QueryLength = 4;
- BOOLEAN lock_succeeded;
-
- NdisZeroMemory (&l_Query, sizeof (l_Query));
-
- switch (p_OID)
- {
- //===================================================================
- // Vendor & Driver version Info
- //===================================================================
- case OID_GEN_VENDOR_DESCRIPTION:
- l_QueryPtr = (TapAdapterQueryPointer) PRODUCT_TAP_WIN_DEVICE_DESCRIPTION;
- l_QueryLength = strlen (PRODUCT_TAP_WIN_DEVICE_DESCRIPTION) + 1;
- break;
-
- case OID_GEN_VENDOR_ID:
- l_Query.m_Long = 0xffffff;
- break;
-
- case OID_GEN_DRIVER_VERSION:
- l_Query.m_Short =
- (((USHORT) TAP_NDIS_MAJOR_VERSION) << 8 | (USHORT)
- TAP_NDIS_MINOR_VERSION);
- l_QueryLength = sizeof (unsigned short);
- break;
-
- case OID_GEN_VENDOR_DRIVER_VERSION:
- l_Query.m_Long =
- (((USHORT) PRODUCT_TAP_WIN_MAJOR) << 8 | (USHORT)
- PRODUCT_TAP_WIN_MINOR);
- break;
-
- //=================================================================
- // Statistics
- //=================================================================
- case OID_GEN_RCV_NO_BUFFER:
- l_Query.m_Long = 0;
- break;
-
- case OID_802_3_RCV_ERROR_ALIGNMENT:
- l_Query.m_Long = 0;
- break;
-
- case OID_802_3_XMIT_ONE_COLLISION:
- l_Query.m_Long = 0;
- break;
-
- case OID_802_3_XMIT_MORE_COLLISIONS:
- l_Query.m_Long = 0;
- break;
-
- case OID_GEN_XMIT_OK:
- l_Query.m_Long = l_Adapter->m_Tx;
- break;
-
- case OID_GEN_RCV_OK:
- l_Query.m_Long = l_Adapter->m_Rx;
- break;
-
- case OID_GEN_XMIT_ERROR:
- l_Query.m_Long = l_Adapter->m_TxErr;
- break;
-
- case OID_GEN_RCV_ERROR:
- l_Query.m_Long = l_Adapter->m_RxErr;
- break;
-
- //===================================================================
- // Device & Protocol Options
- //===================================================================
- case OID_GEN_SUPPORTED_LIST:
- l_QueryPtr = (TapAdapterQueryPointer) g_SupportedOIDList;
- l_QueryLength = sizeof (g_SupportedOIDList);
- break;
-
- case OID_GEN_MAC_OPTIONS:
- // This MUST be here !!!
- l_Query.m_Long = (NDIS_MAC_OPTION_RECEIVE_SERIALIZED
- | NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA
- | NDIS_MAC_OPTION_NO_LOOPBACK
- | NDIS_MAC_OPTION_TRANSFERS_NOT_PEND);
-
- break;
-
- case OID_GEN_CURRENT_PACKET_FILTER:
- l_Query.m_Long =
- (NDIS_PACKET_TYPE_ALL_LOCAL |
- NDIS_PACKET_TYPE_BROADCAST |
- NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_ALL_FUNCTIONAL);
-
- break;
-
- case OID_GEN_PROTOCOL_OPTIONS:
- l_Query.m_Long = 0;
- break;
-
- //==================================================================
- // Device Info
- //==================================================================
- case OID_GEN_MEDIA_CONNECT_STATUS:
- l_Query.m_Long = l_Adapter->m_MediaState
- ? NdisMediaStateConnected : NdisMediaStateDisconnected;
- break;
-
- case OID_GEN_HARDWARE_STATUS:
- l_Query.m_HardwareStatus = NdisHardwareStatusReady;
- l_QueryLength = sizeof (NDIS_HARDWARE_STATUS);
- break;
-
- case OID_GEN_MEDIA_SUPPORTED:
- case OID_GEN_MEDIA_IN_USE:
- l_Query.m_Medium = l_Adapter->m_Medium;
- l_QueryLength = sizeof (NDIS_MEDIUM);
- break;
-
- case OID_GEN_PHYSICAL_MEDIUM:
- l_Query.m_PhysicalMedium = NdisPhysicalMediumUnspecified;
- l_QueryLength = sizeof (NDIS_PHYSICAL_MEDIUM);
- break;
-
- case OID_GEN_LINK_SPEED:
- l_Query.m_Long = 100000; // rate / 100 bps
- break;
-
- case OID_802_3_PERMANENT_ADDRESS:
- case OID_802_3_CURRENT_ADDRESS:
- COPY_MAC (l_Query.m_MacAddress, l_Adapter->m_MAC);
- l_QueryLength = sizeof (MACADDR);
- break;
-
- //==================================================================
- // Limits
- //==================================================================
-
- case OID_GEN_MAXIMUM_SEND_PACKETS:
- l_Query.m_Long = 1;
- break;
-
- case OID_802_3_MAXIMUM_LIST_SIZE:
- l_Query.m_Long = NIC_MAX_MCAST_LIST;
- break;
-
- case OID_GEN_CURRENT_LOOKAHEAD:
- l_Query.m_Long = l_Adapter->m_Lookahead;
- break;
-
- case OID_GEN_MAXIMUM_LOOKAHEAD:
- case OID_GEN_MAXIMUM_TOTAL_SIZE:
- case OID_GEN_RECEIVE_BUFFER_SPACE:
- case OID_GEN_RECEIVE_BLOCK_SIZE:
- l_Query.m_Long = DEFAULT_PACKET_LOOKAHEAD;
- break;
-
- case OID_GEN_MAXIMUM_FRAME_SIZE:
- case OID_GEN_TRANSMIT_BLOCK_SIZE:
- case OID_GEN_TRANSMIT_BUFFER_SPACE:
- l_Query.m_Long = l_Adapter->m_MTU;
- break;
-
- case OID_PNP_CAPABILITIES:
- do
- {
- PNDIS_PNP_CAPABILITIES pPNPCapabilities;
- PNDIS_PM_WAKE_UP_CAPABILITIES pPMstruct;
-
- if (p_BufferLength >= sizeof (NDIS_PNP_CAPABILITIES))
- {
- pPNPCapabilities = (PNDIS_PNP_CAPABILITIES) (p_Buffer);
-
- //
- // Setting up the buffer to be returned
- // to the Protocol above the Passthru miniport
- //
- pPMstruct = &pPNPCapabilities->WakeUpCapabilities;
- pPMstruct->MinMagicPacketWakeUp = NdisDeviceStateUnspecified;
- pPMstruct->MinPatternWakeUp = NdisDeviceStateUnspecified;
- pPMstruct->MinLinkChangeWakeUp = NdisDeviceStateUnspecified;
- }
- l_QueryLength = sizeof (NDIS_PNP_CAPABILITIES);
- }
- while (FALSE);
- break;
- case OID_PNP_QUERY_POWER:
- break;
-
- // Required OIDs that we don't support
-
- case OID_GEN_SUPPORTED_GUIDS:
- case OID_GEN_MEDIA_CAPABILITIES:
- case OID_TCP_TASK_OFFLOAD:
- case OID_FFP_SUPPORT:
- l_Status = NDIS_STATUS_INVALID_OID;
- break;
-
- // Optional stats OIDs
-
- case OID_GEN_DIRECTED_BYTES_XMIT:
- case OID_GEN_DIRECTED_FRAMES_XMIT:
- case OID_GEN_MULTICAST_BYTES_XMIT:
- case OID_GEN_MULTICAST_FRAMES_XMIT:
- case OID_GEN_BROADCAST_BYTES_XMIT:
- case OID_GEN_BROADCAST_FRAMES_XMIT:
- case OID_GEN_DIRECTED_BYTES_RCV:
- case OID_GEN_DIRECTED_FRAMES_RCV:
- case OID_GEN_MULTICAST_BYTES_RCV:
- case OID_GEN_MULTICAST_FRAMES_RCV:
- case OID_GEN_BROADCAST_BYTES_RCV:
- case OID_GEN_BROADCAST_FRAMES_RCV:
- l_Status = NDIS_STATUS_INVALID_OID;
- break;
-
- //===================================================================
- // Not Handled
- //===================================================================
- default:
- DEBUGP (("[%s] Unhandled OID %lx\n", NAME (l_Adapter), p_OID));
- l_Status = NDIS_STATUS_INVALID_OID;
- break;
- }
-
- if (l_Status != NDIS_STATUS_SUCCESS)
- ;
- else if (l_QueryLength > p_BufferLength)
- {
- l_Status = NDIS_STATUS_INVALID_LENGTH;
- *p_BytesNeeded = l_QueryLength;
- }
- else
- NdisMoveMemory (p_Buffer, (PVOID) l_QueryPtr,
- (*p_BytesWritten = l_QueryLength));
-
- return l_Status;
-}
-
-NDIS_STATUS AdapterModify
-(IN NDIS_HANDLE p_AdapterContext,
- IN NDIS_OID p_OID,
- IN PVOID p_Buffer,
- IN ULONG p_BufferLength,
- OUT PULONG p_BytesRead,
- OUT PULONG p_BytesNeeded)
-{
- TapAdapterQueryPointer l_Query = (TapAdapterQueryPointer) p_Buffer;
- TapAdapterPointer l_Adapter = (TapAdapterPointer) p_AdapterContext;
- NDIS_STATUS l_Status = NDIS_STATUS_INVALID_OID;
- ULONG l_Long;
-
- switch (p_OID)
- {
- //==================================================================
- // Device Info
- //==================================================================
- case OID_802_3_MULTICAST_LIST:
- DEBUGP (("[%s] Setting [OID_802_3_MULTICAST_LIST]\n",
- NAME (l_Adapter)));
-
- *p_BytesNeeded = sizeof (ETH_ADDR);
- *p_BytesRead = p_BufferLength;
-
- if (p_BufferLength % sizeof (ETH_ADDR))
- l_Status = NDIS_STATUS_INVALID_LENGTH;
- else if (p_BufferLength > sizeof (MC_LIST))
- {
- l_Status = NDIS_STATUS_MULTICAST_FULL;
- *p_BytesNeeded = sizeof (MC_LIST);
- }
- else
- {
- NdisAcquireSpinLock (&l_Adapter->m_MCLock);
-
- NdisZeroMemory(&l_Adapter->m_MCList, sizeof (MC_LIST));
-
- NdisMoveMemory(&l_Adapter->m_MCList,
- p_Buffer,
- p_BufferLength);
-
- l_Adapter->m_MCListSize = p_BufferLength / sizeof (ETH_ADDR);
-
- NdisReleaseSpinLock (&l_Adapter->m_MCLock);
-
- l_Status = NDIS_STATUS_SUCCESS;
- }
- break;
-
- case OID_GEN_CURRENT_PACKET_FILTER:
- l_Status = NDIS_STATUS_INVALID_LENGTH;
- *p_BytesNeeded = 4;
-
- if (p_BufferLength >= sizeof (ULONG))
- {
- DEBUGP
- (("[%s] Setting [OID_GEN_CURRENT_PACKET_FILTER] to [0x%02lx]\n",
- NAME (l_Adapter), l_Query->m_Long));
- l_Status = NDIS_STATUS_SUCCESS;
- *p_BytesRead = sizeof (ULONG);
- }
- break;
-
- case OID_GEN_CURRENT_LOOKAHEAD:
- if (p_BufferLength < sizeof (ULONG))
- {
- l_Status = NDIS_STATUS_INVALID_LENGTH;
- *p_BytesNeeded = 4;
- }
- else if (l_Query->m_Long > DEFAULT_PACKET_LOOKAHEAD
- || l_Query->m_Long <= 0)
- {
- l_Status = NDIS_STATUS_INVALID_DATA;
- }
- else
- {
- DEBUGP (("[%s] Setting [OID_GEN_CURRENT_LOOKAHEAD] to [%d]\n",
- NAME (l_Adapter), l_Query->m_Long));
- l_Adapter->m_Lookahead = l_Query->m_Long;
- l_Status = NDIS_STATUS_SUCCESS;
- *p_BytesRead = sizeof (ULONG);
- }
- break;
-
- case OID_GEN_NETWORK_LAYER_ADDRESSES:
- l_Status = NDIS_STATUS_SUCCESS;
- *p_BytesRead = *p_BytesNeeded = 0;
- break;
-
- case OID_GEN_TRANSPORT_HEADER_OFFSET:
- l_Status = NDIS_STATUS_SUCCESS;
- *p_BytesRead = *p_BytesNeeded = 0;
- break;
-
- case OID_PNP_SET_POWER:
- do
- {
- NDIS_DEVICE_POWER_STATE NewDeviceState;
-
- NewDeviceState = (*(PNDIS_DEVICE_POWER_STATE) p_Buffer);
-
- switch (NewDeviceState)
- {
- case NdisDeviceStateD0:
- l_Adapter->m_DeviceState = '0';
- break;
- case NdisDeviceStateD1:
- l_Adapter->m_DeviceState = '1';
- break;
- case NdisDeviceStateD2:
- l_Adapter->m_DeviceState = '2';
- break;
- case NdisDeviceStateD3:
- l_Adapter->m_DeviceState = '3';
- break;
- default:
- l_Adapter->m_DeviceState = '?';
- break;
- }
-
- l_Status = NDIS_STATUS_FAILURE;
-
- //
- // Check for invalid length
- //
- if (p_BufferLength < sizeof (NDIS_DEVICE_POWER_STATE))
- {
- l_Status = NDIS_STATUS_INVALID_LENGTH;
- break;
- }
-
- if (NewDeviceState > NdisDeviceStateD0)
- {
- l_Adapter->m_InterfaceIsRunning = FALSE;
- DEBUGP (("[%s] Power management device state OFF\n",
- NAME (l_Adapter)));
- }
- else
- {
- l_Adapter->m_InterfaceIsRunning = TRUE;
- DEBUGP (("[%s] Power management device state ON\n",
- NAME (l_Adapter)));
- }
-
- l_Status = NDIS_STATUS_SUCCESS;
- }
- while (FALSE);
-
- if (l_Status == NDIS_STATUS_SUCCESS)
- {
- *p_BytesRead = sizeof (NDIS_DEVICE_POWER_STATE);
- *p_BytesNeeded = 0;
- }
- else
- {
- *p_BytesRead = 0;
- *p_BytesNeeded = sizeof (NDIS_DEVICE_POWER_STATE);
- }
- break;
-
- case OID_PNP_REMOVE_WAKE_UP_PATTERN:
- case OID_PNP_ADD_WAKE_UP_PATTERN:
- l_Status = NDIS_STATUS_SUCCESS;
- *p_BytesRead = *p_BytesNeeded = 0;
- break;
-
- default:
- DEBUGP (("[%s] Can't set value for OID %lx\n", NAME (l_Adapter),
- p_OID));
- l_Status = NDIS_STATUS_INVALID_OID;
- *p_BytesRead = *p_BytesNeeded = 0;
- break;
- }
-
- return l_Status;
-}
-
-// checksum code for ICMPv6 packet, taken from dhcp.c / udp_checksum
-// see RFC 4443, 2.3, and RFC 2460, 8.1
-USHORT
-icmpv6_checksum (const UCHAR *buf,
- const int len_icmpv6,
- const UCHAR *saddr6,
- const UCHAR *daddr6)
-{
- USHORT word16;
- ULONG sum = 0;
- int i;
-
- // make 16 bit words out of every two adjacent 8 bit words and
- // calculate the sum of all 16 bit words
- for (i = 0; i < len_icmpv6; i += 2){
- word16 = ((buf[i] << 8) & 0xFF00) + ((i + 1 < len_icmpv6) ? (buf[i+1] & 0xFF) : 0);
- sum += word16;
- }
-
- // add the IPv6 pseudo header which contains the IP source and destination addresses
- for (i = 0; i < 16; i += 2){
- word16 =((saddr6[i] << 8) & 0xFF00) + (saddr6[i+1] & 0xFF);
- sum += word16;
- }
- for (i = 0; i < 16; i += 2){
- word16 =((daddr6[i] << 8) & 0xFF00) + (daddr6[i+1] & 0xFF);
- sum += word16;
- }
-
- // the next-header number and the length of the ICMPv6 packet
- sum += (USHORT) IPPROTO_ICMPV6 + (USHORT) len_icmpv6;
-
- // keep only the last 16 bits of the 32 bit calculated sum and add the carries
- while (sum >> 16)
- sum = (sum & 0xFFFF) + (sum >> 16);
-
- // Take the one's complement of sum
- return ((USHORT) ~sum);
-}
-
-// check IPv6 packet for "is this an IPv6 Neighbor Solicitation that
-// the tap driver needs to answer?"
-// see RFC 4861 4.3 for the different cases
-static IPV6ADDR IPV6_NS_TARGET_MCAST =
- { 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x08 };
-static IPV6ADDR IPV6_NS_TARGET_UNICAST =
- { 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08 };
-
-#if 0
-BOOLEAN
-HandleIPv6NeighborDiscovery( TapAdapterPointer p_Adapter, UCHAR * m_Data )
-{
- const ETH_HEADER * e = (ETH_HEADER *) m_Data;
- const IPV6HDR *ipv6 = (IPV6HDR *) (m_Data + sizeof (ETH_HEADER));
- const ICMPV6_NS * icmpv6_ns = (ICMPV6_NS *) (m_Data + sizeof (ETH_HEADER) + sizeof (IPV6HDR));
- ICMPV6_NA_PKT *na;
- USHORT icmpv6_len, icmpv6_csum;
-
- // we don't really care about the destination MAC address here
- // - it's either a multicast MAC, or the userland destination MAC
- // but since the TAP driver is point-to-point, all packets are "for us"
-
- // IPv6 target address must be ff02::1::ff00:8 (multicast for
- // initial NS) or fe80::1 (unicast for recurrent NUD)
- if ( memcmp( ipv6->daddr, IPV6_NS_TARGET_MCAST,
- sizeof(IPV6ADDR) ) != 0 &&
- memcmp( ipv6->daddr, IPV6_NS_TARGET_UNICAST,
- sizeof(IPV6ADDR) ) != 0 )
- {
- return FALSE; // wrong target address
- }
-
- // IPv6 Next-Header must be ICMPv6
- if ( ipv6->nexthdr != IPPROTO_ICMPV6 )
- {
- return FALSE; // wrong next-header
- }
-
- // ICMPv6 type+code must be 135/0 for NS
- if ( icmpv6_ns->type != ICMPV6_TYPE_NS ||
- icmpv6_ns->code != ICMPV6_CODE_0 )
- {
- return FALSE; // wrong ICMPv6 type
- }
-
- // ICMPv6 target address must be fe80::8 (magic)
- if ( memcmp( icmpv6_ns->target_addr, IPV6_NS_TARGET_UNICAST,
- sizeof(IPV6ADDR) ) != 0 )
- {
- return FALSE; // not for us
- }
-
- // packet identified, build magic response packet
-
- na = (ICMPV6_NA_PKT *) MemAlloc (sizeof (ICMPV6_NA_PKT), TRUE);
- if ( !na ) return FALSE;
-
- //------------------------------------------------
- // Initialize Neighbour Advertisement reply packet
- //------------------------------------------------
-
- // ethernet header
- na->eth.proto = htons(ETH_P_IPV6);
- COPY_MAC(na->eth.dest, p_Adapter->m_MAC);
- COPY_MAC(na->eth.src, p_Adapter->m_TapToUser.dest);
-
- // IPv6 header
- na->ipv6.version_prio = ipv6->version_prio;
- NdisMoveMemory( na->ipv6.flow_lbl, ipv6->flow_lbl,
- sizeof(na->ipv6.flow_lbl) );
- icmpv6_len = sizeof(ICMPV6_NA_PKT) - sizeof(ETH_HEADER) - sizeof(IPV6HDR);
- na->ipv6.payload_len = htons(icmpv6_len);
- na->ipv6.nexthdr = IPPROTO_ICMPV6;
- na->ipv6.hop_limit = 255;
- NdisMoveMemory( na->ipv6.saddr, IPV6_NS_TARGET_UNICAST,
- sizeof(IPV6ADDR) );
- NdisMoveMemory( na->ipv6.daddr, ipv6->saddr,
- sizeof(IPV6ADDR) );
-
- // ICMPv6
- na->icmpv6.type = ICMPV6_TYPE_NA;
- na->icmpv6.code = ICMPV6_CODE_0;
- na->icmpv6.checksum = 0;
- na->icmpv6.rso_bits = 0x60; // Solicited + Override
- NdisZeroMemory( na->icmpv6.reserved, sizeof(na->icmpv6.reserved) );
- NdisMoveMemory( na->icmpv6.target_addr, IPV6_NS_TARGET_UNICAST,
- sizeof(IPV6ADDR) );
-
- // ICMPv6 option "Target Link Layer Address"
- na->icmpv6.opt_type = ICMPV6_OPTION_TLLA;
- na->icmpv6.opt_length = ICMPV6_LENGTH_TLLA;
- COPY_MAC( na->icmpv6.target_macaddr, p_Adapter->m_TapToUser.dest );
-
- // calculate and set checksum
- icmpv6_csum = icmpv6_checksum ( (UCHAR*) &(na->icmpv6),
- icmpv6_len,
- na->ipv6.saddr,
- na->ipv6.daddr );
- na->icmpv6.checksum = htons( icmpv6_csum );
-
- DUMP_PACKET ("HandleIPv6NeighborDiscovery",
- (unsigned char *) na,
- sizeof (ICMPV6_NA_PKT));
-
- InjectPacketDeferred (p_Adapter, (UCHAR *) na, sizeof (ICMPV6_NA_PKT));
-
- MemFree (na, sizeof (ICMPV6_NA_PKT));
-
- return TRUE; // all fine
-}
-#endif
-
-//====================================================================
-// Adapter Transmission
-//====================================================================
-NDIS_STATUS
-AdapterTransmit (IN NDIS_HANDLE p_AdapterContext,
- IN PNDIS_PACKET p_Packet,
- IN UINT p_Flags)
-{
- TapAdapterPointer l_Adapter = (TapAdapterPointer) p_AdapterContext;
- ULONG l_Index = 0, l_PacketLength = 0;
- UINT l_BufferLength = 0;
- PIRP l_IRP;
- TapPacketPointer l_PacketBuffer;
- PNDIS_BUFFER l_NDIS_Buffer;
- PUCHAR l_Buffer;
- PVOID result;
-
- NdisQueryPacket (p_Packet, NULL, NULL, &l_NDIS_Buffer, &l_PacketLength);
-
- //====================================================
- // Here we abandon the transmission attempt if any of
- // the parameters is wrong or memory allocation fails
- // but we do not indicate failure. The packet is
- // silently dropped.
- //====================================================
-
- if (l_PacketLength < ETHERNET_HEADER_SIZE || l_PacketLength > 65535)
- goto exit_fail;
- else if (!l_Adapter->m_Extension.m_TapOpens || !l_Adapter->m_MediaState)
- goto exit_success; // Nothing is bound to the TAP device
-
- if (NdisAllocateMemoryWithTag (&l_PacketBuffer,
- TAP_PACKET_SIZE (l_PacketLength),
- '5PAT') != NDIS_STATUS_SUCCESS)
- goto exit_no_resources;
-
- if (l_PacketBuffer == NULL)
- goto exit_no_resources;
-
- l_PacketBuffer->m_SizeFlags = (l_PacketLength & TP_SIZE_MASK);
-
- //===========================
- // Reassemble packet contents
- //===========================
-
- __try
- {
- l_Index = 0;
- while (l_NDIS_Buffer && l_Index < l_PacketLength)
- {
- ULONG newlen;
- NdisQueryBuffer (l_NDIS_Buffer, (PVOID *) & l_Buffer,
- &l_BufferLength);
- newlen = l_Index + l_BufferLength;
- if (newlen > l_PacketLength)
- {
- NOTE_ERROR ();
- goto no_queue; /* overflow */
- }
- NdisMoveMemory (l_PacketBuffer->m_Data + l_Index, l_Buffer,
- l_BufferLength);
- l_Index = newlen;
- NdisGetNextBuffer (l_NDIS_Buffer, &l_NDIS_Buffer);
- }
- if (l_Index != l_PacketLength)
- {
- NOTE_ERROR ();
- goto no_queue; /* underflow */
- }
-
- DUMP_PACKET ("AdapterTransmit", l_PacketBuffer->m_Data, l_PacketLength);
-
- //=====================================================
- // If IPv4 packet, check whether or not packet
- // was truncated.
- //=====================================================
-#if PACKET_TRUNCATION_CHECK
- IPv4PacketSizeVerify (l_PacketBuffer->m_Data, l_PacketLength, FALSE, "TX", &l_Adapter->m_TxTrunc);
-#endif
-
-#if 0
- //=====================================================
- // Are we running in DHCP server masquerade mode?
- //
- // If so, catch both DHCP requests and ARP queries
- // to resolve the address of our virtual DHCP server.
- //=====================================================
- if (l_Adapter->m_dhcp_enabled)
- {
- const ETH_HEADER *eth = (ETH_HEADER *) l_PacketBuffer->m_Data;
- const IPHDR *ip = (IPHDR *) (l_PacketBuffer->m_Data + sizeof (ETH_HEADER));
- const UDPHDR *udp = (UDPHDR *) (l_PacketBuffer->m_Data + sizeof (ETH_HEADER) + sizeof (IPHDR));
-
- // ARP packet?
- if (l_PacketLength == sizeof (ARP_PACKET)
- && eth->proto == htons (ETH_P_ARP)
- && l_Adapter->m_dhcp_server_arp)
- {
- if (ProcessARP (l_Adapter,
- (PARP_PACKET) l_PacketBuffer->m_Data,
- l_Adapter->m_dhcp_addr,
- l_Adapter->m_dhcp_server_ip,
- ~0,
- l_Adapter->m_dhcp_server_mac))
- goto no_queue;
- }
-#endif
-
-#if 0
- // DHCP packet?
- else if (l_PacketLength >= sizeof (ETH_HEADER) + sizeof (IPHDR) + sizeof (UDPHDR) + sizeof (DHCP)
- && eth->proto == htons (ETH_P_IP)
- && ip->version_len == 0x45 // IPv4, 20 byte header
- && ip->protocol == IPPROTO_UDP
- && udp->dest == htons (BOOTPS_PORT))
- {
- const DHCP *dhcp = (DHCP *) (l_PacketBuffer->m_Data
- + sizeof (ETH_HEADER)
- + sizeof (IPHDR)
- + sizeof (UDPHDR));
-
- const int optlen = l_PacketLength
- - sizeof (ETH_HEADER)
- - sizeof (IPHDR)
- - sizeof (UDPHDR)
- - sizeof (DHCP);
-
- if (optlen > 0) // we must have at least one DHCP option
- {
- if (ProcessDHCP (l_Adapter, eth, ip, udp, dhcp, optlen))
- goto no_queue;
- }
- else
- goto no_queue;
- }
- }
-#endif
-
- //===============================================
- // In Point-To-Point mode, check to see whether
- // packet is ARP (handled) or IPv4 (sent to app).
- // IPv6 packets are inspected for neighbour discovery
- // (to be handled locally), and the rest is forwarded
- // all other protocols are dropped
- //===============================================
-#if 0
- if (l_Adapter->m_tun)
- {
- ETH_HEADER *e;
-
- if (l_PacketLength < ETHERNET_HEADER_SIZE)
- goto no_queue;
-
- e = (ETH_HEADER *) l_PacketBuffer->m_Data;
-
- switch (ntohs (e->proto))
- {
- case ETH_P_ARP:
-
- // Make sure that packet is the
- // right size for ARP.
- if (l_PacketLength != sizeof (ARP_PACKET))
- goto no_queue;
-
- ProcessARP (l_Adapter,
- (PARP_PACKET) l_PacketBuffer->m_Data,
- l_Adapter->m_localIP,
- l_Adapter->m_remoteNetwork,
- l_Adapter->m_remoteNetmask,
- l_Adapter->m_TapToUser.dest);
-
- default:
- goto no_queue;
-
- case ETH_P_IP:
-
- // Make sure that packet is large
- // enough to be IPv4.
- if (l_PacketLength
- < ETHERNET_HEADER_SIZE + IP_HEADER_SIZE)
- goto no_queue;
-
- // Only accept directed packets,
- // not broadcasts.
- if (memcmp (e, &l_Adapter->m_TapToUser, ETHERNET_HEADER_SIZE))
- goto no_queue;
-
- // Packet looks like IPv4, queue it.
- l_PacketBuffer->m_SizeFlags |= TP_TUN;
- break;
-
- case ETH_P_IPV6:
- // make sure that packet is large
- // enough to be IPv6
- if (l_PacketLength
- < ETHERNET_HEADER_SIZE + IPV6_HEADER_SIZE)
- goto no_queue;
-
- // broadcasts and multicasts are handled specially
- // (to be implemented)
-
- // neighbor discovery packets to fe80::8 are special
- // OpenVPN sets this next-hop to signal "handled by tapdrv"
- if ( HandleIPv6NeighborDiscovery( l_Adapter,
- l_PacketBuffer->m_Data ))
- {
- goto no_queue;
- }
-
- // Packet looks like IPv6, queue it :-)
- l_PacketBuffer->m_SizeFlags |= TP_TUN;
- }
- }
-#endif
-
- //===============================================
- // Push packet onto queue to wait for read from
- // userspace.
- //===============================================
-
- NdisAcquireSpinLock (&l_Adapter->m_Extension.m_QueueLock);
-
- result = NULL;
- if (IS_UP (l_Adapter))
- result = QueuePush (l_Adapter->m_Extension.m_PacketQueue, l_PacketBuffer);
-
- NdisReleaseSpinLock (&l_Adapter->m_Extension.m_QueueLock);
-
- if ((TapPacketPointer) result != l_PacketBuffer)
- {
- // adapter receive overrun
- INCREMENT_STAT (l_Adapter->m_TxErr);
- goto no_queue;
- }
- else
- {
- INCREMENT_STAT (l_Adapter->m_Tx);
- }
-
- //============================================================
- // Cycle through IRPs and packets, try to satisfy each pending
- // IRP with a queued packet.
- //============================================================
- while (TRUE)
- {
- l_IRP = NULL;
- l_PacketBuffer = NULL;
-
- NdisAcquireSpinLock (&l_Adapter->m_Extension.m_QueueLock);
-
- if (IS_UP (l_Adapter)
- && QueueCount (l_Adapter->m_Extension.m_PacketQueue)
- && QueueCount (l_Adapter->m_Extension.m_IrpQueue))
- {
- l_IRP = (PIRP) QueuePop (l_Adapter->m_Extension.m_IrpQueue);
- l_PacketBuffer = (TapPacketPointer)
- QueuePop (l_Adapter->m_Extension.m_PacketQueue);
- }
-
- NdisReleaseSpinLock (&l_Adapter->m_Extension.m_QueueLock);
-
- MYASSERT ((l_IRP != NULL) + (l_PacketBuffer != NULL) != 1);
-
- if (l_IRP && l_PacketBuffer)
- {
- CompleteIRP (l_IRP,
- l_PacketBuffer,
- IO_NETWORK_INCREMENT);
- }
- else
- break;
- }
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- }
-
- return NDIS_STATUS_SUCCESS;
-
- no_queue:
- NdisFreeMemory (l_PacketBuffer,
- TAP_PACKET_SIZE (l_PacketLength),
- 0);
-
- exit_success:
- return NDIS_STATUS_SUCCESS;
-
- exit_fail:
- return NDIS_STATUS_FAILURE;
-
- exit_no_resources:
- return NDIS_STATUS_RESOURCES;
-}
-
-//======================================================================
-// Hooks for catching TAP device IRP's.
-//======================================================================
-
-DRIVER_DISPATCH TapDeviceHook;
-NTSTATUS
-TapDeviceHook (IN PDEVICE_OBJECT p_DeviceObject, IN PIRP p_IRP)
-{
- TapAdapterPointer l_Adapter = LookupAdapterInInstanceList (p_DeviceObject);
- PIO_STACK_LOCATION l_IrpSp;
- NTSTATUS l_Status = STATUS_SUCCESS;
- BOOLEAN accessible;
-
- l_IrpSp = IoGetCurrentIrpStackLocation (p_IRP);
-
- p_IRP->IoStatus.Status = STATUS_SUCCESS;
- p_IRP->IoStatus.Information = 0;
-
- if (!l_Adapter || l_Adapter->m_Extension.m_Halt)
- {
- DEBUGP (("TapDeviceHook called when TAP device is halted, MajorFunction=%d\n",
- (int)l_IrpSp->MajorFunction));
-
- if (l_IrpSp->MajorFunction == IRP_MJ_CLOSE)
- {
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- return STATUS_SUCCESS;
- }
- else
- {
- p_IRP->IoStatus.Status = STATUS_NO_SUCH_DEVICE;
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- return STATUS_NO_SUCH_DEVICE;
- }
- }
-
- switch (l_IrpSp->MajorFunction)
- {
- //===========================================================
- // Ioctl call handlers
- //===========================================================
- case IRP_MJ_DEVICE_CONTROL:
- {
- switch (l_IrpSp->Parameters.DeviceIoControl.IoControlCode)
- {
- case TAP_WIN_IOCTL_GET_MAC:
- {
- if (l_IrpSp->Parameters.DeviceIoControl.OutputBufferLength
- >= sizeof (MACADDR))
- {
- COPY_MAC (p_IRP->AssociatedIrp.SystemBuffer,
- l_Adapter->m_MAC);
- p_IRP->IoStatus.Information = sizeof (MACADDR);
- }
- else
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_BUFFER_TOO_SMALL;
- }
- break;
- }
- case TAP_WIN_IOCTL_GET_VERSION:
- {
- const ULONG size = sizeof (ULONG) * 3;
- if (l_IrpSp->Parameters.DeviceIoControl.OutputBufferLength
- >= size)
- {
- ((PULONG) (p_IRP->AssociatedIrp.SystemBuffer))[0]
- = TAP_DRIVER_MAJOR_VERSION;
- ((PULONG) (p_IRP->AssociatedIrp.SystemBuffer))[1]
- = TAP_DRIVER_MINOR_VERSION;
- ((PULONG) (p_IRP->AssociatedIrp.SystemBuffer))[2]
-#if DBG
- = 1;
-#else
- = 0;
-#endif
- p_IRP->IoStatus.Information = size;
- }
- else
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_BUFFER_TOO_SMALL;
- }
-
- break;
- }
- case TAP_WIN_IOCTL_GET_MTU:
- {
- const ULONG size = sizeof (ULONG) * 1;
- if (l_IrpSp->Parameters.DeviceIoControl.OutputBufferLength
- >= size)
- {
- ((PULONG) (p_IRP->AssociatedIrp.SystemBuffer))[0]
- = l_Adapter->m_MTU;
- p_IRP->IoStatus.Information = size;
- }
- else
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_BUFFER_TOO_SMALL;
- }
-
- break;
- }
- case TAP_WIN_IOCTL_GET_INFO:
- {
- char state[16];
- if (l_Adapter->m_InterfaceIsRunning)
- state[0] = 'A';
- else
- state[0] = 'a';
- if (l_Adapter->m_Extension.m_TapIsRunning)
- state[1] = 'T';
- else
- state[1] = 't';
- state[2] = l_Adapter->m_DeviceState;
- if (l_Adapter->m_MediaStateAlwaysConnected)
- state[3] = 'C';
- else
- state[3] = 'c';
- state[4] = '\0';
-
- p_IRP->IoStatus.Status = l_Status = RtlStringCchPrintfExA (
- ((LPTSTR) (p_IRP->AssociatedIrp.SystemBuffer)),
- l_IrpSp->Parameters.DeviceIoControl.OutputBufferLength,
- NULL,
- NULL,
- STRSAFE_FILL_BEHIND_NULL | STRSAFE_IGNORE_NULLS,
-#if PACKET_TRUNCATION_CHECK
- "State=%s Err=[%s/%d] #O=%d Tx=[%d,%d,%d] Rx=[%d,%d,%d] IrpQ=[%d,%d,%d] PktQ=[%d,%d,%d] InjQ=[%d,%d,%d]",
-#else
- "State=%s Err=[%s/%d] #O=%d Tx=[%d,%d] Rx=[%d,%d] IrpQ=[%d,%d,%d] PktQ=[%d,%d,%d] InjQ=[%d,%d,%d]",
-#endif
- state,
- g_LastErrorFilename,
- g_LastErrorLineNumber,
- (int)l_Adapter->m_Extension.m_NumTapOpens,
- (int)l_Adapter->m_Tx,
- (int)l_Adapter->m_TxErr,
-#if PACKET_TRUNCATION_CHECK
- (int)l_Adapter->m_TxTrunc,
-#endif
- (int)l_Adapter->m_Rx,
- (int)l_Adapter->m_RxErr,
-#if PACKET_TRUNCATION_CHECK
- (int)l_Adapter->m_RxTrunc,
-#endif
- (int)l_Adapter->m_Extension.m_IrpQueue->size,
- (int)l_Adapter->m_Extension.m_IrpQueue->max_size,
- (int)IRP_QUEUE_SIZE,
- (int)l_Adapter->m_Extension.m_PacketQueue->size,
- (int)l_Adapter->m_Extension.m_PacketQueue->max_size,
- (int)PACKET_QUEUE_SIZE,
- (int)l_Adapter->m_Extension.m_InjectQueue->size,
- (int)l_Adapter->m_Extension.m_InjectQueue->max_size,
- (int)INJECT_QUEUE_SIZE
- );
-
- p_IRP->IoStatus.Information
- = l_IrpSp->Parameters.DeviceIoControl.OutputBufferLength;
-
- break;
- }
-
-#if DBG
- case TAP_WIN_IOCTL_GET_LOG_LINE:
- {
- if (GetDebugLine ((LPTSTR)p_IRP->AssociatedIrp.SystemBuffer,
- l_IrpSp->Parameters.DeviceIoControl.OutputBufferLength))
- p_IRP->IoStatus.Status = l_Status = STATUS_SUCCESS;
- else
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
-
- p_IRP->IoStatus.Information
- = l_IrpSp->Parameters.DeviceIoControl.OutputBufferLength;
-
- break;
- }
-#endif
-
-#if 0
- case TAP_WIN_IOCTL_CONFIG_TUN:
- {
- if (l_IrpSp->Parameters.DeviceIoControl.InputBufferLength >=
- (sizeof (IPADDR) * 3))
- {
- MACADDR dest;
-
- l_Adapter->m_tun = FALSE;
-
- GenerateRelatedMAC (dest, l_Adapter->m_MAC, 1);
-
- l_Adapter->m_localIP = ((IPADDR*) (p_IRP->AssociatedIrp.SystemBuffer))[0];
- l_Adapter->m_remoteNetwork = ((IPADDR*) (p_IRP->AssociatedIrp.SystemBuffer))[1];
- l_Adapter->m_remoteNetmask = ((IPADDR*) (p_IRP->AssociatedIrp.SystemBuffer))[2];
-
- // sanity check on network/netmask
- if ((l_Adapter->m_remoteNetwork & l_Adapter->m_remoteNetmask) != l_Adapter->m_remoteNetwork)
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INVALID_PARAMETER;
- break;
- }
-
- COPY_MAC (l_Adapter->m_TapToUser.src, l_Adapter->m_MAC);
- COPY_MAC (l_Adapter->m_TapToUser.dest, dest);
- COPY_MAC (l_Adapter->m_UserToTap.src, dest);
- COPY_MAC (l_Adapter->m_UserToTap.dest, l_Adapter->m_MAC);
-
- l_Adapter->m_TapToUser.proto = l_Adapter->m_UserToTap.proto = htons (ETH_P_IP);
- l_Adapter->m_UserToTap_IPv6 = l_Adapter->m_UserToTap;
- l_Adapter->m_UserToTap_IPv6.proto = htons(ETH_P_IPV6);
-
- l_Adapter->m_tun = TRUE;
-
- CheckIfDhcpAndTunMode (l_Adapter);
-
- p_IRP->IoStatus.Information = 1; // Simple boolean value
- }
- else
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INVALID_PARAMETER;
- }
-
- break;
- }
-#endif
-
-#if 0
- case TAP_WIN_IOCTL_CONFIG_POINT_TO_POINT: // Obsoleted by TAP_WIN_IOCTL_CONFIG_TUN
- {
- if (l_IrpSp->Parameters.DeviceIoControl.InputBufferLength >=
- (sizeof (IPADDR) * 2))
- {
- MACADDR dest;
-
- l_Adapter->m_tun = FALSE;
-
- GenerateRelatedMAC (dest, l_Adapter->m_MAC, 1);
-
- l_Adapter->m_localIP = ((IPADDR*) (p_IRP->AssociatedIrp.SystemBuffer))[0];
- l_Adapter->m_remoteNetwork = ((IPADDR*) (p_IRP->AssociatedIrp.SystemBuffer))[1];
- l_Adapter->m_remoteNetmask = ~0;
-
- COPY_MAC (l_Adapter->m_TapToUser.src, l_Adapter->m_MAC);
- COPY_MAC (l_Adapter->m_TapToUser.dest, dest);
- COPY_MAC (l_Adapter->m_UserToTap.src, dest);
- COPY_MAC (l_Adapter->m_UserToTap.dest, l_Adapter->m_MAC);
-
- l_Adapter->m_TapToUser.proto = l_Adapter->m_UserToTap.proto = htons (ETH_P_IP);
- l_Adapter->m_UserToTap_IPv6 = l_Adapter->m_UserToTap;
- l_Adapter->m_UserToTap_IPv6.proto = htons(ETH_P_IPV6);
-
- l_Adapter->m_tun = TRUE;
-
- CheckIfDhcpAndTunMode (l_Adapter);
-
- p_IRP->IoStatus.Information = 1; // Simple boolean value
- }
- else
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INVALID_PARAMETER;
- }
-
- break;
- }
-#endif
-
- case TAP_WIN_IOCTL_SET_MEDIA_STATUS:
- {
- if (l_IrpSp->Parameters.DeviceIoControl.InputBufferLength >=
- (sizeof (ULONG) * 1))
- {
- ULONG parm = ((PULONG) (p_IRP->AssociatedIrp.SystemBuffer))[0];
- SetMediaStatus (l_Adapter, (BOOLEAN) parm);
- p_IRP->IoStatus.Information = 1;
- }
- else
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INVALID_PARAMETER;
- }
- break;
- }
-
-#if 0
- case TAP_WIN_IOCTL_CONFIG_DHCP_MASQ:
- {
- if (l_IrpSp->Parameters.DeviceIoControl.InputBufferLength >=
- (sizeof (IPADDR) * 4))
- {
- l_Adapter->m_dhcp_enabled = FALSE;
- l_Adapter->m_dhcp_server_arp = FALSE;
- l_Adapter->m_dhcp_user_supplied_options_buffer_len = 0;
-
- // Adapter IP addr / netmask
- l_Adapter->m_dhcp_addr =
- ((IPADDR*) (p_IRP->AssociatedIrp.SystemBuffer))[0];
- l_Adapter->m_dhcp_netmask =
- ((IPADDR*) (p_IRP->AssociatedIrp.SystemBuffer))[1];
-
- // IP addr of DHCP masq server
- l_Adapter->m_dhcp_server_ip =
- ((IPADDR*) (p_IRP->AssociatedIrp.SystemBuffer))[2];
-
- // Lease time in seconds
- l_Adapter->m_dhcp_lease_time =
- ((IPADDR*) (p_IRP->AssociatedIrp.SystemBuffer))[3];
-
- GenerateRelatedMAC (l_Adapter->m_dhcp_server_mac, l_Adapter->m_MAC, 2);
-
- l_Adapter->m_dhcp_enabled = TRUE;
- l_Adapter->m_dhcp_server_arp = TRUE;
-
- CheckIfDhcpAndTunMode (l_Adapter);
-
- p_IRP->IoStatus.Information = 1; // Simple boolean value
- }
- else
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INVALID_PARAMETER;
- }
-
- break;
- }
-
- case TAP_WIN_IOCTL_CONFIG_DHCP_SET_OPT:
- {
- if (l_IrpSp->Parameters.DeviceIoControl.InputBufferLength <=
- DHCP_USER_SUPPLIED_OPTIONS_BUFFER_SIZE
- && l_Adapter->m_dhcp_enabled)
- {
- l_Adapter->m_dhcp_user_supplied_options_buffer_len = 0;
-
- NdisMoveMemory (l_Adapter->m_dhcp_user_supplied_options_buffer,
- p_IRP->AssociatedIrp.SystemBuffer,
- l_IrpSp->Parameters.DeviceIoControl.InputBufferLength);
-
- l_Adapter->m_dhcp_user_supplied_options_buffer_len =
- l_IrpSp->Parameters.DeviceIoControl.InputBufferLength;
-
- p_IRP->IoStatus.Information = 1; // Simple boolean value
- }
- else
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INVALID_PARAMETER;
- }
-
- break;
- }
-#endif
-
- default:
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INVALID_PARAMETER;
- break;
- }
- }
-
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- break;
- }
-
- //===========================================================
- // User mode thread issued a read request on the tap device
- // If there are packets waiting to be read, then the request
- // will be satisfied here. If not, then the request will be
- // queued and satisfied by any packet that is not used to
- // satisfy requests ahead of it.
- //===========================================================
- case IRP_MJ_READ:
- {
- TapPacketPointer l_PacketBuffer;
- BOOLEAN pending = FALSE;
-
- // Save IRP-accessible copy of buffer length
- p_IRP->IoStatus.Information = l_IrpSp->Parameters.Read.Length;
-
- if (p_IRP->MdlAddress == NULL)
- {
- DEBUGP (("[%s] MdlAddress is NULL for IRP_MJ_READ\n",
- NAME (l_Adapter)));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INVALID_PARAMETER;
- p_IRP->IoStatus.Information = 0;
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- break;
- }
- else if ((p_IRP->AssociatedIrp.SystemBuffer =
- MmGetSystemAddressForMdlSafe
- (p_IRP->MdlAddress, NormalPagePriority)) == NULL)
- {
- DEBUGP (("[%s] Could not map address in IRP_MJ_READ\n",
- NAME (l_Adapter)));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INSUFFICIENT_RESOURCES;
- p_IRP->IoStatus.Information = 0;
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- break;
- }
- else if (!l_Adapter->m_InterfaceIsRunning)
- {
- DEBUGP (("[%s] Interface is down in IRP_MJ_READ\n",
- NAME (l_Adapter)));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
- p_IRP->IoStatus.Information = 0;
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- break;
- }
-
- //==================================
- // Can we provide immediate service?
- //==================================
-
- l_PacketBuffer = NULL;
-
- NdisAcquireSpinLock (&l_Adapter->m_Extension.m_QueueLock);
-
- if (IS_UP (l_Adapter)
- && QueueCount (l_Adapter->m_Extension.m_PacketQueue)
- && QueueCount (l_Adapter->m_Extension.m_IrpQueue) == 0)
- {
- l_PacketBuffer = (TapPacketPointer)
- QueuePop (l_Adapter->m_Extension.m_PacketQueue);
- }
-
- NdisReleaseSpinLock (&l_Adapter->m_Extension.m_QueueLock);
-
- if (l_PacketBuffer)
- {
- l_Status = CompleteIRP (p_IRP,
- l_PacketBuffer,
- IO_NO_INCREMENT);
- break;
- }
-
- //=============================
- // Attempt to pend read request
- //=============================
-
- NdisAcquireSpinLock (&l_Adapter->m_Extension.m_QueueLock);
-
- if (IS_UP (l_Adapter)
- && QueuePush (l_Adapter->m_Extension.m_IrpQueue, p_IRP) == (PIRP) p_IRP)
- {
- IoSetCancelRoutine (p_IRP, CancelIRPCallback);
- l_Status = STATUS_PENDING;
- IoMarkIrpPending (p_IRP);
- pending = TRUE;
- }
-
- NdisReleaseSpinLock (&l_Adapter->m_Extension.m_QueueLock);
-
- if (pending)
- break;
-
- // Can't queue anymore IRP's
- DEBUGP (("[%s] TAP [%s] read IRP overrun\n",
- NAME (l_Adapter), l_Adapter->m_Extension.m_TapName));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
- p_IRP->IoStatus.Information = 0;
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- break;
- }
-
- //==============================================================
- // User mode issued a WriteFile request on the TAP file handle.
- // The request will always get satisfied here. The call may
- // fail if there are too many pending packets (queue full).
- //==============================================================
- case IRP_MJ_WRITE:
- {
- if (p_IRP->MdlAddress == NULL)
- {
- DEBUGP (("[%s] MdlAddress is NULL for IRP_MJ_WRITE\n",
- NAME (l_Adapter)));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INVALID_PARAMETER;
- p_IRP->IoStatus.Information = 0;
- }
- else if ((p_IRP->AssociatedIrp.SystemBuffer =
- MmGetSystemAddressForMdlSafe
- (p_IRP->MdlAddress, NormalPagePriority)) == NULL)
- {
- DEBUGP (("[%s] Could not map address in IRP_MJ_WRITE\n",
- NAME (l_Adapter)));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_INSUFFICIENT_RESOURCES;
- p_IRP->IoStatus.Information = 0;
- }
- else if (!l_Adapter->m_InterfaceIsRunning)
- {
- DEBUGP (("[%s] Interface is down in IRP_MJ_WRITE\n",
- NAME (l_Adapter)));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
- p_IRP->IoStatus.Information = 0;
- }
-#if 0
- else if (!l_Adapter->m_tun && ((l_IrpSp->Parameters.Write.Length) >= ETHERNET_HEADER_SIZE))
- {
- __try
- {
- p_IRP->IoStatus.Information = l_IrpSp->Parameters.Write.Length;
-
- DUMP_PACKET ("IRP_MJ_WRITE ETH",
- (unsigned char *) p_IRP->AssociatedIrp.SystemBuffer,
- l_IrpSp->Parameters.Write.Length);
-
- //=====================================================
- // If IPv4 packet, check whether or not packet
- // was truncated.
- //=====================================================
-#if PACKET_TRUNCATION_CHECK
- IPv4PacketSizeVerify ((unsigned char *) p_IRP->AssociatedIrp.SystemBuffer,
- l_IrpSp->Parameters.Write.Length,
- FALSE,
- "RX",
- &l_Adapter->m_RxTrunc);
-#endif
-
- NdisMEthIndicateReceive
- (l_Adapter->m_MiniportAdapterHandle,
- (NDIS_HANDLE) l_Adapter,
- (unsigned char *) p_IRP->AssociatedIrp.SystemBuffer,
- ETHERNET_HEADER_SIZE,
- (unsigned char *) p_IRP->AssociatedIrp.SystemBuffer + ETHERNET_HEADER_SIZE,
- l_IrpSp->Parameters.Write.Length - ETHERNET_HEADER_SIZE,
- l_IrpSp->Parameters.Write.Length - ETHERNET_HEADER_SIZE);
-
- NdisMEthIndicateReceiveComplete (l_Adapter->m_MiniportAdapterHandle);
-
- p_IRP->IoStatus.Status = l_Status = STATUS_SUCCESS;
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- DEBUGP (("[%s] NdisMEthIndicateReceive failed in IRP_MJ_WRITE\n",
- NAME (l_Adapter)));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
- p_IRP->IoStatus.Information = 0;
- }
- }
-#endif
-#if 0
- else if (l_Adapter->m_tun && ((l_IrpSp->Parameters.Write.Length) >= IP_HEADER_SIZE))
- {
- __try
- {
- ETH_HEADER * p_UserToTap = &l_Adapter->m_UserToTap;
-
- // for IPv6, need to use ethernet header with IPv6 proto
- if ( IPH_GET_VER( ((IPHDR*) p_IRP->AssociatedIrp.SystemBuffer)->version_len) == 6 )
- {
- p_UserToTap = &l_Adapter->m_UserToTap_IPv6;
- }
-
- p_IRP->IoStatus.Information = l_IrpSp->Parameters.Write.Length;
-
- DUMP_PACKET2 ("IRP_MJ_WRITE P2P",
- p_UserToTap,
- (unsigned char *) p_IRP->AssociatedIrp.SystemBuffer,
- l_IrpSp->Parameters.Write.Length);
-
- //=====================================================
- // If IPv4 packet, check whether or not packet
- // was truncated.
- //=====================================================
-#if PACKET_TRUNCATION_CHECK
- IPv4PacketSizeVerify ((unsigned char *) p_IRP->AssociatedIrp.SystemBuffer,
- l_IrpSp->Parameters.Write.Length,
- TRUE,
- "RX",
- &l_Adapter->m_RxTrunc);
-#endif
-
- NdisMEthIndicateReceive
- (l_Adapter->m_MiniportAdapterHandle,
- (NDIS_HANDLE) l_Adapter,
- (unsigned char *) p_UserToTap,
- sizeof (ETH_HEADER),
- (unsigned char *) p_IRP->AssociatedIrp.SystemBuffer,
- l_IrpSp->Parameters.Write.Length,
- l_IrpSp->Parameters.Write.Length);
-
- NdisMEthIndicateReceiveComplete (l_Adapter->m_MiniportAdapterHandle);
-
- p_IRP->IoStatus.Status = l_Status = STATUS_SUCCESS;
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- DEBUGP (("[%s] NdisMEthIndicateReceive failed in IRP_MJ_WRITE (P2P)\n",
- NAME (l_Adapter)));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
- p_IRP->IoStatus.Information = 0;
- }
- }
-#endif
- else
- {
- DEBUGP (("[%s] Bad buffer size in IRP_MJ_WRITE, len=%d\n",
- NAME (l_Adapter),
- l_IrpSp->Parameters.Write.Length));
- NOTE_ERROR ();
- p_IRP->IoStatus.Information = 0; // ETHERNET_HEADER_SIZE;
- p_IRP->IoStatus.Status = l_Status = STATUS_BUFFER_TOO_SMALL;
- }
-
- if (l_Status == STATUS_SUCCESS)
- INCREMENT_STAT (l_Adapter->m_Rx);
- else
- INCREMENT_STAT (l_Adapter->m_RxErr);
-
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- break;
- }
-
- //--------------------------------------------------------------
- // User mode thread has called CreateFile() on the tap device
- //--------------------------------------------------------------
- case IRP_MJ_CREATE:
- {
- BOOLEAN succeeded = FALSE;
- BOOLEAN mutex_succeeded;
-
- DEBUGP
- (("[%s] [TAP] release [%d.%d] open request (m_TapOpens=%d)\n",
- NAME (l_Adapter), TAP_DRIVER_MAJOR_VERSION,
- TAP_DRIVER_MINOR_VERSION, l_Adapter->m_Extension.m_TapOpens));
-
- ACQUIRE_MUTEX_ADAPTIVE (&l_Adapter->m_Extension.m_OpenCloseMutex, mutex_succeeded);
- if (mutex_succeeded)
- {
- if (l_Adapter->m_Extension.m_TapIsRunning && !l_Adapter->m_Extension.m_TapOpens)
- {
- ResetTapAdapterState (l_Adapter);
- l_Adapter->m_Extension.m_TapOpens = 1;
- succeeded = TRUE;
- }
-
- if (succeeded)
- {
- INCREMENT_STAT (l_Adapter->m_Extension.m_NumTapOpens);
- p_IRP->IoStatus.Status = l_Status = STATUS_SUCCESS;
- p_IRP->IoStatus.Information = 0;
- }
- else
- {
- DEBUGP (("[%s] TAP is presently unavailable (m_TapOpens=%d)\n",
- NAME (l_Adapter), l_Adapter->m_Extension.m_TapOpens));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
- p_IRP->IoStatus.Information = 0;
- }
-
- RELEASE_MUTEX (&l_Adapter->m_Extension.m_OpenCloseMutex);
- }
- else
- {
- DEBUGP (("[%s] TAP is presently locked (m_TapOpens=%d)\n",
- NAME (l_Adapter), l_Adapter->m_Extension.m_TapOpens));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
- p_IRP->IoStatus.Information = 0;
- }
-
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- break;
- }
-
- //-----------------------------------------------------------
- // User mode thread called CloseHandle() on the tap device
- //-----------------------------------------------------------
- case IRP_MJ_CLOSE:
- {
- BOOLEAN mutex_succeeded;
-
- DEBUGP (("[%s] [TAP] release [%d.%d] close/cleanup request\n",
- NAME (l_Adapter), TAP_DRIVER_MAJOR_VERSION,
- TAP_DRIVER_MINOR_VERSION));
-
- ACQUIRE_MUTEX_ADAPTIVE (&l_Adapter->m_Extension.m_OpenCloseMutex, mutex_succeeded);
- if (mutex_succeeded)
- {
- l_Adapter->m_Extension.m_TapOpens = 0;
- ResetTapAdapterState (l_Adapter);
- FlushQueues (&l_Adapter->m_Extension);
- SetMediaStatus (l_Adapter, FALSE);
- RELEASE_MUTEX (&l_Adapter->m_Extension.m_OpenCloseMutex);
- }
- else
- {
- DEBUGP (("[%s] TAP is presently locked (m_TapOpens=%d)\n",
- NAME (l_Adapter), l_Adapter->m_Extension.m_TapOpens));
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
- p_IRP->IoStatus.Information = 0;
- }
-
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- break;
- }
-
- //------------------
- // Strange Request
- //------------------
- default:
- {
- //NOTE_ERROR ();
- p_IRP->IoStatus.Status = l_Status = STATUS_UNSUCCESSFUL;
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
- break;
- }
- }
-
- return l_Status;
-}
-
-//=============================================================
-// CompleteIRP is normally called with an adapter -> userspace
-// network packet and an IRP (Pending I/O request) from userspace.
-//
-// The IRP will normally represent a queued overlapped read
-// operation from userspace that is in a wait state.
-//
-// Use the ethernet packet to satisfy the IRP.
-//=============================================================
-
-NTSTATUS
-CompleteIRP (IN PIRP p_IRP,
- IN TapPacketPointer p_PacketBuffer,
- IN CCHAR PriorityBoost)
-{
- NTSTATUS l_Status = STATUS_UNSUCCESSFUL;
-
- int offset;
- int len;
-
- MYASSERT (p_IRP);
- MYASSERT (p_PacketBuffer);
-
- IoSetCancelRoutine (p_IRP, NULL); // Disable cancel routine
-
- //-------------------------------------------
- // While p_PacketBuffer always contains a
- // full ethernet packet, including the
- // ethernet header, in point-to-point mode,
- // we only want to return the IPv4
- // component.
- //-------------------------------------------
-
- if (p_PacketBuffer->m_SizeFlags & TP_TUN)
- {
- offset = ETHERNET_HEADER_SIZE;
- len = (int) (p_PacketBuffer->m_SizeFlags & TP_SIZE_MASK) - ETHERNET_HEADER_SIZE;
- }
- else
- {
- offset = 0;
- len = (p_PacketBuffer->m_SizeFlags & TP_SIZE_MASK);
- }
-
- if (len < 0 || (int) p_IRP->IoStatus.Information < len)
- {
- p_IRP->IoStatus.Information = 0;
- p_IRP->IoStatus.Status = STATUS_BUFFER_OVERFLOW;
- NOTE_ERROR ();
- }
- else
- {
- p_IRP->IoStatus.Information = len;
- p_IRP->IoStatus.Status = l_Status = STATUS_SUCCESS;
-
- __try
- {
- NdisMoveMemory (p_IRP->AssociatedIrp.SystemBuffer,
- p_PacketBuffer->m_Data + offset,
- len);
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- NOTE_ERROR ();
- p_IRP->IoStatus.Status = STATUS_UNSUCCESSFUL;
- p_IRP->IoStatus.Information = 0;
- }
- }
-
- __try
- {
- NdisFreeMemory (p_PacketBuffer,
- TAP_PACKET_SIZE (p_PacketBuffer->m_SizeFlags & TP_SIZE_MASK),
- 0);
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- }
-
- if (l_Status == STATUS_SUCCESS)
- {
- IoCompleteRequest (p_IRP, PriorityBoost);
- }
- else
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
-
- return l_Status;
-}
-
-//==============================================
-// IRPs get cancelled for a number of reasons.
-//
-// The TAP device could be closed by userspace
-// when there are still pending read operations.
-//
-// The user could disable the TAP adapter in the
-// network connections control panel, while the
-// device is still open by a process.
-//==============================================
-VOID
-CancelIRPCallback (IN PDEVICE_OBJECT p_DeviceObject,
- IN PIRP p_IRP)
-{
- TapAdapterPointer l_Adapter = LookupAdapterInInstanceList (p_DeviceObject);
- CancelIRP (l_Adapter ? &l_Adapter->m_Extension : NULL, p_IRP, TRUE);
-}
-
-VOID
-CancelIRP (TapExtensionPointer p_Extension,
- IN PIRP p_IRP,
- BOOLEAN callback)
-{
- BOOLEAN exists = FALSE;
-
- MYASSERT (p_IRP);
-
- if (p_Extension)
- {
- NdisAcquireSpinLock (&p_Extension->m_QueueLock);
- exists = (QueueExtract (p_Extension->m_IrpQueue, p_IRP) == p_IRP);
- NdisReleaseSpinLock (&p_Extension->m_QueueLock);
- }
- else
- exists = TRUE;
-
- if (exists)
- {
- IoSetCancelRoutine (p_IRP, NULL);
- p_IRP->IoStatus.Status = STATUS_CANCELLED;
- p_IRP->IoStatus.Information = 0;
- }
-
- if (callback)
- IoReleaseCancelSpinLock (p_IRP->CancelIrql);
-
- if (exists)
- IoCompleteRequest (p_IRP, IO_NO_INCREMENT);
-}
-
-//===========================================
-// Exhaust packet, IRP, and injection queues.
-//===========================================
-VOID
-FlushQueues (TapExtensionPointer p_Extension)
-{
- PIRP l_IRP;
- TapPacketPointer l_PacketBuffer;
- InjectPacketPointer l_InjectBuffer;
- int n_IRP=0, n_Packet=0, n_Inject=0;
-
- MYASSERT (p_Extension);
- MYASSERT (p_Extension->m_TapDevice);
-
- while (TRUE)
- {
- NdisAcquireSpinLock (&p_Extension->m_QueueLock);
- l_IRP = QueuePop (p_Extension->m_IrpQueue);
- NdisReleaseSpinLock (&p_Extension->m_QueueLock);
- if (l_IRP)
- {
- ++n_IRP;
- CancelIRP (NULL, l_IRP, FALSE);
- }
- else
- break;
- }
-
- while (TRUE)
- {
- NdisAcquireSpinLock (&p_Extension->m_QueueLock);
- l_PacketBuffer = QueuePop (p_Extension->m_PacketQueue);
- NdisReleaseSpinLock (&p_Extension->m_QueueLock);
- if (l_PacketBuffer)
- {
- ++n_Packet;
- MemFree (l_PacketBuffer, TAP_PACKET_SIZE (l_PacketBuffer->m_SizeFlags & TP_SIZE_MASK));
- }
- else
- break;
- }
-
- while (TRUE)
- {
- NdisAcquireSpinLock (&p_Extension->m_InjectLock);
- l_InjectBuffer = QueuePop (p_Extension->m_InjectQueue);
- NdisReleaseSpinLock (&p_Extension->m_InjectLock);
- if (l_InjectBuffer)
- {
- ++n_Inject;
- INJECT_PACKET_FREE(l_InjectBuffer);
- }
- else
- break;
- }
-
- DEBUGP ((
- "[%s] [TAP] FlushQueues n_IRP=[%d,%d,%d] n_Packet=[%d,%d,%d] n_Inject=[%d,%d,%d]\n",
- p_Extension->m_TapName,
- n_IRP,
- p_Extension->m_IrpQueue->max_size,
- IRP_QUEUE_SIZE,
- n_Packet,
- p_Extension->m_PacketQueue->max_size,
- PACKET_QUEUE_SIZE,
- n_Inject,
- p_Extension->m_InjectQueue->max_size,
- INJECT_QUEUE_SIZE
- ));
-}
-
-//===================================================
-// Tell Windows whether the TAP device should be
-// considered "connected" or "disconnected".
-//===================================================
-VOID
-SetMediaStatus (TapAdapterPointer p_Adapter, BOOLEAN state)
-{
- if (p_Adapter->m_MediaState != state && !p_Adapter->m_MediaStateAlwaysConnected)
- {
- if (state)
- NdisMIndicateStatus (p_Adapter->m_MiniportAdapterHandle,
- NDIS_STATUS_MEDIA_CONNECT, NULL, 0);
- else
- NdisMIndicateStatus (p_Adapter->m_MiniportAdapterHandle,
- NDIS_STATUS_MEDIA_DISCONNECT, NULL, 0);
-
- NdisMIndicateStatusComplete (p_Adapter->m_MiniportAdapterHandle);
- p_Adapter->m_MediaState = state;
- }
-}
-
-
-//======================================================
-// If DHCP mode is used together with tun
-// mode, consider the fact that the P2P remote subnet
-// might enclose the DHCP masq server address.
-//======================================================
-VOID
-CheckIfDhcpAndTunMode (TapAdapterPointer p_Adapter)
-{
-#if 0
- if (p_Adapter->m_tun && p_Adapter->m_dhcp_enabled)
- {
- if ((p_Adapter->m_dhcp_server_ip & p_Adapter->m_remoteNetmask) == p_Adapter->m_remoteNetwork)
- {
- COPY_MAC (p_Adapter->m_dhcp_server_mac, p_Adapter->m_TapToUser.dest);
- p_Adapter->m_dhcp_server_arp = FALSE;
- }
- }
-#endif
-}
-
-#if 0
-//===================================================
-// Generate an ARP reply message for specific kinds
-// ARP queries.
-//===================================================
-BOOLEAN
-ProcessARP (TapAdapterPointer p_Adapter,
- const PARP_PACKET src,
- const IPADDR adapter_ip,
- const IPADDR ip_network,
- const IPADDR ip_netmask,
- const MACADDR mac)
-{
- //-----------------------------------------------
- // Is this the kind of packet we are looking for?
- //-----------------------------------------------
- if (src->m_Proto == htons (ETH_P_ARP)
- && MAC_EQUAL (src->m_MAC_Source, p_Adapter->m_MAC)
- && MAC_EQUAL (src->m_ARP_MAC_Source, p_Adapter->m_MAC)
- && MAC_EQUAL (src->m_MAC_Destination, p_Adapter->m_MAC_Broadcast)
- && src->m_ARP_Operation == htons (ARP_REQUEST)
- && src->m_MAC_AddressType == htons (MAC_ADDR_TYPE)
- && src->m_MAC_AddressSize == sizeof (MACADDR)
- && src->m_PROTO_AddressType == htons (ETH_P_IP)
- && src->m_PROTO_AddressSize == sizeof (IPADDR)
- && src->m_ARP_IP_Source == adapter_ip
- && (src->m_ARP_IP_Destination & ip_netmask) == ip_network
- && src->m_ARP_IP_Destination != adapter_ip)
- {
- ARP_PACKET *arp = (ARP_PACKET *) MemAlloc (sizeof (ARP_PACKET), TRUE);
- if (arp)
- {
- //----------------------------------------------
- // Initialize ARP reply fields
- //----------------------------------------------
- arp->m_Proto = htons (ETH_P_ARP);
- arp->m_MAC_AddressType = htons (MAC_ADDR_TYPE);
- arp->m_PROTO_AddressType = htons (ETH_P_IP);
- arp->m_MAC_AddressSize = sizeof (MACADDR);
- arp->m_PROTO_AddressSize = sizeof (IPADDR);
- arp->m_ARP_Operation = htons (ARP_REPLY);
-
- //----------------------------------------------
- // ARP addresses
- //----------------------------------------------
- COPY_MAC (arp->m_MAC_Source, mac);
- COPY_MAC (arp->m_MAC_Destination, p_Adapter->m_MAC);
- COPY_MAC (arp->m_ARP_MAC_Source, mac);
- COPY_MAC (arp->m_ARP_MAC_Destination, p_Adapter->m_MAC);
- arp->m_ARP_IP_Source = src->m_ARP_IP_Destination;
- arp->m_ARP_IP_Destination = adapter_ip;
-
- DUMP_PACKET ("ProcessARP",
- (unsigned char *) arp,
- sizeof (ARP_PACKET));
-
- InjectPacketDeferred (p_Adapter, (UCHAR *) arp, sizeof (ARP_PACKET));
-
- MemFree (arp, sizeof (ARP_PACKET));
- }
-
- return TRUE;
- }
- else
- return FALSE;
-}
-#endif
-
-//===============================================================
-// Used in cases where internally generated packets such as
-// ARP or DHCP replies must be returned to the kernel, to be
-// seen as an incoming packet "arriving" on the interface.
-//===============================================================
-
-// Defer packet injection till IRQL < DISPATCH_LEVEL
-VOID
-InjectPacketDeferred (TapAdapterPointer p_Adapter,
- UCHAR *packet,
- const unsigned int len)
-{
- InjectPacketPointer l_InjectBuffer;
- PVOID result;
-
- if (NdisAllocateMemoryWithTag (&l_InjectBuffer,
- INJECT_PACKET_SIZE (len),
- 'IPAT') == NDIS_STATUS_SUCCESS)
- {
- l_InjectBuffer->m_Size = len;
- NdisMoveMemory (l_InjectBuffer->m_Data, packet, len);
- NdisAcquireSpinLock (&p_Adapter->m_Extension.m_InjectLock);
- result = QueuePush (p_Adapter->m_Extension.m_InjectQueue, l_InjectBuffer);
- NdisReleaseSpinLock (&p_Adapter->m_Extension.m_InjectLock);
- if (result)
- KeInsertQueueDpc (&p_Adapter->m_Extension.m_InjectDpc, p_Adapter, NULL);
- else
- INJECT_PACKET_FREE(l_InjectBuffer);
- }
-}
-
-// Handle the injection of previously deferred packets
-VOID
-InjectPacketDpc(KDPC *Dpc,
- PVOID DeferredContext,
- PVOID SystemArgument1,
- PVOID SystemArgument2)
-{
- InjectPacketPointer l_InjectBuffer;
- TapAdapterPointer l_Adapter = (TapAdapterPointer)SystemArgument1;
- while (TRUE)
- {
- NdisAcquireSpinLock (&l_Adapter->m_Extension.m_InjectLock);
- l_InjectBuffer = QueuePop (l_Adapter->m_Extension.m_InjectQueue);
- NdisReleaseSpinLock (&l_Adapter->m_Extension.m_InjectLock);
- if (l_InjectBuffer)
- {
- InjectPacketNow(l_Adapter, l_InjectBuffer->m_Data, l_InjectBuffer->m_Size);
- INJECT_PACKET_FREE(l_InjectBuffer);
- }
- else
- break;
- }
-}
-
-// Do packet injection now
-VOID
-InjectPacketNow (TapAdapterPointer p_Adapter,
- UCHAR *packet,
- const unsigned int len)
-{
- MYASSERT (len >= ETHERNET_HEADER_SIZE);
-
- __try
- {
- //------------------------------------------------------------
- // NdisMEthIndicateReceive and NdisMEthIndicateReceiveComplete
- // could potentially be called reentrantly both here and in
- // TapDeviceHook/IRP_MJ_WRITE.
- //
- // The DDK docs imply that this is okay.
- //
- // Note that reentrant behavior could only occur if the
- // non-deferred version of InjectPacket is used.
- //------------------------------------------------------------
- NdisMEthIndicateReceive
- (p_Adapter->m_MiniportAdapterHandle,
- (NDIS_HANDLE) p_Adapter,
- packet,
- ETHERNET_HEADER_SIZE,
- packet + ETHERNET_HEADER_SIZE,
- len - ETHERNET_HEADER_SIZE,
- len - ETHERNET_HEADER_SIZE);
-
- NdisMEthIndicateReceiveComplete (p_Adapter->m_MiniportAdapterHandle);
- }
- __except (EXCEPTION_EXECUTE_HANDLER)
- {
- DEBUGP (("[%s] NdisMEthIndicateReceive failed in InjectPacketNow\n",
- NAME (p_Adapter)));
- NOTE_ERROR ();
- }
-}
-
-//===================================================================
-// Go back to default TAP mode from Point-To-Point mode.
-// Also reset (i.e. disable) DHCP Masq mode.
-//===================================================================
-VOID ResetTapAdapterState (TapAdapterPointer p_Adapter)
-{
-#if 0
- // Point-To-Point
- p_Adapter->m_tun = FALSE;
- p_Adapter->m_localIP = 0;
- p_Adapter->m_remoteNetwork = 0;
- p_Adapter->m_remoteNetmask = 0;
- NdisZeroMemory (&p_Adapter->m_TapToUser, sizeof (p_Adapter->m_TapToUser));
- NdisZeroMemory (&p_Adapter->m_UserToTap, sizeof (p_Adapter->m_UserToTap));
- NdisZeroMemory (&p_Adapter->m_UserToTap_IPv6, sizeof (p_Adapter->m_UserToTap_IPv6));
-
- // DHCP Masq
- p_Adapter->m_dhcp_enabled = FALSE;
- p_Adapter->m_dhcp_server_arp = FALSE;
- p_Adapter->m_dhcp_user_supplied_options_buffer_len = 0;
- p_Adapter->m_dhcp_addr = 0;
- p_Adapter->m_dhcp_netmask = 0;
- p_Adapter->m_dhcp_server_ip = 0;
- p_Adapter->m_dhcp_lease_time = 0;
- p_Adapter->m_dhcp_received_discover = FALSE;
- p_Adapter->m_dhcp_bad_requests = 0;
- NdisZeroMemory (p_Adapter->m_dhcp_server_mac, sizeof (MACADDR));
-#endif
-}
-
-#if ENABLE_NONADMIN
-
-//===================================================================
-// Set TAP device handle to be accessible without admin privileges.
-//===================================================================
-VOID AllowNonAdmin (TapExtensionPointer p_Extension)
-{
- NTSTATUS stat;
- SECURITY_DESCRIPTOR sd;
- OBJECT_ATTRIBUTES oa;
- IO_STATUS_BLOCK isb;
- HANDLE hand = NULL;
-
- NdisZeroMemory (&sd, sizeof (sd));
- NdisZeroMemory (&oa, sizeof (oa));
- NdisZeroMemory (&isb, sizeof (isb));
-
- if (!p_Extension->m_CreatedUnicodeLinkName)
- {
- DEBUGP (("[TAP] AllowNonAdmin: UnicodeLinkName is uninitialized\n"));
- NOTE_ERROR ();
- return;
- }
-
- stat = RtlCreateSecurityDescriptor (&sd, SECURITY_DESCRIPTOR_REVISION);
- if (stat != STATUS_SUCCESS)
- {
- DEBUGP (("[TAP] AllowNonAdmin: RtlCreateSecurityDescriptor failed\n"));
- NOTE_ERROR ();
- return;
- }
-
- InitializeObjectAttributes (
- &oa,
- &p_Extension->m_UnicodeLinkName,
- OBJ_KERNEL_HANDLE,
- NULL,
- NULL
- );
-
- stat = ZwOpenFile (
- &hand,
- WRITE_DAC,
- &oa,
- &isb,
- 0,
- 0
- );
- if (stat != STATUS_SUCCESS)
- {
- DEBUGP (("[TAP] AllowNonAdmin: ZwOpenFile failed, status=0x%08x\n", (unsigned int)stat));
- NOTE_ERROR ();
- return;
- }
-
- stat = ZwSetSecurityObject (hand, DACL_SECURITY_INFORMATION, &sd);
- if (stat != STATUS_SUCCESS)
- {
- DEBUGP (("[TAP] AllowNonAdmin: ZwSetSecurityObject failed\n"));
- NOTE_ERROR ();
- return;
- }
-
- stat = ZwClose (hand);
- if (stat != STATUS_SUCCESS)
- {
- DEBUGP (("[TAP] AllowNonAdmin: ZwClose failed\n"));
- NOTE_ERROR ();
- return;
- }
-
- DEBUGP (("[TAP] AllowNonAdmin: SUCCEEDED\n"));
-}
-
-#endif
-
-#if PACKET_TRUNCATION_CHECK
-
-VOID
-IPv4PacketSizeVerify (const UCHAR *data, ULONG length, BOOLEAN tun, const char *prefix, LONG *counter)
-{
- const IPHDR *ip;
- int len = length;
-
- if (tun)
- {
- ip = (IPHDR *) data;
- }
- else
- {
- if (length >= sizeof (ETH_HEADER))
- {
- const ETH_HEADER *eth = (ETH_HEADER *) data;
-
- if (eth->proto != htons (ETH_P_IP))
- return;
-
- ip = (IPHDR *) (data + sizeof (ETH_HEADER));
- len -= sizeof (ETH_HEADER);
- }
- else
- return;
- }
-
- if (len >= sizeof (IPHDR))
- {
- const int totlen = ntohs (ip->tot_len);
-
- DEBUGP (("[TAP] IPv4PacketSizeVerify %s len=%d totlen=%d\n", prefix, len, totlen));
-
- if (len != totlen)
- ++(*counter);
- }
-}
-
-#endif
-
-//======================================================================
-// End of Source
-//======================================================================
diff --git a/vsprojects/TapDriver/testcert.pfx b/vsprojects/TapDriver/testcert.pfx
deleted file mode 100644
index 74f6b471..00000000
--- a/vsprojects/TapDriver/testcert.pfx
+++ /dev/null
Binary files differ
diff --git a/vsprojects/TapDriver/types.h b/vsprojects/TapDriver/types.h
deleted file mode 100644
index 4867a3e4..00000000
--- a/vsprojects/TapDriver/types.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * TAP-Windows -- A kernel driver to provide virtual tap
- * device functionality on Windows.
- *
- * This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- * This source code is Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- * and is released under the GPL version 2 (see below).
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef TAP_TYPES_DEFINED
-#define TAP_TYPES_DEFINED
-
-typedef struct _Queue
-{
- ULONG base;
- ULONG size;
- ULONG capacity;
- ULONG max_size;
- PVOID data[];
-} Queue;
-
-typedef struct _TapAdapter;
-typedef struct _TapPacket;
-
-typedef union _TapAdapterQuery
-{
- NDIS_HARDWARE_STATUS m_HardwareStatus;
- NDIS_MEDIUM m_Medium;
- NDIS_PHYSICAL_MEDIUM m_PhysicalMedium;
- UCHAR m_MacAddress [6];
- UCHAR m_Buffer [256];
- ULONG m_Long;
- USHORT m_Short;
- UCHAR m_Byte;
-}
-TapAdapterQuery, *TapAdapterQueryPointer;
-
-typedef struct _TapExtension
-{
- // TAP device object and packet queues
- Queue *m_PacketQueue, *m_IrpQueue;
- PDEVICE_OBJECT m_TapDevice;
- NDIS_HANDLE m_TapDeviceHandle;
- ULONG m_TapOpens;
-
- // Used to lock packet queues
- NDIS_SPIN_LOCK m_QueueLock;
- BOOLEAN m_AllocatedSpinlocks;
-
- // Used to bracket open/close
- // state changes.
- MUTEX m_OpenCloseMutex;
-
- // True if device has been permanently halted
- BOOLEAN m_Halt;
-
- // TAP device name
- unsigned char *m_TapName;
- UNICODE_STRING m_UnicodeLinkName;
- BOOLEAN m_CreatedUnicodeLinkName;
-
- // Used for device status ioctl only
- const char *m_LastErrorFilename;
- int m_LastErrorLineNumber;
- LONG m_NumTapOpens;
-
- // Flags
- BOOLEAN m_TapIsRunning;
- BOOLEAN m_CalledTapDeviceFreeResources;
-
- // DPC queue for deferred packet injection
- BOOLEAN m_InjectDpcInitialized;
- KDPC m_InjectDpc;
- NDIS_SPIN_LOCK m_InjectLock;
- Queue *m_InjectQueue;
-}
-TapExtension, *TapExtensionPointer;
-
-typedef struct _TapPacket
- {
-# define TAP_PACKET_SIZE(data_size) (sizeof (TapPacket) + (data_size))
-# define TP_TUN 0x80000000
-# define TP_SIZE_MASK (~TP_TUN)
- ULONG m_SizeFlags;
- UCHAR m_Data []; // m_Data must be the last struct member
- }
-TapPacket, *TapPacketPointer;
-
-typedef struct _InjectPacket
- {
-# define INJECT_PACKET_SIZE(data_size) (sizeof (InjectPacket) + (data_size))
-# define INJECT_PACKET_FREE(ib) NdisFreeMemory ((ib), INJECT_PACKET_SIZE ((ib)->m_Size), 0)
- ULONG m_Size;
- UCHAR m_Data []; // m_Data must be the last struct member
- }
-InjectPacket, *InjectPacketPointer;
-
-typedef struct _TapAdapter
-{
-# define NAME(a) ((a)->m_NameAnsi.Buffer)
- ANSI_STRING m_NameAnsi;
- MACADDR m_MAC;
- BOOLEAN m_InterfaceIsRunning;
- NDIS_HANDLE m_MiniportAdapterHandle;
- LONG m_Rx, m_Tx, m_RxErr, m_TxErr;
-#if PACKET_TRUNCATION_CHECK
- LONG m_RxTrunc, m_TxTrunc;
-#endif
- NDIS_MEDIUM m_Medium;
- ULONG m_Lookahead;
- ULONG m_MTU;
-
- // TRUE if adapter should always be
- // "connected" even when device node
- // is not open by a userspace process.
- BOOLEAN m_MediaStateAlwaysConnected;
-
- // TRUE if device is "connected"
- BOOLEAN m_MediaState;
-
- // Adapter power state
- char m_DeviceState;
-
-#if 0
- // Info for point-to-point mode
- BOOLEAN m_tun;
- IPADDR m_localIP;
- IPADDR m_remoteNetwork;
- IPADDR m_remoteNetmask;
- ETH_HEADER m_TapToUser;
- ETH_HEADER m_UserToTap;
- ETH_HEADER m_UserToTap_IPv6; // same as UserToTap but proto=ipv6
- MACADDR m_MAC_Broadcast;
-#endif
-
-#if 0
- // Used for DHCP server masquerade
- BOOLEAN m_dhcp_enabled;
- IPADDR m_dhcp_addr;
- ULONG m_dhcp_netmask;
- IPADDR m_dhcp_server_ip;
- BOOLEAN m_dhcp_server_arp;
- MACADDR m_dhcp_server_mac;
- ULONG m_dhcp_lease_time;
- UCHAR m_dhcp_user_supplied_options_buffer[DHCP_USER_SUPPLIED_OPTIONS_BUFFER_SIZE];
- ULONG m_dhcp_user_supplied_options_buffer_len;
- BOOLEAN m_dhcp_received_discover;
- ULONG m_dhcp_bad_requests;
-#endif
-
- // Help to tear down the adapter by keeping
- // some state information on allocated
- // resources.
- BOOLEAN m_CalledAdapterFreeResources;
- BOOLEAN m_RegisteredAdapterShutdownHandler;
-
- // Multicast list info
- NDIS_SPIN_LOCK m_MCLock;
- BOOLEAN m_MCLockAllocated;
- ULONG m_MCListSize;
- MC_LIST m_MCList;
-
- // Information on the TAP device
- TapExtension m_Extension;
-} TapAdapter, *TapAdapterPointer;
-
-#endif
diff --git a/vsprojects/TapDriver/ztTap100.inf b/vsprojects/TapDriver/ztTap100.inf
deleted file mode 100644
index cf31e9ff..00000000
--- a/vsprojects/TapDriver/ztTap100.inf
+++ /dev/null
@@ -1,84 +0,0 @@
-[Version]
-Signature="$WINDOWS NT$"
-Class=Net
-ClassGuid={4d36e972-e325-11ce-bfc1-08002be10318}
-Provider=%Provider%
-CatalogFile=ztTap100.cat
-
-
-[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/vsprojects/ZeroTierOne/ZeroTierOne.vcxproj b/vsprojects/ZeroTierOne/ZeroTierOne.vcxproj
deleted file mode 100644
index 2d01154d..00000000
--- a/vsprojects/ZeroTierOne/ZeroTierOne.vcxproj
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{B00A4957-5977-4AC1-9EF4-571DC27EADA2}</ProjectGuid>
- <RootNamespace>ZeroTierOne</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v110</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <TargetExt>.exe</TargetExt>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(Configuration)\</OutDir>
- <TargetName>zerotier-one-x86</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <TargetExt>.exe</TargetExt>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(Configuration)\</OutDir>
- <TargetName>zerotier-one-x86</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <TargetExt>.exe</TargetExt>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(Configuration)\</OutDir>
- <TargetName>zerotier-one-x64</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <TargetExt>.exe</TargetExt>
- <OutDir>$(SolutionDir)\Build\$(Platform)\$(Configuration)\</OutDir>
- <TargetName>zerotier-one-x64</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>ZT_LOG_STDOUT;ZT_TRACE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>wsock32.lib;ws2_32.lib;iphlpapi.lib;rpcrt4.lib;$(SolutionDir)\ext\bin\libcrypto\win32-vs2012\libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>ZT_LOG_STDOUT;ZT_TRACE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>wsock32.lib;ws2_32.lib;iphlpapi.lib;rpcrt4.lib;$(SolutionDir)\ext\bin\libcrypto\win64-vs2012\libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>ZT_LOG_STDOUT;ZT_TRACE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>wsock32.lib;ws2_32.lib;iphlpapi.lib;rpcrt4.lib;$(SolutionDir)\ext\bin\libcrypto\win32-vs2012\libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)\ext\bin\libcrypto\include</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>ZT_LOG_STDOUT;ZT_TRACE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>wsock32.lib;ws2_32.lib;iphlpapi.lib;rpcrt4.lib;$(SolutionDir)\ext\bin\libcrypto\win64-vs2012\libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="..\..\node\Address.hpp" />
- <ClInclude Include="..\..\node\Array.hpp" />
- <ClInclude Include="..\..\node\AtomicCounter.hpp" />
- <ClInclude Include="..\..\node\BloomFilter.hpp" />
- <ClInclude Include="..\..\node\Buffer.hpp" />
- <ClInclude Include="..\..\node\CMWC4096.hpp" />
- <ClInclude Include="..\..\node\Condition.hpp" />
- <ClInclude Include="..\..\node\Constants.hpp" />
- <ClInclude Include="..\..\node\Defaults.hpp" />
- <ClInclude Include="..\..\node\Demarc.hpp" />
- <ClInclude Include="..\..\node\Dictionary.hpp" />
- <ClInclude Include="..\..\node\EllipticCurveKey.hpp" />
- <ClInclude Include="..\..\node\EllipticCurveKeyPair.hpp" />
- <ClInclude Include="..\..\node\EthernetTap.hpp" />
- <ClInclude Include="..\..\node\Filter.hpp" />
- <ClInclude Include="..\..\node\HMAC.hpp" />
- <ClInclude Include="..\..\node\Identity.hpp" />
- <ClInclude Include="..\..\node\InetAddress.hpp" />
- <ClInclude Include="..\..\node\Logger.hpp" />
- <ClInclude Include="..\..\node\MAC.hpp" />
- <ClInclude Include="..\..\node\Multicaster.hpp" />
- <ClInclude Include="..\..\node\MulticastGroup.hpp" />
- <ClInclude Include="..\..\node\Mutex.hpp" />
- <ClInclude Include="..\..\node\Network.hpp" />
- <ClInclude Include="..\..\node\Node.hpp" />
- <ClInclude Include="..\..\node\NodeConfig.hpp" />
- <ClInclude Include="..\..\node\NonCopyable.hpp" />
- <ClInclude Include="..\..\node\Packet.hpp" />
- <ClInclude Include="..\..\node\PacketDecoder.hpp" />
- <ClInclude Include="..\..\node\Peer.hpp" />
- <ClInclude Include="..\..\node\Range.hpp" />
- <ClInclude Include="..\..\node\RateLimiter.hpp" />
- <ClInclude Include="..\..\node\RuntimeEnvironment.hpp" />
- <ClInclude Include="..\..\node\Salsa20.hpp" />
- <ClInclude Include="..\..\node\Service.hpp" />
- <ClInclude Include="..\..\node\SharedPtr.hpp" />
- <ClInclude Include="..\..\node\Switch.hpp" />
- <ClInclude Include="..\..\node\SysEnv.hpp" />
- <ClInclude Include="..\..\node\Thread.hpp" />
- <ClInclude Include="..\..\node\Topology.hpp" />
- <ClInclude Include="..\..\node\UdpSocket.hpp" />
- <ClInclude Include="..\..\node\Utils.hpp" />
- <ClInclude Include="..\TapDriver\tap-windows.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\ext\kissdb\kissdb.c" />
- <ClCompile Include="..\..\ext\lz4\lz4.c" />
- <ClCompile Include="..\..\ext\lz4\lz4hc.c" />
- <ClCompile Include="..\..\main.cpp" />
- <ClCompile Include="..\..\node\Defaults.cpp" />
- <ClCompile Include="..\..\node\Demarc.cpp" />
- <ClCompile Include="..\..\node\EllipticCurveKeyPair.cpp" />
- <ClCompile Include="..\..\node\EthernetTap.cpp" />
- <ClCompile Include="..\..\node\Filter.cpp" />
- <ClCompile Include="..\..\node\HMAC.cpp" />
- <ClCompile Include="..\..\node\Identity.cpp" />
- <ClCompile Include="..\..\node\InetAddress.cpp" />
- <ClCompile Include="..\..\node\Logger.cpp" />
- <ClCompile Include="..\..\node\Network.cpp" />
- <ClCompile Include="..\..\node\Node.cpp" />
- <ClCompile Include="..\..\node\NodeConfig.cpp" />
- <ClCompile Include="..\..\node\Packet.cpp" />
- <ClCompile Include="..\..\node\PacketDecoder.cpp" />
- <ClCompile Include="..\..\node\Peer.cpp" />
- <ClCompile Include="..\..\node\Salsa20.cpp" />
- <ClCompile Include="..\..\node\Service.cpp" />
- <ClCompile Include="..\..\node\Switch.cpp" />
- <ClCompile Include="..\..\node\SysEnv.cpp" />
- <ClCompile Include="..\..\node\Topology.cpp" />
- <ClCompile Include="..\..\node\UdpSocket.cpp" />
- <ClCompile Include="..\..\node\Utils.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/vsprojects/ZeroTierOne/ZeroTierOne.vcxproj.filters b/vsprojects/ZeroTierOne/ZeroTierOne.vcxproj.filters
deleted file mode 100644
index 67e668e1..00000000
--- a/vsprojects/ZeroTierOne/ZeroTierOne.vcxproj.filters
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <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>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\node\Address.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Array.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\AtomicCounter.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\BloomFilter.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Buffer.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\CMWC4096.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Condition.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Constants.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Defaults.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Demarc.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Dictionary.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\EllipticCurveKey.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\EllipticCurveKeyPair.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\EthernetTap.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Filter.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\HMAC.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Identity.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\InetAddress.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Logger.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\MAC.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Multicaster.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\MulticastGroup.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Mutex.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Network.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Node.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\NodeConfig.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\NonCopyable.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Packet.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\PacketDecoder.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Peer.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Range.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\RateLimiter.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\RuntimeEnvironment.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Salsa20.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Service.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\SharedPtr.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Switch.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\SysEnv.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Thread.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Topology.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\UdpSocket.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\node\Utils.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\TapDriver\tap-windows.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\node\Defaults.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Demarc.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\EllipticCurveKeyPair.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\EthernetTap.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Filter.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\HMAC.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Identity.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\InetAddress.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Logger.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Network.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Node.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\NodeConfig.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Packet.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\PacketDecoder.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Peer.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Salsa20.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Service.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Switch.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\SysEnv.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Topology.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\UdpSocket.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\node\Utils.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\ext\kissdb\kissdb.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\ext\lz4\lz4.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\ext\lz4\lz4hc.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\main.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file