1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-11-10 03:30:39 +03:00

Merge PR #736: vpntest project for programmers: runs VPN Server / VPN Client / VPN Bridge in test mode with full debug console output and memory leak checks

This commit is contained in:
Davide Beatrici 2018-10-08 06:33:47 +02:00 committed by GitHub
commit 8ddd336c38
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 831 additions and 2 deletions

View File

@ -143,6 +143,7 @@ namespace BuildUtil
@"bin\BuiltHamcoreFiles", @"bin\BuiltHamcoreFiles",
@"bin\hamcore", @"bin\hamcore",
"Cedar", "Cedar",
"vpntest",
"Mayaqua", "Mayaqua",
"Neo", "Neo",
"vpnbridge", "vpnbridge",
@ -731,7 +732,7 @@ namespace BuildUtil
{ {
string[] programNames = string[] programNames =
{ {
"Ham", "vpntest",
"vpnserver", "vpnserver",
"vpnbridge", "vpnbridge",
"vpnclient", "vpnclient",

View File

@ -115,6 +115,10 @@ get_target_property(VPNBRIDGE_RUNTIME_OUTPUT_DIRECTORY vpnbridge RUNTIME_OUTPUT_
add_subdirectory(vpncmd) add_subdirectory(vpncmd)
get_target_property(VPNCMD_RUNTIME_OUTPUT_DIRECTORY vpncmd RUNTIME_OUTPUT_DIRECTORY) get_target_property(VPNCMD_RUNTIME_OUTPUT_DIRECTORY vpncmd RUNTIME_OUTPUT_DIRECTORY)
# vpntest
add_subdirectory(vpntest)
get_target_property(VPNTEST_RUNTIME_OUTPUT_DIRECTORY vpntest RUNTIME_OUTPUT_DIRECTORY)
# hamcore.se2 archive file # hamcore.se2 archive file
add_custom_target(hamcore-archive-build add_custom_target(hamcore-archive-build
ALL ALL
@ -148,6 +152,12 @@ add_custom_command(TARGET hamcore-archive-build
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/tmp/hamcore.se2 ${VPNCMD_RUNTIME_OUTPUT_DIRECTORY} COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/tmp/hamcore.se2 ${VPNCMD_RUNTIME_OUTPUT_DIRECTORY}
) )
# Copy hamcore.se2 to vpntest's directory
add_custom_command(TARGET hamcore-archive-build
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/tmp/hamcore.se2 ${VPNTEST_RUNTIME_OUTPUT_DIRECTORY}
)
# Copy "vpnserver" directory to /usr/lib(exec)/softether/, install launch script and systemd service # Copy "vpnserver" directory to /usr/lib(exec)/softether/, install launch script and systemd service
install(DIRECTORY ${VPNSERVER_RUNTIME_OUTPUT_DIRECTORY} install(DIRECTORY ${VPNSERVER_RUNTIME_OUTPUT_DIRECTORY}
COMPONENT "vpnserver" COMPONENT "vpnserver"

View File

@ -1964,6 +1964,9 @@ void RegistWindowsFirewallAllEx(char *dir)
MsRegistWindowsFirewallEx2(CEDAR_CUI_STR, "vpncmd.exe", dir); MsRegistWindowsFirewallEx2(CEDAR_CUI_STR, "vpncmd.exe", dir);
MsRegistWindowsFirewallEx2(CEDAR_CUI_STR, "vpncmd_x64.exe", dir); MsRegistWindowsFirewallEx2(CEDAR_CUI_STR, "vpncmd_x64.exe", dir);
MsRegistWindowsFirewallEx2(CEDAR_PRODUCT_STR, "vpntest.exe", dir);
MsRegistWindowsFirewallEx2(CEDAR_PRODUCT_STR, "vpntest_x64.exe", dir);
} }
// Check whether the notification service is already running // Check whether the notification service is already running

View File

@ -1151,6 +1151,11 @@ void PrintKernelStatus()
Print(" !!! MEMORY LEAKS DETECTED !!!\n\n"); Print(" !!! MEMORY LEAKS DETECTED !!!\n\n");
if (g_memcheck == false) if (g_memcheck == false)
{ {
if (IsHamMode())
{
Print(" Enable /memcheck startup option to see the leaking memory heap.\n");
Print(" Press Enter key to exit the process.\n");
}
GetLine(NULL, 0); GetLine(NULL, 0);
} }
} }

View File

@ -157,7 +157,15 @@ void MemoryDebugMenu()
TOKEN_LIST *t; TOKEN_LIST *t;
char *cmd; char *cmd;
Print("Mayaqua Kernel Memory Debug Tools\n" Print("Mayaqua Kernel Memory Debug Tools\n"
"Copyright (c) SoftEther Corporation. All Rights Reserved.\n\n"); "Copyright (c) SoftEther VPN Project. All Rights Reserved.\n\n");
#ifndef OS_WIN32
Print("Unfortunately The call stack is not recorded on non-Windows systems\n");
Print("since UnixGetCallStack() and UnixGetCallStackSymbolInfo() is not implemented.\n");
Print("Therefore please use valgrind or other memory leak check tools\n");
Print("to get the actual call stacks of memory leak causes.\n\n");
#endif // OS_WIN32
g_memcheck = false; g_memcheck = false;
while (true) while (true)
{ {

View File

@ -90,6 +90,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Cedar", "Cedar\Cedar.vcproj
{384815C3-333C-4CEC-9DCD-B6AB2602EBB9} = {384815C3-333C-4CEC-9DCD-B6AB2602EBB9} {384815C3-333C-4CEC-9DCD-B6AB2602EBB9} = {384815C3-333C-4CEC-9DCD-B6AB2602EBB9}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vpntest", "vpntest\vpntest.vcproj", "{1ED5782B-1734-4FC6-AA9E-F7181CDBA8A7}"
ProjectSection(ProjectDependencies) = postProject
{2928D768-DEC3-40D3-8E51-26E364497C9B} = {2928D768-DEC3-40D3-8E51-26E364497C9B}
{384815C3-333C-4CEC-9DCD-B6AB2602EBB9} = {384815C3-333C-4CEC-9DCD-B6AB2602EBB9}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vpncmd", "vpncmd\vpncmd.vcproj", "{83438AC3-5329-4337-89BC-5B69EBAE4B6E}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vpncmd", "vpncmd\vpncmd.vcproj", "{83438AC3-5329-4337-89BC-5B69EBAE4B6E}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{2928D768-DEC3-40D3-8E51-26E364497C9B} = {2928D768-DEC3-40D3-8E51-26E364497C9B} {2928D768-DEC3-40D3-8E51-26E364497C9B} = {2928D768-DEC3-40D3-8E51-26E364497C9B}

View File

@ -0,0 +1,10 @@
add_executable(vpntest vpntest.c vpntest.h)
set_target_properties(vpntest
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}/vpntest"
LIBRARY_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}/vpntest"
RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}/vpntest"
)
target_link_libraries(vpntest cedar mayaqua)

19
src/vpntest/resource.h Normal file
View File

@ -0,0 +1,19 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Ham.rc
//
#define IDR_TEST1 101
#define IDI_ICON1 102
#define IDI_CERT 102
#define IDI_ICON2 103
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 104
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

243
src/vpntest/vpntest.c Normal file
View File

@ -0,0 +1,243 @@
// vpntest.c
// VPN Server / VPN Client / VPN Bridge test program
#include <GlobalConst.h>
#define VPN_EXE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include <stdarg.h>
#include <time.h>
#include <Mayaqua/Mayaqua.h>
#include <Cedar/Cedar.h>
#include "vpntest.h"
void client_test(UINT num, char **arg)
{
Print("VPN Client Test. Press Enter key to stop the VPN Client .\n");
CtStartClient();
GetLine(NULL, 0);
CtStopClient();
}
void server_test(UINT num, char **arg)
{
Print("VPN Server Test. Press Enter key to stop the VPN Server .\n");
StInit();
StStartServer(false);
GetLine(NULL, 0);
StStopServer();
StFree();
}
void bridge_test(UINT num, char **arg)
{
Print("VPN Bridge Test. Press Enter key to stop the VPN Bridge .\n");
StInit();
StStartServer(true);
GetLine(NULL, 0);
StStopServer();
StFree();
}
void memory_leak_test(UINT num, char **arg)
{
char *a = Malloc(1);
Print("Hello, I am the great dictator of this kingdom!\n");
Print("Just now I called Malloc(1) and never free! Ha ha ha !!\n");
}
// The list of test functions
// Test function definition list
typedef void (TEST_PROC)(UINT num, char **arg);
typedef struct TEST_LIST
{
char *command_str;
TEST_PROC *proc;
char *help;
} TEST_LIST;
TEST_LIST test_list[] =
{
{"c", client_test, "VPN Client in Test Mode, enter key to graceful stop."},
{"s", server_test, "VPN Server in Test Mode, enter key to graceful stop."},
{"b", bridge_test, "VPN Bridge in Test Mode, enter key to graceful stop."},
{"memory_leak", memory_leak_test, "Memory leak test: Try to leak one byte by malloc()."},
};
// Test function
void TestMain(char *cmd)
{
char tmp[MAX_SIZE];
bool first = true;
bool exit_now = false;
Print("SoftEther VPN Project\n");
Print("vpntest: VPN Server / VPN Client / VPN Bridge test program\n");
Print("Usage: vpntest [/memcheck] [command]\n\n");
Print("Enter '?' or 'help' to show the command list.\n");
Print("Enter 'q' or 'exit' to exit the process.\n\n");
Print(" - In Jurassic Park: \"It's a UNIX system! I know this!\"\n\n");
#ifdef OS_WIN32
MsSetEnableMinidump(false);
#endif // OS_WIN32
while (true)
{
Print("TEST>");
if (first && StrLen(cmd) != 0 && g_memcheck == false)
{
first = false;
StrCpy(tmp, sizeof(tmp), cmd);
exit_now = true;
Print("%s\n", cmd);
}
else
{
GetLine(tmp, sizeof(tmp));
}
Trim(tmp);
if (StrLen(tmp) != 0)
{
UINT i, num;
bool b = false;
TOKEN_LIST *token = ParseCmdLine(tmp);
char *cmd = token->Token[0];
if (!StrCmpi(cmd, "exit") || !StrCmpi(cmd, "quit") || !StrCmpi(cmd, "q"))
{
FreeToken(token);
break;
}
else if (StrCmpi(cmd, "?") == 0 || StrCmpi(cmd, "help") == 0)
{
UINT max_len = 0;
Print("Available commands:\n\n");
num = sizeof(test_list) / sizeof(TEST_LIST);
for (i = 0;i < num;i++)
{
TEST_LIST *t = &test_list[i];
max_len = MAX(max_len, StrLen(t->command_str));
}
for (i = 0;i < num;i++)
{
TEST_LIST *t = &test_list[i];
UINT len = StrLen(t->command_str);
char *pad = NULL;
if (len < max_len)
{
UINT padlen = max_len - len;
pad = MakeCharArray(' ', padlen);
}
Print(" '%s'%s : %s\n", t->command_str, pad == NULL ? "" : pad, t->help);
if (pad != NULL)
{
Free(pad);
}
}
Print("\n");
}
else if (StartWith(tmp, "vpncmd"))
{
wchar_t *s = CopyStrToUni(tmp);
CommandMain(s);
Free(s);
}
else
{
num = sizeof(test_list) / sizeof(TEST_LIST);
for (i = 0;i < num;i++)
{
if (!StrCmpi(test_list[i].command_str, cmd))
{
char **arg = Malloc(sizeof(char *) * (token->NumTokens - 1));
UINT j;
for (j = 0;j < token->NumTokens - 1;j++)
{
arg[j] = CopyStr(token->Token[j + 1]);
}
test_list[i].proc(token->NumTokens - 1, arg);
for (j = 0;j < token->NumTokens - 1;j++)
{
Free(arg[j]);
}
Free(arg);
b = true;
Print("\n");
break;
}
}
if (b == false)
{
Print("Invalid Command: %s\n\n", cmd);
}
}
FreeToken(token);
if (exit_now)
{
break;
}
}
}
Print("Exiting...\n\n");
}
// Main function
int main(int argc, char *argv[])
{
bool memchk = false;
UINT i;
char cmd[MAX_SIZE];
char *s;
InitProcessCallOnce();
cmd[0] = 0;
if (argc >= 2)
{
for (i = 1;i < (UINT)argc;i++)
{
s = argv[i];
if (s[0] == '/')
{
if (!StrCmpi(s, "/memcheck"))
{
memchk = true;
}
}
else
{
StrCpy(cmd, sizeof(cmd), &s[0]);
}
}
}
InitMayaqua(memchk, true, argc, argv);
EnableProbe(true);
InitCedar();
SetHamMode();
TestMain(cmdline);
FreeCedar();
FreeMayaqua();
return 0;
}

1
src/vpntest/vpntest.h Normal file
View File

@ -0,0 +1 @@

BIN
src/vpntest/vpntest.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

72
src/vpntest/vpntest.rc Normal file
View File

@ -0,0 +1,72 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Japanese resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
#ifdef _WIN32
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
#pragma code_page(932)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON2 ICON "vpntest.ico"
#endif // Japanese resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

451
src/vpntest/vpntest.vcproj Normal file
View File

@ -0,0 +1,451 @@
<?xml version="1.0" encoding="shift_jis"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="vpntest"
ProjectGUID="{1ED5782B-1734-4FC6-AA9E-F7181CDBA8A7}"
RootNamespace="vpntest"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)bin"
IntermediateDirectory="$(PlatformName)_$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(SolutionDir)Mayaqua\win32_inc;.;$(SolutionDir);$(SolutionDir)Mayaqua"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
ExceptionHandling="0"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
StructMemberAlignment="4"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
CompileAs="1"
DisableSpecificWarnings="4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="C:\WinDDK\7600.16385.1\inc\mfc42;$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateVersionResource &quot;$(TargetPath)&quot; /OUT:&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
OutputFile="$(OutDir)\vpntest.exe"
LinkIncremental="2"
GenerateManifest="false"
AdditionalManifestDependencies="type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;x86&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(SolutionDir)DebugFiles\pdb\$(PlatformName)_$(ConfigurationName)\$(ProjectName).pdb"
GenerateMapFile="true"
MapFileName="$(SolutionDir)DebugFiles\map\$(PlatformName)_$(ConfigurationName)\$(ProjectName).map"
SubSystem="1"
StackReserveSize="100000"
RandomizedBaseAddress="1"
DataExecutionPrevention="2"
TargetMachine="1"
Profile="false"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
EmbedManifest="false"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SetManifest &quot;$(TargetPath)&quot; /MANIFEST:x86_user.manifest"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)bin"
IntermediateDirectory="$(PlatformName)_$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(SolutionDir)Mayaqua\win32_inc;.;$(SolutionDir);$(SolutionDir)Mayaqua"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;CPU_64"
MinimalRebuild="true"
ExceptionHandling="0"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
StructMemberAlignment="4"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="1"
DisableSpecificWarnings="4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="C:\WinDDK\7600.16385.1\inc\mfc42;$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateVersionResource &quot;$(TargetPath)&quot; /OUT:&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
OutputFile="$(OutDir)\vpntest_x64.exe"
LinkIncremental="2"
GenerateManifest="false"
AdditionalManifestDependencies="type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;amd64&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(SolutionDir)DebugFiles\pdb\$(PlatformName)_$(ConfigurationName)\$(ProjectName).pdb"
GenerateMapFile="true"
MapFileName="$(SolutionDir)DebugFiles\map\$(PlatformName)_$(ConfigurationName)\$(ProjectName).map"
SubSystem="1"
StackReserveSize="100000"
RandomizedBaseAddress="1"
DataExecutionPrevention="2"
TargetMachine="17"
Profile="false"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
EmbedManifest="false"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SetManifest &quot;$(TargetPath)&quot; /MANIFEST:x64_user.manifest"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)bin"
IntermediateDirectory="$(PlatformName)_$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
InlineFunctionExpansion="0"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
AdditionalIncludeDirectories="$(SolutionDir)Mayaqua\win32_inc;.;$(SolutionDir);$(SolutionDir)Mayaqua"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;VPN_SPEED"
StringPooling="false"
ExceptionHandling="0"
RuntimeLibrary="0"
StructMemberAlignment="4"
BufferSecurityCheck="false"
EnableFunctionLevelLinking="false"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="1"
DisableSpecificWarnings="4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="C:\WinDDK\7600.16385.1\inc\mfc42;$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateVersionResource &quot;$(TargetPath)&quot; /OUT:&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
OutputFile="$(OutDir)\vpntest.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\lib&quot;"
GenerateManifest="false"
AdditionalManifestDependencies="type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;x86&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
IgnoreAllDefaultLibraries="false"
DelayLoadDLLs="setupapi.dll;advapi32.dll;user32.dll"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(SolutionDir)DebugFiles\pdb\$(PlatformName)_$(ConfigurationName)\$(ProjectName).pdb"
GenerateMapFile="true"
MapFileName="$(SolutionDir)DebugFiles\map\$(PlatformName)_$(ConfigurationName)\$(ProjectName).map"
SubSystem="1"
StackReserveSize="100000"
OptimizeReferences="1"
EnableCOMDATFolding="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="2"
TargetMachine="1"
Profile="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
EmbedManifest="false"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SetPE4 &quot;$(TargetPath)&quot;&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:SetManifest &quot;$(TargetPath)&quot; /MANIFEST:x86_user.manifest&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(SolutionDir)bin"
IntermediateDirectory="$(PlatformName)_$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
InlineFunctionExpansion="0"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
AdditionalIncludeDirectories="$(SolutionDir)Mayaqua\win32_inc;.;$(SolutionDir);$(SolutionDir)Mayaqua"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;VPN_SPEED;CPU_64"
StringPooling="false"
ExceptionHandling="0"
RuntimeLibrary="0"
StructMemberAlignment="4"
BufferSecurityCheck="false"
EnableFunctionLevelLinking="false"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="1"
DisableSpecificWarnings="4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="C:\WinDDK\7600.16385.1\inc\mfc42;$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateVersionResource &quot;$(TargetPath)&quot; /OUT:&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
OutputFile="$(OutDir)\vpntest_x64.exe"
LinkIncremental="1"
AdditionalLibraryDirectories=""
GenerateManifest="false"
AdditionalManifestDependencies="type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;amd64&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
IgnoreAllDefaultLibraries="false"
DelayLoadDLLs="setupapi.dll;advapi32.dll;user32.dll"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(SolutionDir)DebugFiles\pdb\$(PlatformName)_$(ConfigurationName)\$(ProjectName).pdb"
GenerateMapFile="true"
MapFileName="$(SolutionDir)DebugFiles\map\$(PlatformName)_$(ConfigurationName)\$(ProjectName).map"
SubSystem="1"
StackReserveSize="100000"
OptimizeReferences="1"
EnableCOMDATFolding="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="2"
TargetMachine="17"
Profile="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
EmbedManifest="false"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SetManifest &quot;$(TargetPath)&quot; /MANIFEST:x64_user.manifest"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\vpntest.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\vpntest.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath=".\vpntest.rc"
>
</File>
<File
RelativePath=".\vpntest.ico"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>