Merge commit '86cc97e55fe346502462284d2e636a2b3708163e' as 'Sources/OpenVPN3'

This commit is contained in:
Sergey Abramchuk
2020-02-24 14:43:11 +03:00
655 changed files with 146468 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
*.pyc
cli.exe
cli.obj
*.pdb
.vs
parms_local.py
Debug
x64
PropertySheet.props
*.VC.db
*.VC.opendb
*.vcxproj.user
+100
View File
@@ -0,0 +1,100 @@
#!/c/python27/python
import os
from utils import *
def cli_cpp(parms):
return os.path.join(parms['OVPN3'], "core", "test", "ovpncli", "cli.cpp")
def src_fn(parms, srcfile):
# Get source file name
if srcfile:
if '.' not in os.path.basename(srcfile):
srcfile += ".cpp"
else:
srcfile = cli_cpp(parms)
return srcfile
def is_unit_test(argv):
unit_test = False
if len(argv) >= 2:
unit_test = argv[1] == "unittest"
return unit_test
def src_fn_argv(parms, argv):
srcfile = None
if len(argv) >= 1:
srcfile = argv[0]
return src_fn(parms, srcfile)
def build(parms, srcfile, unit_test=False):
# Debug?
if parms['DEBUG']:
dbg_rel_flags = "/Zi"
else:
dbg_rel_flags = "/O2"
# Dictionary we will use to substitute parameters
# onto VC command line.
options = {
"ovpn3" : parms['OVPN3'],
"tap" : os.path.join(build_dir(parms), "tap-windows", "src"),
"tap_component_id" : parms['TAP_WIN_COMPONENT_ID'],
"asio" : os.path.join(build_dir(parms), "asio"),
"mbedtls" : os.path.join(build_dir(parms), "mbedtls"),
"openssl" : os.path.join(build_dir(parms), "openssl"),
"lz4" : os.path.join(build_dir(parms), "lz4", "lib"),
"srcfile" : srcfile,
"extra_defs" : parms['CPP_EXTRA'],
"extra_inc" : "",
"extra_lib_path" : "",
"extra_lib" : "",
}
vc_parms(parms, options)
# Do we need to support XP and Win 2003?
arch = os.environ.get("ARCH", parms['ARCH'])
if arch == "x86_xp":
options['extra_defs'] += " /D_WIN32_WINNT=0x0501" # pre-Vista
else:
options['extra_defs'] += " /D_WIN32_WINNT=0x0600" # Vista and later
options['extra_lib'] += " fwpuclnt.lib"
# Add jsoncpp (optional)
if parms.get('USE_JSONCPP'):
options["jsoncpp"] = os.path.join(build_dir(parms), "jsoncpp")
options['extra_inc'] += " /DHAVE_JSONCPP /I %(jsoncpp)s/dist" % options
options['extra_lib_path'] += " /LIBPATH:%(jsoncpp)s/dist" % options
options['extra_lib'] += " jsoncpp.lib"
if unit_test:
options['extra_lib'] += " gtest.lib"
options['extra_inc'] += " /I %s" % os.path.join(parms["GTEST_ROOT"], "googletest", "include")
options['extra_lib_path'] += " /LIBPATH:%s" % os.path.join(parms["GTEST_ROOT"], "googlemock", "gtest", "Debug")
# Build OpenVPN Connect
if parms.get("CONNECT"):
options['extra_inc'] += " /I " + os.path.join(parms['OVPN3'], "common")
if parms.get("USE_OPENSSL"):
options['extra_inc'] += ' /DUSE_OPENSSL /I %s' % os.path.join(options['openssl'], 'include')
options['extra_lib_path'] += ' /LIBPATH:%s' % options['openssl']
options['extra_lib'] += ' libssl.lib libcrypto.lib'
else:
options['extra_inc'] += ' /DUSE_MBEDTLS /I %s' % os.path.join(options['mbedtls'], 'include')
options['extra_lib_path'] += ' /LIBPATH:%s' % os.path.join(options['mbedtls'], 'library')
options['extra_lib'] += ' mbedtls.lib'
# build it
vc_cmd(parms, r"cl %(extra_defs)s /DNOMINMAX /bigobj /D_CRT_SECURE_NO_WARNINGS /DUSE_ASIO /DASIO_STANDALONE /DASIO_NO_DEPRECATED /I %(asio)s\asio\include /DHAVE_LZ4 /I %(lz4)s %(extra_inc)s -DTAP_WIN_COMPONENT_ID=%(tap_component_id)s /I %(tap)s /I %(ovpn3)s\core /EHsc %(link_static_dynamic_flags)s /W0 %(dbg_rel_flags)s /nologo %(srcfile)s /link /LIBPATH:%(lz4)s%(extra_lib_path)s lz4.lib%(extra_lib)s ws2_32.lib crypt32.lib iphlpapi.lib winmm.lib user32.lib gdi32.lib advapi32.lib wininet.lib shell32.lib ole32.lib rpcrt4.lib Wtsapi32.lib Setupapi.lib Cfgmgr32.lib" % options, arch=os.environ.get("ARCH"))
if __name__ == "__main__":
import sys
params = read_params()
src = src_fn_argv(params, sys.argv[1:])
unit_test = is_unit_test(sys.argv[1:])
build(params, src, unit_test)
+170
View File
@@ -0,0 +1,170 @@
import glob
import os
import re
from utils import *
def compile_one_file(parms, srcfile, incdirs):
extra = {
"srcfile" : srcfile,
"incdirs" : ' '.join([r"/I %s" % (x,) for x in incdirs]),
}
vc_parms(parms, extra)
vc_cmd(parms, r"cl /c /DNOMINMAX /D_CRT_SECURE_NO_WARNINGS %(incdirs)s /EHsc %(link_static_dynamic_flags)s /W3 %(dbg_rel_flags)s /nologo %(srcfile)s" % extra, arch=os.environ.get("ARCH"))
def build_asio(parms):
print "**************** ASIO"
with Cd(build_dir(parms)):
asio_ver = parms["ASIO_VERSION"]
url = "https://github.com/chriskohlhoff/asio/archive/%s.tar.gz" % asio_ver
arch_path = os.path.join(build_dir(parms), download(url))
checksum = sha256_checksum(arch_path)
if checksum != parms["ASIO_CSUM"]:
sys.exit("Checksum mismatch, expected %s, actual %s" % (parms["ASIO_CSUM"], checksum))
with ModEnv('PATH', "%s\\bin;%s" % (parms.get('GIT'), os.environ['PATH'])):
extract(arch_path, "gz")
dist = os.path.realpath('asio')
rmtree(dist)
os.rename("asio-%s" % asio_ver, dist)
rm(arch_path)
for patch_file in glob.glob(os.path.join(parms.get('OVPN3'), "core", "deps", "asio", "patches", "*.patch")):
call(["git", "apply", "--whitespace=nowarn", "--ignore-space-change", "--verbose", patch_file], cwd=dist)
def build_mbedtls(parms):
print "**************** MBEDTLS"
with Cd(build_dir(parms)):
url = "https://tls.mbed.org/download/%s-apache.tgz" % parms["MBEDTLS_VERSION"]
arch_path = os.path.join(build_dir(parms), download(url))
checksum = sha256_checksum(arch_path)
if checksum != parms["MBEDTLS_CSUM"]:
sys.exit("Checksum mismatch, expected %s, actual %s" % (parms["MBEDTLS_CSUM"], checksum))
with ModEnv('PATH', "%s\\bin;%s" % (parms.get('GIT'), os.environ['PATH'])):
extract(arch_path, "gz")
dist = os.path.realpath('mbedtls')
rmtree(dist)
os.rename(parms["MBEDTLS_VERSION"], dist)
rm(arch_path)
# edit mbedTLS config.h
conf_fn = os.path.join(dist, 'include', 'mbedtls', 'config.h')
with open(conf_fn) as f:
conf = f.read()
conf = re.sub(r"^//(?=#define MBEDTLS_MD4_C)", "", conf, flags=re.M);
with open(conf_fn, 'w') as f:
f.write(conf)
# apply patches
unapplicable_patches = ["0005-data_files-pkcs8-v2-add-keys-generated-with-PRF-SHA1.patch"]
for patch_file in glob.glob(os.path.join(parms.get('OVPN3'), "core", "deps", "mbedtls", "patches", "*.patch")):
for unapplicable_patch in unapplicable_patches:
if patch_file.endswith(unapplicable_patch):
print "Skipping %s, 'git apply' doesn't apply it on Windows" % patch_file
break
else:
call(["git", "apply", "--whitespace=nowarn", "--ignore-space-change", "--verbose", patch_file], cwd=dist)
# compile the source files
os.chdir(os.path.join(dist, "library"))
obj = []
for dirpath, dirnames, filenames in os.walk("."):
for f in filenames:
if f.endswith(".c"):
compile_one_file(parms, f, (r"..\include",))
obj.append(f[:-2]+".obj")
break
# collect object files into mbedtls.lib
vc_cmd(parms, r"lib /OUT:mbedtls.lib " + ' '.join(obj))
def build_lz4(parms):
print "**************** LZ4"
with Cd(build_dir(parms)):
url = "https://github.com/lz4/lz4/archive/v%s.tar.gz" % parms["LZ4_VERSION"][4:]
arch_name = download(url)
checksum = sha256_checksum(arch_name)
if checksum != parms["LZ4_CSUM"]:
sys.exit("Checksum mismatch, expected %s, actual %s" % (parms["LZ4_CSUM"], checksum))
with ModEnv('PATH', "%s\\bin;%s" % (parms.get('GIT'), os.environ['PATH'])):
extract(arch_name, "gz")
dist = os.path.realpath('lz4')
rmtree(dist)
os.rename(parms["LZ4_VERSION"], dist)
rm(arch_name)
os.chdir(os.path.join(dist, "lib"))
compile_one_file(parms, "lz4.c", ())
vc_cmd(parms, r"lib /OUT:lz4.lib lz4.obj")
def build_tap(parms):
print "**************** Windows-TAP"
with Cd(build_dir(parms)):
url = "https://github.com/OpenVPN/tap-windows6/archive/%s.zip" % parms["TAP_VERSION"]
arch_name = download(url)
checksum = sha256_checksum(arch_name)
if checksum != parms["TAP_CSUM"]:
sys.exit("Checksum mismatch, expected %s, actual %s" % (parms["TAP_CSUM"], checksum))
with ModEnv('PATH', "%s\\bin;%s" % (parms.get('GIT'), os.environ['PATH'])):
extract(arch_name, "zip")
dist = os.path.realpath('tap-windows')
rmtree(dist)
os.rename("tap-windows6-%s" % parms["TAP_VERSION"], dist)
rm(arch_name)
def build_jsoncpp(parms):
print "**************** JSONCPP"
with Cd(build_dir(parms)):
url = "https://github.com/open-source-parsers/jsoncpp/archive/%s.tar.gz" % parms["JSONCPP_VERSION"]
arch_name = download(url)
checksum = sha256_checksum(arch_name)
if checksum != parms["JSONCPP_CSUM"]:
sys.exit("Checksum mismatch, expected %s, actual %s" % (parms["JSONCPP_CSUM"], checksum))
with ModEnv('PATH', "%s\\bin;%s" % (parms.get('GIT'), os.environ['PATH'])):
dist = os.path.realpath('jsoncpp')
rmtree(dist)
extract(arch_name, "gz")
rm(arch_name)
os.rename("jsoncpp-%s" % parms["JSONCPP_VERSION"], dist)
os.chdir(dist)
call(["python", "amalgamate.py"])
os.chdir(os.path.join(dist, "dist"))
compile_one_file(parms, "jsoncpp.cpp", (".",))
vc_cmd(parms, r"lib /OUT:jsoncpp.lib jsoncpp.obj")
def build_openssl(parms):
print "**************** OPENSSL"
with Cd(build_dir(parms)):
url = "https://www.openssl.org/source/%s.tar.gz" % parms["OPENSSL_VERSION"]
arch_path = os.path.join(build_dir(parms), download(url))
checksum = sha256_checksum(arch_path)
if checksum != parms["OPENSSL_CSUM"]:
sys.exit("Checksum mismatch, expected %s, actual %s" % (parms["OPENSSL_CSUM"], checksum))
with ModEnv('PATH', "%s\\bin;%s" % (parms.get('GIT'), os.environ['PATH'])):
extract(arch_path, "gz")
dist = os.path.realpath('openssl')
rmtree(dist)
os.rename(parms["OPENSSL_VERSION"], dist)
rm(arch_path)
os.chdir(dist)
if parms["ARCH"] in ["amd64", "x64"]:
arch = "VC-WIN64A"
else:
arch = "VC-WIN32"
for cmd in ["perl Configure %s" % arch, "nmake"]:
vc_cmd(parms, cmd)
def build_all(parms):
wipetree(build_dir(parms))
build_asio(parms)
build_openssl(parms)
build_mbedtls(parms)
build_lz4(parms)
build_jsoncpp(parms)
build_tap(parms)
if __name__ == "__main__":
build_all(read_params())
+56
View File
@@ -0,0 +1,56 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29519.181
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cli", "ovpn3-core.vcxproj", "{1F891260-2039-494F-9777-EC5166AF31BC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
DebugAgent|ARM = DebugAgent|ARM
DebugAgent|x64 = DebugAgent|x64
DebugAgent|x86 = DebugAgent|x86
DebugOpenSSL|ARM = DebugOpenSSL|ARM
DebugOpenSSL|x64 = DebugOpenSSL|x64
DebugOpenSSL|x86 = DebugOpenSSL|x86
Release|ARM = Release|ARM
Release|x64 = Release|x64
Release|x86 = Release|x86
ReleaseOpenSSL|ARM = ReleaseOpenSSL|ARM
ReleaseOpenSSL|x64 = ReleaseOpenSSL|x64
ReleaseOpenSSL|x86 = ReleaseOpenSSL|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1F891260-2039-494F-9777-EC5166AF31BC}.Debug|ARM.ActiveCfg = Debug|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.Debug|x64.ActiveCfg = Debug|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.Debug|x64.Build.0 = Debug|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.Debug|x86.ActiveCfg = Debug|Win32
{1F891260-2039-494F-9777-EC5166AF31BC}.Debug|x86.Build.0 = Debug|Win32
{1F891260-2039-494F-9777-EC5166AF31BC}.DebugAgent|ARM.ActiveCfg = DebugAgent|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.DebugAgent|x64.ActiveCfg = DebugAgent|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.DebugAgent|x64.Build.0 = DebugAgent|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.DebugAgent|x86.ActiveCfg = DebugAgent|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.DebugOpenSSL|ARM.ActiveCfg = DebugOpenSSL|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.DebugOpenSSL|x64.ActiveCfg = DebugOpenSSL|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.DebugOpenSSL|x64.Build.0 = DebugOpenSSL|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.DebugOpenSSL|x86.ActiveCfg = DebugOpenSSL|Win32
{1F891260-2039-494F-9777-EC5166AF31BC}.DebugOpenSSL|x86.Build.0 = DebugOpenSSL|Win32
{1F891260-2039-494F-9777-EC5166AF31BC}.Release|ARM.ActiveCfg = Release|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.Release|x64.ActiveCfg = Release|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.Release|x64.Build.0 = Release|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.Release|x86.ActiveCfg = Release|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.ReleaseOpenSSL|ARM.ActiveCfg = ReleaseOpenSSL|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.ReleaseOpenSSL|x64.ActiveCfg = ReleaseOpenSSL|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.ReleaseOpenSSL|x64.Build.0 = ReleaseOpenSSL|x64
{1F891260-2039-494F-9777-EC5166AF31BC}.ReleaseOpenSSL|x86.ActiveCfg = ReleaseOpenSSL|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2C22702B-DF56-4CEB-9CA4-C999BD01FD03}
EndGlobalSection
EndGlobal
+746
View File
@@ -0,0 +1,746 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="DebugAgent|Win32">
<Configuration>DebugAgent</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugAgent|x64">
<Configuration>DebugAgent</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugOpenSSL|Win32">
<Configuration>DebugOpenSSL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugOpenSSL|x64">
<Configuration>DebugOpenSSL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseOpenSSL|Win32">
<Configuration>ReleaseOpenSSL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseOpenSSL|x64">
<Configuration>ReleaseOpenSSL</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>
<ItemGroup>
<ClInclude Include="..\client\ovpncli.hpp" />
<ClInclude Include="..\openvpn\addr\addrlist.hpp" />
<ClInclude Include="..\openvpn\addr\addrpair.hpp" />
<ClInclude Include="..\openvpn\addr\ip.hpp" />
<ClInclude Include="..\openvpn\addr\iperr.hpp" />
<ClInclude Include="..\openvpn\addr\ipv4.hpp" />
<ClInclude Include="..\openvpn\addr\ipv6.hpp" />
<ClInclude Include="..\openvpn\addr\macaddr.hpp" />
<ClInclude Include="..\openvpn\addr\pool.hpp" />
<ClInclude Include="..\openvpn\addr\quoteip.hpp" />
<ClInclude Include="..\openvpn\addr\randaddr.hpp" />
<ClInclude Include="..\openvpn\addr\range.hpp" />
<ClInclude Include="..\openvpn\addr\regex.hpp" />
<ClInclude Include="..\openvpn\addr\route.hpp" />
<ClInclude Include="..\openvpn\addr\routeinv.hpp" />
<ClInclude Include="..\openvpn\applecrypto\crypto\api.hpp" />
<ClInclude Include="..\openvpn\applecrypto\crypto\cipher.hpp" />
<ClInclude Include="..\openvpn\applecrypto\crypto\digest.hpp" />
<ClInclude Include="..\openvpn\applecrypto\crypto\hmac.hpp" />
<ClInclude Include="..\openvpn\applecrypto\ssl\sslctx.hpp" />
<ClInclude Include="..\openvpn\applecrypto\util\rand.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cf.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfhelper.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfhost.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfrunloop.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfsec.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfsocket.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfstream.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cftimer.hpp" />
<ClInclude Include="..\openvpn\apple\cf\error.hpp" />
<ClInclude Include="..\openvpn\apple\iosactiveiface.hpp" />
<ClInclude Include="..\openvpn\apple\maclife.hpp" />
<ClInclude Include="..\openvpn\apple\macsleep.hpp" />
<ClInclude Include="..\openvpn\apple\macver.hpp" />
<ClInclude Include="..\openvpn\apple\reach.hpp" />
<ClInclude Include="..\openvpn\apple\reachable.hpp" />
<ClInclude Include="..\openvpn\apple\scdynstore.hpp" />
<ClInclude Include="..\openvpn\apple\ver.hpp" />
<ClInclude Include="..\openvpn\asio\asioboundsock.hpp" />
<ClInclude Include="..\openvpn\asio\asiocontext.hpp" />
<ClInclude Include="..\openvpn\asio\asioerr.hpp" />
<ClInclude Include="..\openvpn\asio\asiopolysock.hpp" />
<ClInclude Include="..\openvpn\asio\asioresolverres.hpp" />
<ClInclude Include="..\openvpn\asio\asiosignal.hpp" />
<ClInclude Include="..\openvpn\asio\asiostop.hpp" />
<ClInclude Include="..\openvpn\asio\asiowork.hpp" />
<ClInclude Include="..\openvpn\asio\scoped_asio_stream.hpp" />
<ClInclude Include="..\openvpn\auth\authcert.hpp" />
<ClInclude Include="..\openvpn\auth\authcreds.hpp" />
<ClInclude Include="..\openvpn\auth\cr.hpp" />
<ClInclude Include="..\openvpn\auth\validatecreds.hpp" />
<ClInclude Include="..\openvpn\buffer\asiobuf.hpp" />
<ClInclude Include="..\openvpn\buffer\bufclamp.hpp" />
<ClInclude Include="..\openvpn\buffer\bufcomplete.hpp" />
<ClInclude Include="..\openvpn\buffer\bufcomposed.hpp" />
<ClInclude Include="..\openvpn\buffer\buffer.hpp" />
<ClInclude Include="..\openvpn\buffer\bufhex.hpp" />
<ClInclude Include="..\openvpn\buffer\buflimit.hpp" />
<ClInclude Include="..\openvpn\buffer\buflist.hpp" />
<ClInclude Include="..\openvpn\buffer\bufread.hpp" />
<ClInclude Include="..\openvpn\buffer\bufstr.hpp" />
<ClInclude Include="..\openvpn\buffer\bufstream.hpp" />
<ClInclude Include="..\openvpn\buffer\lz4.hpp" />
<ClInclude Include="..\openvpn\buffer\memq.hpp" />
<ClInclude Include="..\openvpn\buffer\safestr.hpp" />
<ClInclude Include="..\openvpn\buffer\zlib.hpp" />
<ClInclude Include="..\openvpn\client\cliconnect.hpp" />
<ClInclude Include="..\openvpn\client\cliconstants.hpp" />
<ClInclude Include="..\openvpn\client\clicreds.hpp" />
<ClInclude Include="..\openvpn\client\cliemuexr.hpp" />
<ClInclude Include="..\openvpn\client\clievent.hpp" />
<ClInclude Include="..\openvpn\client\clihalt.hpp" />
<ClInclude Include="..\openvpn\client\clilife.hpp" />
<ClInclude Include="..\openvpn\client\cliopt.hpp" />
<ClInclude Include="..\openvpn\client\cliopthelper.hpp" />
<ClInclude Include="..\openvpn\client\cliproto.hpp" />
<ClInclude Include="..\openvpn\client\ipverflags.hpp" />
<ClInclude Include="..\openvpn\client\optfilt.hpp" />
<ClInclude Include="..\openvpn\client\remotelist.hpp" />
<ClInclude Include="..\openvpn\client\rgopt.hpp" />
<ClInclude Include="..\openvpn\common\abort.hpp" />
<ClInclude Include="..\openvpn\common\action.hpp" />
<ClInclude Include="..\openvpn\common\actionthread.hpp" />
<ClInclude Include="..\openvpn\common\appversion.hpp" />
<ClInclude Include="..\openvpn\common\arch.hpp" />
<ClInclude Include="..\openvpn\common\argv.hpp" />
<ClInclude Include="..\openvpn\common\arraysize.hpp" />
<ClInclude Include="..\openvpn\common\asyncsleep.hpp" />
<ClInclude Include="..\openvpn\common\autoreset.hpp" />
<ClInclude Include="..\openvpn\common\base64.hpp" />
<ClInclude Include="..\openvpn\common\bigmutex.hpp" />
<ClInclude Include="..\openvpn\common\binprefix.hpp" />
<ClInclude Include="..\openvpn\common\circ_list.hpp" />
<ClInclude Include="..\openvpn\common\cleanup.hpp" />
<ClInclude Include="..\openvpn\common\core.hpp" />
<ClInclude Include="..\openvpn\common\count.hpp" />
<ClInclude Include="..\openvpn\common\daemon.hpp" />
<ClInclude Include="..\openvpn\common\demangle.hpp" />
<ClInclude Include="..\openvpn\common\destruct.hpp" />
<ClInclude Include="..\openvpn\common\endian.hpp" />
<ClInclude Include="..\openvpn\common\enumdir.hpp" />
<ClInclude Include="..\openvpn\common\environ.hpp" />
<ClInclude Include="..\openvpn\common\event.hpp" />
<ClInclude Include="..\openvpn\common\exception.hpp" />
<ClInclude Include="..\openvpn\common\extern.hpp" />
<ClInclude Include="..\openvpn\common\ffs.hpp" />
<ClInclude Include="..\openvpn\common\file.hpp" />
<ClInclude Include="..\openvpn\common\fileatomic.hpp" />
<ClInclude Include="..\openvpn\common\fileunix.hpp" />
<ClInclude Include="..\openvpn\common\format.hpp" />
<ClInclude Include="..\openvpn\common\function.hpp" />
<ClInclude Include="..\openvpn\common\getopt.hpp" />
<ClInclude Include="..\openvpn\common\getpw.hpp" />
<ClInclude Include="..\openvpn\common\glob.hpp" />
<ClInclude Include="..\openvpn\common\hash.hpp" />
<ClInclude Include="..\openvpn\common\hexstr.hpp" />
<ClInclude Include="..\openvpn\common\hostlist.hpp" />
<ClInclude Include="..\openvpn\common\hostname.hpp" />
<ClInclude Include="..\openvpn\common\hostport.hpp" />
<ClInclude Include="..\openvpn\common\jsonlib.hpp" />
<ClInclude Include="..\openvpn\common\lex.hpp" />
<ClInclude Include="..\openvpn\common\likely.hpp" />
<ClInclude Include="..\openvpn\common\link.hpp" />
<ClInclude Include="..\openvpn\common\logrotate.hpp" />
<ClInclude Include="..\openvpn\common\memneq.hpp" />
<ClInclude Include="..\openvpn\common\mode.hpp" />
<ClInclude Include="..\openvpn\common\modstat.hpp" />
<ClInclude Include="..\openvpn\common\msgwin.hpp" />
<ClInclude Include="..\openvpn\common\number.hpp" />
<ClInclude Include="..\openvpn\common\olong.hpp" />
<ClInclude Include="..\openvpn\common\options.hpp" />
<ClInclude Include="..\openvpn\common\option_error.hpp" />
<ClInclude Include="..\openvpn\common\ostream.hpp" />
<ClInclude Include="..\openvpn\common\path.hpp" />
<ClInclude Include="..\openvpn\common\peercred.hpp" />
<ClInclude Include="..\openvpn\common\persistfile.hpp" />
<ClInclude Include="..\openvpn\common\pipe.hpp" />
<ClInclude Include="..\openvpn\common\platform.hpp" />
<ClInclude Include="..\openvpn\common\platform_name.hpp" />
<ClInclude Include="..\openvpn\common\platform_string.hpp" />
<ClInclude Include="..\openvpn\common\process.hpp" />
<ClInclude Include="..\openvpn\common\pthreadcond.hpp" />
<ClInclude Include="..\openvpn\common\rc.hpp" />
<ClInclude Include="..\openvpn\common\redir.hpp" />
<ClInclude Include="..\openvpn\common\runcontext.hpp" />
<ClInclude Include="..\openvpn\common\scoped_fd.hpp" />
<ClInclude Include="..\openvpn\common\sess_id.hpp" />
<ClInclude Include="..\openvpn\common\signal.hpp" />
<ClInclude Include="..\openvpn\common\size.hpp" />
<ClInclude Include="..\openvpn\common\sleep.hpp" />
<ClInclude Include="..\openvpn\common\sockopt.hpp" />
<ClInclude Include="..\openvpn\common\socktypes.hpp" />
<ClInclude Include="..\openvpn\common\split.hpp" />
<ClInclude Include="..\openvpn\common\splitlines.hpp" />
<ClInclude Include="..\openvpn\common\stat.hpp" />
<ClInclude Include="..\openvpn\common\stop.hpp" />
<ClInclude Include="..\openvpn\common\strerror.hpp" />
<ClInclude Include="..\openvpn\common\string.hpp" />
<ClInclude Include="..\openvpn\common\stringize.hpp" />
<ClInclude Include="..\openvpn\common\stringtempl.hpp" />
<ClInclude Include="..\openvpn\common\tempfile.hpp" />
<ClInclude Include="..\openvpn\common\to_string.hpp" />
<ClInclude Include="..\openvpn\common\umask.hpp" />
<ClInclude Include="..\openvpn\common\unicode-impl.hpp" />
<ClInclude Include="..\openvpn\common\unicode.hpp" />
<ClInclude Include="..\openvpn\common\uniqueptr.hpp" />
<ClInclude Include="..\openvpn\common\usecount.hpp" />
<ClInclude Include="..\openvpn\common\usergroup.hpp" />
<ClInclude Include="..\openvpn\common\userpass.hpp" />
<ClInclude Include="..\openvpn\common\valgrind.hpp" />
<ClInclude Include="..\openvpn\common\version.hpp" />
<ClInclude Include="..\openvpn\common\waitbarrier.hpp" />
<ClInclude Include="..\openvpn\common\write.hpp" />
<ClInclude Include="..\openvpn\common\wstring.hpp" />
<ClInclude Include="..\openvpn\compress\compnull.hpp" />
<ClInclude Include="..\openvpn\compress\compress.hpp" />
<ClInclude Include="..\openvpn\compress\compstub.hpp" />
<ClInclude Include="..\openvpn\compress\lz4.hpp" />
<ClInclude Include="..\openvpn\compress\lzo.hpp" />
<ClInclude Include="..\openvpn\compress\lzoasym.hpp" />
<ClInclude Include="..\openvpn\compress\lzoasym_impl.hpp" />
<ClInclude Include="..\openvpn\compress\lzoselect.hpp" />
<ClInclude Include="..\openvpn\compress\snappy.hpp" />
<ClInclude Include="..\openvpn\crypto\bs64_data_limit.hpp" />
<ClInclude Include="..\openvpn\crypto\cipher.hpp" />
<ClInclude Include="..\openvpn\crypto\cryptoalgs.hpp" />
<ClInclude Include="..\openvpn\crypto\cryptodc.hpp" />
<ClInclude Include="..\openvpn\crypto\cryptodcsel.hpp" />
<ClInclude Include="..\openvpn\crypto\crypto_aead.hpp" />
<ClInclude Include="..\openvpn\crypto\crypto_chm.hpp" />
<ClInclude Include="..\openvpn\crypto\decrypt_chm.hpp" />
<ClInclude Include="..\openvpn\crypto\digestapi.hpp" />
<ClInclude Include="..\openvpn\crypto\encrypt_chm.hpp" />
<ClInclude Include="..\openvpn\crypto\hashstr.hpp" />
<ClInclude Include="..\openvpn\crypto\ovpnhmac.hpp" />
<ClInclude Include="..\openvpn\crypto\packet_id.hpp" />
<ClInclude Include="..\openvpn\crypto\selftest.hpp" />
<ClInclude Include="..\openvpn\crypto\static_key.hpp" />
<ClInclude Include="..\openvpn\crypto\tls_crypt.hpp" />
<ClInclude Include="..\openvpn\dco\dcocli.hpp" />
<ClInclude Include="..\openvpn\dco\ipcollbase.hpp" />
<ClInclude Include="..\openvpn\error\error.hpp" />
<ClInclude Include="..\openvpn\error\excode.hpp" />
<ClInclude Include="..\openvpn\frame\frame.hpp" />
<ClInclude Include="..\openvpn\frame\frame_init.hpp" />
<ClInclude Include="..\openvpn\frame\memq_dgram.hpp" />
<ClInclude Include="..\openvpn\frame\memq_stream.hpp" />
<ClInclude Include="..\openvpn\http\header.hpp" />
<ClInclude Include="..\openvpn\http\htmlskip.hpp" />
<ClInclude Include="..\openvpn\http\method.hpp" />
<ClInclude Include="..\openvpn\http\parseutil.hpp" />
<ClInclude Include="..\openvpn\http\reply.hpp" />
<ClInclude Include="..\openvpn\http\request.hpp" />
<ClInclude Include="..\openvpn\http\status.hpp" />
<ClInclude Include="..\openvpn\http\urlencode.hpp" />
<ClInclude Include="..\openvpn\http\urlparm.hpp" />
<ClInclude Include="..\openvpn\http\urlparse.hpp" />
<ClInclude Include="..\openvpn\http\validate_uri.hpp" />
<ClInclude Include="..\openvpn\http\webexcept.hpp" />
<ClInclude Include="..\openvpn\init\cryptoinit.hpp" />
<ClInclude Include="..\openvpn\init\engineinit.hpp" />
<ClInclude Include="..\openvpn\init\initprocess.hpp" />
<ClInclude Include="..\openvpn\io\io.hpp" />
<ClInclude Include="..\openvpn\ip\csum.hpp" />
<ClInclude Include="..\openvpn\ip\dhcp.hpp" />
<ClInclude Include="..\openvpn\ip\eth.hpp" />
<ClInclude Include="..\openvpn\ip\icmp4.hpp" />
<ClInclude Include="..\openvpn\ip\icmp6.hpp" />
<ClInclude Include="..\openvpn\ip\ip4.hpp" />
<ClInclude Include="..\openvpn\ip\ip6.hpp" />
<ClInclude Include="..\openvpn\ip\ipcommon.hpp" />
<ClInclude Include="..\openvpn\ip\ping4.hpp" />
<ClInclude Include="..\openvpn\ip\ping6.hpp" />
<ClInclude Include="..\openvpn\ip\ptb.hpp" />
<ClInclude Include="..\openvpn\ip\tcp.hpp" />
<ClInclude Include="..\openvpn\ip\udp.hpp" />
<ClInclude Include="..\openvpn\kovpn\kocrypto.hpp" />
<ClInclude Include="..\openvpn\kovpn\kodev.hpp" />
<ClInclude Include="..\openvpn\kovpn\korekey.hpp" />
<ClInclude Include="..\openvpn\kovpn\koroute.hpp" />
<ClInclude Include="..\openvpn\kovpn\kostats.hpp" />
<ClInclude Include="..\openvpn\kovpn\kovpn.hpp" />
<ClInclude Include="..\openvpn\legal\copyright.hpp" />
<ClInclude Include="..\openvpn\linux\core.hpp" />
<ClInclude Include="..\openvpn\linux\daemon_alive.hpp" />
<ClInclude Include="..\openvpn\linux\procfs.hpp" />
<ClInclude Include="..\openvpn\log\logbase.hpp" />
<ClInclude Include="..\openvpn\log\logbasesimple.hpp" />
<ClInclude Include="..\openvpn\log\logbasesimplemac.hpp" />
<ClInclude Include="..\openvpn\log\logdatetime.hpp" />
<ClInclude Include="..\openvpn\log\lognull.hpp" />
<ClInclude Include="..\openvpn\log\logperiod.hpp" />
<ClInclude Include="..\openvpn\log\logsimple.hpp" />
<ClInclude Include="..\openvpn\log\logthread.hpp" />
<ClInclude Include="..\openvpn\log\sessionstats.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\api.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\cipher.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\ciphergcm.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\digest.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\hmac.hpp" />
<ClInclude Include="..\openvpn\mbedtls\pki\dh.hpp" />
<ClInclude Include="..\openvpn\mbedtls\pki\pkctx.hpp" />
<ClInclude Include="..\openvpn\mbedtls\pki\x509cert.hpp" />
<ClInclude Include="..\openvpn\mbedtls\pki\x509crl.hpp" />
<ClInclude Include="..\openvpn\mbedtls\ssl\sslctx.hpp" />
<ClInclude Include="..\openvpn\mbedtls\util\error.hpp" />
<ClInclude Include="..\openvpn\mbedtls\util\pkcs1.hpp" />
<ClInclude Include="..\openvpn\mbedtls\util\rand.hpp" />
<ClInclude Include="..\openvpn\mbedtls\util\selftest.hpp" />
<ClInclude Include="..\openvpn\netconf\enumiface.hpp" />
<ClInclude Include="..\openvpn\netconf\hwaddr.hpp" />
<ClInclude Include="..\openvpn\netconf\ios\net-route.h" />
<ClInclude Include="..\openvpn\netconf\linux\gw.hpp" />
<ClInclude Include="..\openvpn\netconf\linux\route.hpp" />
<ClInclude Include="..\openvpn\openssl\bio\bio_memq_dgram.hpp" />
<ClInclude Include="..\openvpn\openssl\bio\bio_memq_stream.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\api.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\cipher.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\ciphergcm.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\digest.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\hmac.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\crl.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\dh.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\pkey.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\x509.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\x509store.hpp" />
<ClInclude Include="..\openvpn\openssl\sign\pkcs7verify.hpp" />
<ClInclude Include="..\openvpn\openssl\sign\verify.hpp" />
<ClInclude Include="..\openvpn\openssl\ssl\sslctx.hpp" />
<ClInclude Include="..\openvpn\openssl\util\engine.hpp" />
<ClInclude Include="..\openvpn\openssl\util\error.hpp" />
<ClInclude Include="..\openvpn\openssl\util\init.hpp" />
<ClInclude Include="..\openvpn\openssl\util\rand.hpp" />
<ClInclude Include="..\openvpn\openssl\util\tokenencrypt.hpp" />
<ClInclude Include="..\openvpn\options\continuation.hpp" />
<ClInclude Include="..\openvpn\options\merge.hpp" />
<ClInclude Include="..\openvpn\options\sanitize.hpp" />
<ClInclude Include="..\openvpn\options\servpush.hpp" />
<ClInclude Include="..\openvpn\pki\cclist.hpp" />
<ClInclude Include="..\openvpn\pki\epkibase.hpp" />
<ClInclude Include="..\openvpn\pki\pkcs1.hpp" />
<ClInclude Include="..\openvpn\pki\x509track.hpp" />
<ClInclude Include="..\openvpn\proxy\httpdigest.hpp" />
<ClInclude Include="..\openvpn\proxy\ntlm.hpp" />
<ClInclude Include="..\openvpn\proxy\proxyauth.hpp" />
<ClInclude Include="..\openvpn\random\devurand.hpp" />
<ClInclude Include="..\openvpn\random\mtrandapi.hpp" />
<ClInclude Include="..\openvpn\random\rand2.hpp" />
<ClInclude Include="..\openvpn\random\randapi.hpp" />
<ClInclude Include="..\openvpn\random\randbytestore.hpp" />
<ClInclude Include="..\openvpn\reliable\relack.hpp" />
<ClInclude Include="..\openvpn\reliable\relcommon.hpp" />
<ClInclude Include="..\openvpn\reliable\relrecv.hpp" />
<ClInclude Include="..\openvpn\reliable\relsend.hpp" />
<ClInclude Include="..\openvpn\server\listenlist.hpp" />
<ClInclude Include="..\openvpn\server\manage.hpp" />
<ClInclude Include="..\openvpn\server\peeraddr.hpp" />
<ClInclude Include="..\openvpn\server\peerstats.hpp" />
<ClInclude Include="..\openvpn\server\servhalt.hpp" />
<ClInclude Include="..\openvpn\server\servproto.hpp" />
<ClInclude Include="..\openvpn\server\vpnservnetblock.hpp" />
<ClInclude Include="..\openvpn\server\vpnservpool.hpp" />
<ClInclude Include="..\openvpn\ssl\datalimit.hpp" />
<ClInclude Include="..\openvpn\ssl\is_openvpn_protocol.hpp" />
<ClInclude Include="..\openvpn\ssl\kuparse.hpp" />
<ClInclude Include="..\openvpn\ssl\mssparms.hpp" />
<ClInclude Include="..\openvpn\ssl\nscert.hpp" />
<ClInclude Include="..\openvpn\ssl\peerinfo.hpp" />
<ClInclude Include="..\openvpn\ssl\proto.hpp" />
<ClInclude Include="..\openvpn\ssl\protostack.hpp" />
<ClInclude Include="..\openvpn\ssl\proto_context_options.hpp" />
<ClInclude Include="..\openvpn\ssl\psid.hpp" />
<ClInclude Include="..\openvpn\ssl\sslapi.hpp" />
<ClInclude Include="..\openvpn\ssl\sslchoose.hpp" />
<ClInclude Include="..\openvpn\ssl\sslconsts.hpp" />
<ClInclude Include="..\openvpn\ssl\ssllog.hpp" />
<ClInclude Include="..\openvpn\ssl\tlsprf.hpp" />
<ClInclude Include="..\openvpn\ssl\tlsver.hpp" />
<ClInclude Include="..\openvpn\ssl\tls_cert_profile.hpp" />
<ClInclude Include="..\openvpn\ssl\tls_remote.hpp" />
<ClInclude Include="..\openvpn\time\asiotimer.hpp" />
<ClInclude Include="..\openvpn\time\coarsetime.hpp" />
<ClInclude Include="..\openvpn\time\durhelper.hpp" />
<ClInclude Include="..\openvpn\time\epoch.hpp" />
<ClInclude Include="..\openvpn\time\time.hpp" />
<ClInclude Include="..\openvpn\time\timestr.hpp" />
<ClInclude Include="..\openvpn\transport\altproxy.hpp" />
<ClInclude Include="..\openvpn\transport\client\extern\config.hpp" />
<ClInclude Include="..\openvpn\transport\client\extern\fw.hpp" />
<ClInclude Include="..\openvpn\transport\client\httpcli.hpp" />
<ClInclude Include="..\openvpn\transport\client\relay.hpp" />
<ClInclude Include="..\openvpn\transport\client\tcpcli.hpp" />
<ClInclude Include="..\openvpn\transport\client\transbase.hpp" />
<ClInclude Include="..\openvpn\transport\client\udpcli.hpp" />
<ClInclude Include="..\openvpn\transport\dco.hpp" />
<ClInclude Include="..\openvpn\transport\gremlin.hpp" />
<ClInclude Include="..\openvpn\transport\mssfix.hpp" />
<ClInclude Include="..\openvpn\transport\mutate.hpp" />
<ClInclude Include="..\openvpn\transport\pktstream.hpp" />
<ClInclude Include="..\openvpn\transport\protocol.hpp" />
<ClInclude Include="..\openvpn\transport\reconnect_notify.hpp" />
<ClInclude Include="..\openvpn\transport\server\transbase.hpp" />
<ClInclude Include="..\openvpn\transport\socket_protect.hpp" />
<ClInclude Include="..\openvpn\transport\tcplink.hpp" />
<ClInclude Include="..\openvpn\transport\tcplinkbase.hpp" />
<ClInclude Include="..\openvpn\transport\tcplinkcommon.hpp" />
<ClInclude Include="..\openvpn\transport\udplink.hpp" />
<ClInclude Include="..\openvpn\tun\builder\base.hpp" />
<ClInclude Include="..\openvpn\tun\builder\capture.hpp" />
<ClInclude Include="..\openvpn\tun\builder\client.hpp" />
<ClInclude Include="..\openvpn\tun\builder\rgwflags.hpp" />
<ClInclude Include="..\openvpn\tun\builder\setup.hpp" />
<ClInclude Include="..\openvpn\tun\client\dhcp_capture.hpp" />
<ClInclude Include="..\openvpn\tun\client\emuexr.hpp" />
<ClInclude Include="..\openvpn\tun\client\tunbase.hpp" />
<ClInclude Include="..\openvpn\tun\client\tunnull.hpp" />
<ClInclude Include="..\openvpn\tun\client\tunprop.hpp" />
<ClInclude Include="..\openvpn\tun\extern\config.hpp" />
<ClInclude Include="..\openvpn\tun\extern\fw.hpp" />
<ClInclude Include="..\openvpn\tun\ipv6_setting.hpp" />
<ClInclude Include="..\openvpn\tun\layer.hpp" />
<ClInclude Include="..\openvpn\tun\linux\client\tuncli.hpp" />
<ClInclude Include="..\openvpn\tun\linux\client\tunsetup.hpp" />
<ClInclude Include="..\openvpn\tun\mac\client\tuncli.hpp" />
<ClInclude Include="..\openvpn\tun\mac\client\tunsetup.hpp" />
<ClInclude Include="..\openvpn\tun\mac\dsdict.hpp" />
<ClInclude Include="..\openvpn\tun\mac\gwv4.hpp" />
<ClInclude Include="..\openvpn\tun\mac\macdns.hpp" />
<ClInclude Include="..\openvpn\tun\mac\macdns_watchdog.hpp" />
<ClInclude Include="..\openvpn\tun\mac\macgw.hpp" />
<ClInclude Include="..\openvpn\tun\mac\macproxy.hpp" />
<ClInclude Include="..\openvpn\tun\mac\tunutil.hpp" />
<ClInclude Include="..\openvpn\tun\mac\utun.hpp" />
<ClInclude Include="..\openvpn\tun\persist\tunpersist.hpp" />
<ClInclude Include="..\openvpn\tun\persist\tunwrap.hpp" />
<ClInclude Include="..\openvpn\tun\persist\tunwrapasio.hpp" />
<ClInclude Include="..\openvpn\tun\proxy.hpp" />
<ClInclude Include="..\openvpn\tun\server\tunbase.hpp" />
<ClInclude Include="..\openvpn\tun\tunio.hpp" />
<ClInclude Include="..\openvpn\tun\tunlog.hpp" />
<ClInclude Include="..\openvpn\tun\tunmtu.hpp" />
<ClInclude Include="..\openvpn\tun\tunspec.hpp" />
<ClInclude Include="..\openvpn\tun\win\client\clientconfig.hpp" />
<ClInclude Include="..\openvpn\tun\win\client\setupbase.hpp" />
<ClInclude Include="..\openvpn\tun\win\client\tuncli.hpp" />
<ClInclude Include="..\openvpn\tun\win\client\tunsetup.hpp" />
<ClInclude Include="..\openvpn\tun\win\nrpt.hpp" />
<ClInclude Include="..\openvpn\tun\win\ringbuffer.hpp" />
<ClInclude Include="..\openvpn\tun\win\tunutil.hpp" />
<ClInclude Include="..\openvpn\tun\win\wfp.hpp" />
<ClInclude Include="..\openvpn\tun\win\winproxy.hpp" />
<ClInclude Include="..\openvpn\win\call.hpp" />
<ClInclude Include="..\openvpn\win\cmd.hpp" />
<ClInclude Include="..\openvpn\win\console.hpp" />
<ClInclude Include="..\openvpn\win\event.hpp" />
<ClInclude Include="..\openvpn\win\handle.hpp" />
<ClInclude Include="..\openvpn\win\impersonate.hpp" />
<ClInclude Include="..\openvpn\win\modname.hpp" />
<ClInclude Include="..\openvpn\win\reg.hpp" />
<ClInclude Include="..\openvpn\win\scoped_handle.hpp" />
<ClInclude Include="..\openvpn\win\sleep.hpp" />
<ClInclude Include="..\openvpn\win\unicode.hpp" />
<ClInclude Include="..\openvpn\win\winerr.hpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\test\ovpncli\cli.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{1F891260-2039-494F-9777-EC5166AF31BC}</ProjectGuid>
<RootNamespace>ovpn3core</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectName>cli</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAgent|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAgent|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugOpenSSL|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugOpenSSL|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseOpenSSL|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseOpenSSL|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_MBEDTLS;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\amd64\mbedtls\include;$(O3)\deps\amd64\tap-windows\src;$(O3)\deps\amd64\asio\asio\include;$(O3)\deps\amd64\lz4\lib;$(O3)\core;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<SuppressStartupBanner>false</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(O3)\deps\amd64\mbedtls\library;$(O3)\deps\amd64\lz4\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>lz4.lib;mbedtls.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_MBEDTLS;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\x86\mbedtls\include;$(O3)\deps\x86\tap-windows\src;$(O3)\deps\x86\asio\asio\include;$(O3)\deps\x86\lz4\lib;$(O3)\core;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<SuppressStartupBanner>false</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(O3)\deps\amd64\mbedtls\library;$(O3)\deps\amd64\lz4\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>lz4.lib;mbedtls.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAgent|x64'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_MBEDTLS;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;OPENVPN_COMMAND_AGENT;HAVE_JSONCPP;OVPNAGENT_DISABLE_PATH_CHECK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\amd64\mbedtls\include;$(O3)\deps\amd64\tap-windows\src;$(O3)\deps\amd64\asio\asio\include;$(O3)\deps\amd64\lz4\lib;$(O3)\common;$(O3)\core;$(O3)\deps\amd64\jsoncpp\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<SuppressStartupBanner>false</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(O3)\deps\amd64\mbedtls\library;$(O3)\deps\amd64\lz4\lib;$(O3)\deps\amd64\jsoncpp\dist;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>lz4.lib;mbedtls.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib;jsoncpp.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAgent|Win32'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_MBEDTLS;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;OPENVPN_COMMAND_AGENT;HAVE_JSONCPP;OVPNAGENT_DISABLE_PATH_CHECK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\x86\mbedtls\include;$(O3)\deps\x86\tap-windows\src;$(O3)\deps\x86\asio\asio\include;$(O3)\deps\x86\lz4\lib;$(O3)\common;$(O3)\core;$(O3)\deps\x86\jsoncpp\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<SuppressStartupBanner>false</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(O3)\deps\amd64\mbedtls\library;$(O3)\deps\amd64\lz4\lib;$(O3)\deps\amd64\jsoncpp\dist;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>lz4.lib;mbedtls.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib;jsoncpp.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugOpenSSL|x64'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_OPENSSL;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\amd64\openssl\include;$(O3)\deps\amd64\tap-windows\src;$(O3)\deps\amd64\asio\asio\include;$(O3)\deps\amd64\lz4\lib;$(O3)\core;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<SuppressStartupBanner>false</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(O3)\deps\amd64\openssl;$(O3)\deps\amd64\lz4\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>gdi32.lib;user32.lib;libssl.lib;libcrypto.lib;lz4.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugOpenSSL|Win32'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_OPENSSL;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\x86\openssl\include;$(O3)\deps\x86\tap-windows\src;$(O3)\deps\x86\asio\asio\include;$(O3)\deps\x86\lz4\lib;$(O3)\core;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<SuppressStartupBanner>false</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(O3)\deps\x86\openssl;$(O3)\deps\x86\lz4\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>gdi32.lib;user32.lib;libcrypto.lib;libssl.lib;lz4.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_MBEDTLS;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\amd64\mbedtls\include;$(O3)\deps\amd64\tap-windows\src;$(O3)\deps\amd64\asio\asio\include;$(O3)\deps\amd64\lz4\lib;$(O3)\core;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(O3)\deps\amd64\mbedtls\library;$(O3)\deps\amd64\lz4\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>lz4.lib;mbedtls.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_MBEDTLS;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\x86\mbedtls\include;$(O3)\deps\x86\tap-windows\src;$(O3)\deps\x86\asio\asio\include;$(O3)\deps\x86\lz4\lib;$(O3)\core;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(O3)\deps\amd64\mbedtls\library;$(O3)\deps\amd64\lz4\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>lz4.lib;mbedtls.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseOpenSSL|x64'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_OPENSSL;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\amd64\openssl\include;$(O3)\deps\amd64\tap-windows\src;$(O3)\deps\amd64\asio\asio\include;$(O3)\deps\amd64\lz4\lib;$(O3)\core;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(O3)\deps\amd64\openssl;$(O3)\deps\amd64\lz4\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>libssl.lib;libcrypto.lib;lz4.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseOpenSSL|Win32'">
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NOMINMAX;_WIN32_WINNT=0x0600;USE_ASIO;ASIO_STANDALONE;USE_OPENSSL;HAVE_LZ4;TAP_WIN_COMPONENT_ID=tap0901;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(O3)\deps\x86\openssl\include;$(O3)\deps\x86\tap-windows\src;$(O3)\deps\x86\asio\asio\include;$(O3)\deps\x86\lz4\lib;$(O3)\core;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(O3)\deps\amd64\openssl\out32dll;$(O3)\deps\amd64\lz4\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>libcrypto.lib;libssl.lib;lz4.lib;fwpuclnt.lib;ws2_32.lib;crypt32.lib;iphlpapi.lib;winmm.lib;advapi32.lib;wininet.lib;shell32.lib;ole32.lib;rpcrt4.lib;Wtsapi32.lib;setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -0,0 +1,439 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="..\openvpn\addr\addrlist.hpp" />
<ClInclude Include="..\openvpn\addr\addrpair.hpp" />
<ClInclude Include="..\openvpn\addr\ip.hpp" />
<ClInclude Include="..\openvpn\addr\iperr.hpp" />
<ClInclude Include="..\openvpn\addr\ipv4.hpp" />
<ClInclude Include="..\openvpn\addr\ipv6.hpp" />
<ClInclude Include="..\openvpn\addr\macaddr.hpp" />
<ClInclude Include="..\openvpn\addr\pool.hpp" />
<ClInclude Include="..\openvpn\addr\quoteip.hpp" />
<ClInclude Include="..\openvpn\addr\randaddr.hpp" />
<ClInclude Include="..\openvpn\addr\range.hpp" />
<ClInclude Include="..\openvpn\addr\regex.hpp" />
<ClInclude Include="..\openvpn\addr\route.hpp" />
<ClInclude Include="..\openvpn\addr\routeinv.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cf.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfhelper.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfhost.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfrunloop.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfsec.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfsocket.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cfstream.hpp" />
<ClInclude Include="..\openvpn\apple\cf\cftimer.hpp" />
<ClInclude Include="..\openvpn\apple\cf\error.hpp" />
<ClInclude Include="..\openvpn\apple\iosactiveiface.hpp" />
<ClInclude Include="..\openvpn\apple\maclife.hpp" />
<ClInclude Include="..\openvpn\apple\macsleep.hpp" />
<ClInclude Include="..\openvpn\apple\macver.hpp" />
<ClInclude Include="..\openvpn\apple\reach.hpp" />
<ClInclude Include="..\openvpn\apple\reachable.hpp" />
<ClInclude Include="..\openvpn\apple\scdynstore.hpp" />
<ClInclude Include="..\openvpn\apple\ver.hpp" />
<ClInclude Include="..\openvpn\applecrypto\crypto\api.hpp" />
<ClInclude Include="..\openvpn\applecrypto\crypto\cipher.hpp" />
<ClInclude Include="..\openvpn\applecrypto\crypto\digest.hpp" />
<ClInclude Include="..\openvpn\applecrypto\crypto\hmac.hpp" />
<ClInclude Include="..\openvpn\applecrypto\ssl\sslctx.hpp" />
<ClInclude Include="..\openvpn\applecrypto\util\rand.hpp" />
<ClInclude Include="..\openvpn\asio\asioboundsock.hpp" />
<ClInclude Include="..\openvpn\asio\asiocontext.hpp" />
<ClInclude Include="..\openvpn\asio\asioerr.hpp" />
<ClInclude Include="..\openvpn\asio\asiopolysock.hpp" />
<ClInclude Include="..\openvpn\asio\asioresolverres.hpp" />
<ClInclude Include="..\openvpn\asio\asiosignal.hpp" />
<ClInclude Include="..\openvpn\asio\asiostop.hpp" />
<ClInclude Include="..\openvpn\asio\asiowork.hpp" />
<ClInclude Include="..\openvpn\asio\scoped_asio_stream.hpp" />
<ClInclude Include="..\openvpn\auth\authcert.hpp" />
<ClInclude Include="..\openvpn\auth\authcreds.hpp" />
<ClInclude Include="..\openvpn\auth\cr.hpp" />
<ClInclude Include="..\openvpn\auth\validatecreds.hpp" />
<ClInclude Include="..\openvpn\buffer\asiobuf.hpp" />
<ClInclude Include="..\openvpn\buffer\bufclamp.hpp" />
<ClInclude Include="..\openvpn\buffer\bufcomplete.hpp" />
<ClInclude Include="..\openvpn\buffer\bufcomposed.hpp" />
<ClInclude Include="..\openvpn\buffer\buffer.hpp" />
<ClInclude Include="..\openvpn\buffer\bufhex.hpp" />
<ClInclude Include="..\openvpn\buffer\buflimit.hpp" />
<ClInclude Include="..\openvpn\buffer\buflist.hpp" />
<ClInclude Include="..\openvpn\buffer\bufread.hpp" />
<ClInclude Include="..\openvpn\buffer\bufstr.hpp" />
<ClInclude Include="..\openvpn\buffer\bufstream.hpp" />
<ClInclude Include="..\openvpn\buffer\lz4.hpp" />
<ClInclude Include="..\openvpn\buffer\memq.hpp" />
<ClInclude Include="..\openvpn\buffer\safestr.hpp" />
<ClInclude Include="..\openvpn\buffer\zlib.hpp" />
<ClInclude Include="..\openvpn\client\cliconnect.hpp" />
<ClInclude Include="..\openvpn\client\cliconstants.hpp" />
<ClInclude Include="..\openvpn\client\clicreds.hpp" />
<ClInclude Include="..\openvpn\client\cliemuexr.hpp" />
<ClInclude Include="..\openvpn\client\clievent.hpp" />
<ClInclude Include="..\openvpn\client\clihalt.hpp" />
<ClInclude Include="..\openvpn\client\clilife.hpp" />
<ClInclude Include="..\openvpn\client\cliopt.hpp" />
<ClInclude Include="..\openvpn\client\cliopthelper.hpp" />
<ClInclude Include="..\openvpn\client\cliproto.hpp" />
<ClInclude Include="..\openvpn\client\ipverflags.hpp" />
<ClInclude Include="..\openvpn\client\optfilt.hpp" />
<ClInclude Include="..\openvpn\client\remotelist.hpp" />
<ClInclude Include="..\openvpn\client\rgopt.hpp" />
<ClInclude Include="..\openvpn\common\abort.hpp" />
<ClInclude Include="..\openvpn\common\action.hpp" />
<ClInclude Include="..\openvpn\common\actionthread.hpp" />
<ClInclude Include="..\openvpn\common\appversion.hpp" />
<ClInclude Include="..\openvpn\common\arch.hpp" />
<ClInclude Include="..\openvpn\common\argv.hpp" />
<ClInclude Include="..\openvpn\common\arraysize.hpp" />
<ClInclude Include="..\openvpn\common\asyncsleep.hpp" />
<ClInclude Include="..\openvpn\common\autoreset.hpp" />
<ClInclude Include="..\openvpn\common\base64.hpp" />
<ClInclude Include="..\openvpn\common\bigmutex.hpp" />
<ClInclude Include="..\openvpn\common\binprefix.hpp" />
<ClInclude Include="..\openvpn\common\circ_list.hpp" />
<ClInclude Include="..\openvpn\common\cleanup.hpp" />
<ClInclude Include="..\openvpn\common\core.hpp" />
<ClInclude Include="..\openvpn\common\count.hpp" />
<ClInclude Include="..\openvpn\common\daemon.hpp" />
<ClInclude Include="..\openvpn\common\demangle.hpp" />
<ClInclude Include="..\openvpn\common\destruct.hpp" />
<ClInclude Include="..\openvpn\common\endian.hpp" />
<ClInclude Include="..\openvpn\common\enumdir.hpp" />
<ClInclude Include="..\openvpn\common\environ.hpp" />
<ClInclude Include="..\openvpn\common\exception.hpp" />
<ClInclude Include="..\openvpn\common\extern.hpp" />
<ClInclude Include="..\openvpn\common\ffs.hpp" />
<ClInclude Include="..\openvpn\common\file.hpp" />
<ClInclude Include="..\openvpn\common\fileatomic.hpp" />
<ClInclude Include="..\openvpn\common\fileunix.hpp" />
<ClInclude Include="..\openvpn\common\format.hpp" />
<ClInclude Include="..\openvpn\common\function.hpp" />
<ClInclude Include="..\openvpn\common\getopt.hpp" />
<ClInclude Include="..\openvpn\common\getpw.hpp" />
<ClInclude Include="..\openvpn\common\glob.hpp" />
<ClInclude Include="..\openvpn\common\hash.hpp" />
<ClInclude Include="..\openvpn\common\hexstr.hpp" />
<ClInclude Include="..\openvpn\common\hostlist.hpp" />
<ClInclude Include="..\openvpn\common\hostname.hpp" />
<ClInclude Include="..\openvpn\common\hostport.hpp" />
<ClInclude Include="..\openvpn\common\jsonlib.hpp" />
<ClInclude Include="..\openvpn\common\lex.hpp" />
<ClInclude Include="..\openvpn\common\likely.hpp" />
<ClInclude Include="..\openvpn\common\link.hpp" />
<ClInclude Include="..\openvpn\common\logrotate.hpp" />
<ClInclude Include="..\openvpn\common\memneq.hpp" />
<ClInclude Include="..\openvpn\common\mode.hpp" />
<ClInclude Include="..\openvpn\common\modstat.hpp" />
<ClInclude Include="..\openvpn\common\msgwin.hpp" />
<ClInclude Include="..\openvpn\common\number.hpp" />
<ClInclude Include="..\openvpn\common\olong.hpp" />
<ClInclude Include="..\openvpn\common\options.hpp" />
<ClInclude Include="..\openvpn\common\option_error.hpp" />
<ClInclude Include="..\openvpn\common\ostream.hpp" />
<ClInclude Include="..\openvpn\common\path.hpp" />
<ClInclude Include="..\openvpn\common\peercred.hpp" />
<ClInclude Include="..\openvpn\common\persistfile.hpp" />
<ClInclude Include="..\openvpn\common\pipe.hpp" />
<ClInclude Include="..\openvpn\common\platform.hpp" />
<ClInclude Include="..\openvpn\common\platform_name.hpp" />
<ClInclude Include="..\openvpn\common\platform_string.hpp" />
<ClInclude Include="..\openvpn\common\process.hpp" />
<ClInclude Include="..\openvpn\common\pthreadcond.hpp" />
<ClInclude Include="..\openvpn\common\rc.hpp" />
<ClInclude Include="..\openvpn\common\redir.hpp" />
<ClInclude Include="..\openvpn\common\runcontext.hpp" />
<ClInclude Include="..\openvpn\common\scoped_fd.hpp" />
<ClInclude Include="..\openvpn\common\sess_id.hpp" />
<ClInclude Include="..\openvpn\common\signal.hpp" />
<ClInclude Include="..\openvpn\common\size.hpp" />
<ClInclude Include="..\openvpn\common\sleep.hpp" />
<ClInclude Include="..\openvpn\common\sockopt.hpp" />
<ClInclude Include="..\openvpn\common\socktypes.hpp" />
<ClInclude Include="..\openvpn\common\split.hpp" />
<ClInclude Include="..\openvpn\common\splitlines.hpp" />
<ClInclude Include="..\openvpn\common\stat.hpp" />
<ClInclude Include="..\openvpn\common\stop.hpp" />
<ClInclude Include="..\openvpn\common\strerror.hpp" />
<ClInclude Include="..\openvpn\common\string.hpp" />
<ClInclude Include="..\openvpn\common\stringize.hpp" />
<ClInclude Include="..\openvpn\common\stringtempl.hpp" />
<ClInclude Include="..\openvpn\common\tempfile.hpp" />
<ClInclude Include="..\openvpn\common\to_string.hpp" />
<ClInclude Include="..\openvpn\common\umask.hpp" />
<ClInclude Include="..\openvpn\common\unicode-impl.hpp" />
<ClInclude Include="..\openvpn\common\unicode.hpp" />
<ClInclude Include="..\openvpn\common\uniqueptr.hpp" />
<ClInclude Include="..\openvpn\common\usecount.hpp" />
<ClInclude Include="..\openvpn\common\usergroup.hpp" />
<ClInclude Include="..\openvpn\common\userpass.hpp" />
<ClInclude Include="..\openvpn\common\valgrind.hpp" />
<ClInclude Include="..\openvpn\common\version.hpp" />
<ClInclude Include="..\openvpn\common\waitbarrier.hpp" />
<ClInclude Include="..\openvpn\common\write.hpp" />
<ClInclude Include="..\openvpn\common\wstring.hpp" />
<ClInclude Include="..\openvpn\compress\compnull.hpp" />
<ClInclude Include="..\openvpn\compress\compress.hpp" />
<ClInclude Include="..\openvpn\compress\compstub.hpp" />
<ClInclude Include="..\openvpn\compress\lz4.hpp" />
<ClInclude Include="..\openvpn\compress\lzo.hpp" />
<ClInclude Include="..\openvpn\compress\lzoasym.hpp" />
<ClInclude Include="..\openvpn\compress\lzoasym_impl.hpp" />
<ClInclude Include="..\openvpn\compress\lzoselect.hpp" />
<ClInclude Include="..\openvpn\compress\snappy.hpp" />
<ClInclude Include="..\openvpn\crypto\bs64_data_limit.hpp" />
<ClInclude Include="..\openvpn\crypto\cipher.hpp" />
<ClInclude Include="..\openvpn\crypto\cryptoalgs.hpp" />
<ClInclude Include="..\openvpn\crypto\cryptodc.hpp" />
<ClInclude Include="..\openvpn\crypto\cryptodcsel.hpp" />
<ClInclude Include="..\openvpn\crypto\crypto_aead.hpp" />
<ClInclude Include="..\openvpn\crypto\crypto_chm.hpp" />
<ClInclude Include="..\openvpn\crypto\decrypt_chm.hpp" />
<ClInclude Include="..\openvpn\crypto\digestapi.hpp" />
<ClInclude Include="..\openvpn\crypto\encrypt_chm.hpp" />
<ClInclude Include="..\openvpn\crypto\hashstr.hpp" />
<ClInclude Include="..\openvpn\crypto\ovpnhmac.hpp" />
<ClInclude Include="..\openvpn\crypto\packet_id.hpp" />
<ClInclude Include="..\openvpn\crypto\selftest.hpp" />
<ClInclude Include="..\openvpn\crypto\static_key.hpp" />
<ClInclude Include="..\openvpn\crypto\tls_crypt.hpp" />
<ClInclude Include="..\openvpn\dco\dcocli.hpp" />
<ClInclude Include="..\openvpn\dco\ipcollbase.hpp" />
<ClInclude Include="..\openvpn\error\error.hpp" />
<ClInclude Include="..\openvpn\error\excode.hpp" />
<ClInclude Include="..\openvpn\frame\frame.hpp" />
<ClInclude Include="..\openvpn\frame\frame_init.hpp" />
<ClInclude Include="..\openvpn\frame\memq_dgram.hpp" />
<ClInclude Include="..\openvpn\frame\memq_stream.hpp" />
<ClInclude Include="..\openvpn\http\header.hpp" />
<ClInclude Include="..\openvpn\http\htmlskip.hpp" />
<ClInclude Include="..\openvpn\http\method.hpp" />
<ClInclude Include="..\openvpn\http\parseutil.hpp" />
<ClInclude Include="..\openvpn\http\reply.hpp" />
<ClInclude Include="..\openvpn\http\request.hpp" />
<ClInclude Include="..\openvpn\http\status.hpp" />
<ClInclude Include="..\openvpn\http\urlencode.hpp" />
<ClInclude Include="..\openvpn\http\urlparm.hpp" />
<ClInclude Include="..\openvpn\http\urlparse.hpp" />
<ClInclude Include="..\openvpn\http\validate_uri.hpp" />
<ClInclude Include="..\openvpn\http\webexcept.hpp" />
<ClInclude Include="..\openvpn\init\cryptoinit.hpp" />
<ClInclude Include="..\openvpn\init\engineinit.hpp" />
<ClInclude Include="..\openvpn\init\initprocess.hpp" />
<ClInclude Include="..\openvpn\io\io.hpp" />
<ClInclude Include="..\openvpn\ip\dhcp.hpp" />
<ClInclude Include="..\openvpn\ip\eth.hpp" />
<ClInclude Include="..\openvpn\ip\icmp4.hpp" />
<ClInclude Include="..\openvpn\ip\icmp6.hpp" />
<ClInclude Include="..\openvpn\ip\ip4.hpp" />
<ClInclude Include="..\openvpn\ip\ip6.hpp" />
<ClInclude Include="..\openvpn\ip\ipcommon.hpp" />
<ClInclude Include="..\openvpn\ip\udp.hpp" />
<ClInclude Include="..\openvpn\kovpn\kocrypto.hpp" />
<ClInclude Include="..\openvpn\kovpn\kodev.hpp" />
<ClInclude Include="..\openvpn\kovpn\korekey.hpp" />
<ClInclude Include="..\openvpn\kovpn\koroute.hpp" />
<ClInclude Include="..\openvpn\kovpn\kostats.hpp" />
<ClInclude Include="..\openvpn\kovpn\kovpn.hpp" />
<ClInclude Include="..\openvpn\legal\copyright.hpp" />
<ClInclude Include="..\openvpn\linux\core.hpp" />
<ClInclude Include="..\openvpn\linux\daemon_alive.hpp" />
<ClInclude Include="..\openvpn\linux\procfs.hpp" />
<ClInclude Include="..\openvpn\log\logbase.hpp" />
<ClInclude Include="..\openvpn\log\logbasesimple.hpp" />
<ClInclude Include="..\openvpn\log\logbasesimplemac.hpp" />
<ClInclude Include="..\openvpn\log\logdatetime.hpp" />
<ClInclude Include="..\openvpn\log\lognull.hpp" />
<ClInclude Include="..\openvpn\log\logperiod.hpp" />
<ClInclude Include="..\openvpn\log\logsimple.hpp" />
<ClInclude Include="..\openvpn\log\logthread.hpp" />
<ClInclude Include="..\openvpn\log\sessionstats.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\api.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\cipher.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\ciphergcm.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\digest.hpp" />
<ClInclude Include="..\openvpn\mbedtls\crypto\hmac.hpp" />
<ClInclude Include="..\openvpn\mbedtls\pki\dh.hpp" />
<ClInclude Include="..\openvpn\mbedtls\pki\pkctx.hpp" />
<ClInclude Include="..\openvpn\mbedtls\pki\x509cert.hpp" />
<ClInclude Include="..\openvpn\mbedtls\pki\x509crl.hpp" />
<ClInclude Include="..\openvpn\mbedtls\ssl\sslctx.hpp" />
<ClInclude Include="..\openvpn\mbedtls\util\error.hpp" />
<ClInclude Include="..\openvpn\mbedtls\util\pkcs1.hpp" />
<ClInclude Include="..\openvpn\mbedtls\util\rand.hpp" />
<ClInclude Include="..\openvpn\mbedtls\util\selftest.hpp" />
<ClInclude Include="..\openvpn\netconf\enumiface.hpp" />
<ClInclude Include="..\openvpn\netconf\hwaddr.hpp" />
<ClInclude Include="..\openvpn\netconf\ios\net-route.h" />
<ClInclude Include="..\openvpn\netconf\linux\gw.hpp" />
<ClInclude Include="..\openvpn\netconf\linux\route.hpp" />
<ClInclude Include="..\openvpn\openssl\bio\bio_memq_dgram.hpp" />
<ClInclude Include="..\openvpn\openssl\bio\bio_memq_stream.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\api.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\cipher.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\ciphergcm.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\digest.hpp" />
<ClInclude Include="..\openvpn\openssl\crypto\hmac.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\crl.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\dh.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\pkey.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\x509.hpp" />
<ClInclude Include="..\openvpn\openssl\pki\x509store.hpp" />
<ClInclude Include="..\openvpn\openssl\sign\pkcs7verify.hpp" />
<ClInclude Include="..\openvpn\openssl\sign\verify.hpp" />
<ClInclude Include="..\openvpn\openssl\ssl\sslctx.hpp" />
<ClInclude Include="..\openvpn\openssl\util\engine.hpp" />
<ClInclude Include="..\openvpn\openssl\util\error.hpp" />
<ClInclude Include="..\openvpn\openssl\util\init.hpp" />
<ClInclude Include="..\openvpn\openssl\util\rand.hpp" />
<ClInclude Include="..\openvpn\openssl\util\tokenencrypt.hpp" />
<ClInclude Include="..\openvpn\options\continuation.hpp" />
<ClInclude Include="..\openvpn\options\merge.hpp" />
<ClInclude Include="..\openvpn\options\sanitize.hpp" />
<ClInclude Include="..\openvpn\options\servpush.hpp" />
<ClInclude Include="..\openvpn\pki\cclist.hpp" />
<ClInclude Include="..\openvpn\pki\epkibase.hpp" />
<ClInclude Include="..\openvpn\pki\pkcs1.hpp" />
<ClInclude Include="..\openvpn\pki\x509track.hpp" />
<ClInclude Include="..\openvpn\proxy\httpdigest.hpp" />
<ClInclude Include="..\openvpn\proxy\ntlm.hpp" />
<ClInclude Include="..\openvpn\proxy\proxyauth.hpp" />
<ClInclude Include="..\openvpn\random\devurand.hpp" />
<ClInclude Include="..\openvpn\random\mtrandapi.hpp" />
<ClInclude Include="..\openvpn\random\rand2.hpp" />
<ClInclude Include="..\openvpn\random\randapi.hpp" />
<ClInclude Include="..\openvpn\random\randbytestore.hpp" />
<ClInclude Include="..\openvpn\reliable\relack.hpp" />
<ClInclude Include="..\openvpn\reliable\relcommon.hpp" />
<ClInclude Include="..\openvpn\reliable\relrecv.hpp" />
<ClInclude Include="..\openvpn\reliable\relsend.hpp" />
<ClInclude Include="..\openvpn\server\listenlist.hpp" />
<ClInclude Include="..\openvpn\server\manage.hpp" />
<ClInclude Include="..\openvpn\server\peeraddr.hpp" />
<ClInclude Include="..\openvpn\server\peerstats.hpp" />
<ClInclude Include="..\openvpn\server\servhalt.hpp" />
<ClInclude Include="..\openvpn\server\servproto.hpp" />
<ClInclude Include="..\openvpn\server\vpnservnetblock.hpp" />
<ClInclude Include="..\openvpn\server\vpnservpool.hpp" />
<ClInclude Include="..\openvpn\ssl\datalimit.hpp" />
<ClInclude Include="..\openvpn\ssl\is_openvpn_protocol.hpp" />
<ClInclude Include="..\openvpn\ssl\kuparse.hpp" />
<ClInclude Include="..\openvpn\ssl\mssparms.hpp" />
<ClInclude Include="..\openvpn\ssl\nscert.hpp" />
<ClInclude Include="..\openvpn\ssl\peerinfo.hpp" />
<ClInclude Include="..\openvpn\ssl\proto.hpp" />
<ClInclude Include="..\openvpn\ssl\protostack.hpp" />
<ClInclude Include="..\openvpn\ssl\proto_context_options.hpp" />
<ClInclude Include="..\openvpn\ssl\psid.hpp" />
<ClInclude Include="..\openvpn\ssl\sslapi.hpp" />
<ClInclude Include="..\openvpn\ssl\sslchoose.hpp" />
<ClInclude Include="..\openvpn\ssl\sslconsts.hpp" />
<ClInclude Include="..\openvpn\ssl\ssllog.hpp" />
<ClInclude Include="..\openvpn\ssl\tlsprf.hpp" />
<ClInclude Include="..\openvpn\ssl\tlsver.hpp" />
<ClInclude Include="..\openvpn\ssl\tls_cert_profile.hpp" />
<ClInclude Include="..\openvpn\ssl\tls_remote.hpp" />
<ClInclude Include="..\openvpn\time\asiotimer.hpp" />
<ClInclude Include="..\openvpn\time\coarsetime.hpp" />
<ClInclude Include="..\openvpn\time\durhelper.hpp" />
<ClInclude Include="..\openvpn\time\epoch.hpp" />
<ClInclude Include="..\openvpn\time\time.hpp" />
<ClInclude Include="..\openvpn\time\timestr.hpp" />
<ClInclude Include="..\openvpn\transport\altproxy.hpp" />
<ClInclude Include="..\openvpn\transport\client\extern\config.hpp" />
<ClInclude Include="..\openvpn\transport\client\extern\fw.hpp" />
<ClInclude Include="..\openvpn\transport\client\httpcli.hpp" />
<ClInclude Include="..\openvpn\transport\client\relay.hpp" />
<ClInclude Include="..\openvpn\transport\client\tcpcli.hpp" />
<ClInclude Include="..\openvpn\transport\client\transbase.hpp" />
<ClInclude Include="..\openvpn\transport\client\udpcli.hpp" />
<ClInclude Include="..\openvpn\transport\dco.hpp" />
<ClInclude Include="..\openvpn\transport\gremlin.hpp" />
<ClInclude Include="..\openvpn\transport\mutate.hpp" />
<ClInclude Include="..\openvpn\transport\pktstream.hpp" />
<ClInclude Include="..\openvpn\transport\protocol.hpp" />
<ClInclude Include="..\openvpn\transport\reconnect_notify.hpp" />
<ClInclude Include="..\openvpn\transport\server\transbase.hpp" />
<ClInclude Include="..\openvpn\transport\socket_protect.hpp" />
<ClInclude Include="..\openvpn\transport\tcplink.hpp" />
<ClInclude Include="..\openvpn\transport\tcplinkbase.hpp" />
<ClInclude Include="..\openvpn\transport\tcplinkcommon.hpp" />
<ClInclude Include="..\openvpn\transport\udplink.hpp" />
<ClInclude Include="..\openvpn\tun\builder\base.hpp" />
<ClInclude Include="..\openvpn\tun\builder\capture.hpp" />
<ClInclude Include="..\openvpn\tun\builder\client.hpp" />
<ClInclude Include="..\openvpn\tun\builder\rgwflags.hpp" />
<ClInclude Include="..\openvpn\tun\builder\setup.hpp" />
<ClInclude Include="..\openvpn\tun\client\dhcp_capture.hpp" />
<ClInclude Include="..\openvpn\tun\client\emuexr.hpp" />
<ClInclude Include="..\openvpn\tun\client\tunbase.hpp" />
<ClInclude Include="..\openvpn\tun\client\tunnull.hpp" />
<ClInclude Include="..\openvpn\tun\client\tunprop.hpp" />
<ClInclude Include="..\openvpn\tun\extern\config.hpp" />
<ClInclude Include="..\openvpn\tun\extern\fw.hpp" />
<ClInclude Include="..\openvpn\tun\ipv6_setting.hpp" />
<ClInclude Include="..\openvpn\tun\layer.hpp" />
<ClInclude Include="..\openvpn\tun\linux\client\tuncli.hpp" />
<ClInclude Include="..\openvpn\tun\linux\client\tunsetup.hpp" />
<ClInclude Include="..\openvpn\tun\mac\client\tuncli.hpp" />
<ClInclude Include="..\openvpn\tun\mac\client\tunsetup.hpp" />
<ClInclude Include="..\openvpn\tun\mac\dsdict.hpp" />
<ClInclude Include="..\openvpn\tun\mac\gwv4.hpp" />
<ClInclude Include="..\openvpn\tun\mac\macdns.hpp" />
<ClInclude Include="..\openvpn\tun\mac\macdns_watchdog.hpp" />
<ClInclude Include="..\openvpn\tun\mac\macgw.hpp" />
<ClInclude Include="..\openvpn\tun\mac\macproxy.hpp" />
<ClInclude Include="..\openvpn\tun\mac\tunutil.hpp" />
<ClInclude Include="..\openvpn\tun\mac\utun.hpp" />
<ClInclude Include="..\openvpn\tun\persist\tunpersist.hpp" />
<ClInclude Include="..\openvpn\tun\persist\tunwrap.hpp" />
<ClInclude Include="..\openvpn\tun\persist\tunwrapasio.hpp" />
<ClInclude Include="..\openvpn\tun\proxy.hpp" />
<ClInclude Include="..\openvpn\tun\server\tunbase.hpp" />
<ClInclude Include="..\openvpn\tun\tunio.hpp" />
<ClInclude Include="..\openvpn\tun\tunlog.hpp" />
<ClInclude Include="..\openvpn\tun\tunmtu.hpp" />
<ClInclude Include="..\openvpn\tun\tunspec.hpp" />
<ClInclude Include="..\openvpn\tun\win\client\setupbase.hpp" />
<ClInclude Include="..\openvpn\tun\win\client\tuncli.hpp" />
<ClInclude Include="..\openvpn\tun\win\client\tunsetup.hpp" />
<ClInclude Include="..\openvpn\tun\win\nrpt.hpp" />
<ClInclude Include="..\openvpn\tun\win\tunutil.hpp" />
<ClInclude Include="..\openvpn\tun\win\wfp.hpp" />
<ClInclude Include="..\openvpn\tun\win\winproxy.hpp" />
<ClInclude Include="..\openvpn\win\call.hpp" />
<ClInclude Include="..\openvpn\win\cmd.hpp" />
<ClInclude Include="..\openvpn\win\console.hpp" />
<ClInclude Include="..\openvpn\win\handle.hpp" />
<ClInclude Include="..\openvpn\win\impersonate.hpp" />
<ClInclude Include="..\openvpn\win\modname.hpp" />
<ClInclude Include="..\openvpn\win\reg.hpp" />
<ClInclude Include="..\openvpn\win\scoped_handle.hpp" />
<ClInclude Include="..\openvpn\win\sleep.hpp" />
<ClInclude Include="..\openvpn\win\unicode.hpp" />
<ClInclude Include="..\openvpn\win\winerr.hpp" />
<ClInclude Include="..\openvpn\tun\win\winproxy.hpp" />
<ClInclude Include="..\openvpn\tun\proxy.hpp" />
<ClInclude Include="..\openvpn\win\impersonate.hpp" />
<ClInclude Include="..\openvpn\ip\icmp4.hpp" />
<ClInclude Include="..\openvpn\ip\icmp6.hpp" />
<ClInclude Include="..\openvpn\ip\ip4.hpp" />
<ClInclude Include="..\openvpn\ip\ip6.hpp" />
<ClInclude Include="..\openvpn\ip\ipcommon.hpp" />
<ClInclude Include="..\client\ovpncli.hpp" />
<ClInclude Include="..\openvpn\transport\mssfix.hpp" />
<ClInclude Include="..\openvpn\ip\tcp.hpp" />
<ClInclude Include="..\openvpn\ip\ptb.hpp" />
<ClInclude Include="..\openvpn\ip\ping4.hpp" />
<ClInclude Include="..\openvpn\ip\ping6.hpp" />
<ClInclude Include="..\openvpn\ip\csum.hpp" />
<ClInclude Include="..\openvpn\tun\win\client\clientconfig.hpp" />
<ClInclude Include="..\openvpn\tun\win\ringbuffer.hpp" />
<ClInclude Include="..\openvpn\common\event.hpp" />
<ClInclude Include="..\openvpn\win\event.hpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\test\ovpncli\cli.cpp" />
</ItemGroup>
</Project>
+59
View File
@@ -0,0 +1,59 @@
import os, re
from utils import *
from parms import PARMS
def build_openssl(parms):
print "**************** OpenSSL"
with Cd(parms['BUILD']) as cd:
with ModEnv('PATH', "%s;%s\\bin;%s" % (parms.get('NASM'), parms.get('GIT'), os.environ['PATH'])):
dist = os.path.realpath('openssl')
rmtree(dist)
d = expand('openssl', parms['DEP'], parms.get('LIB_VERSIONS'))
os.chdir(d)
patch("ossl-win", parms['PATCH'])
makedirs(dist)
# needs more work for x64, see:
# http://stackoverflow.com/questions/158232/how-do-you-compile-openssl-for-x64
targets = {
'x86' : "VC-WIN32",
'amd64' : "VC-WIN64A",
}
call(['perl', 'Configure', targets[parms['ARCH']], 'no-idea', 'no-mdc2', 'no-rc5', '--prefix=%s' % (dist,)])
archscripts = {
'x86' : "ms\\do_nasm",
'amd64' : "ms\\do_win64a",
}
vc_cmd(parms, archscripts[parms['ARCH']])
vc_cmd(parms, "nmake -f ms\\ntdll.mak")
vc_cmd(parms, "nmake -f ms\\ntdll.mak install")
# copy DLLs to PARMS['DIST']
cp(os.path.join(dist, "bin", "libeay32.dll"), PARMS['DIST'])
cp(os.path.join(dist, "bin", "ssleay32.dll"), PARMS['DIST'])
def build_boost(parms):
print "**************** Boost"
with Cd(parms['BUILD']) as cd:
d = expand('boost', parms['DEP'], parms.get('LIB_VERSIONS'))
os.chdir(d)
archopts = {
'x86' : "",
'amd64' : "architecture=x86 address-model=64",
}
vc_cmd(parms, "bootstrap", arch="x86")
vc_cmd(parms, "b2 --toolset=msvc-12.0 --with-system --with-thread --with-atomic --with-date_time --with-regex link=shared threading=multi runtime-link=shared %s stage" % (archopts[parms['ARCH']],))
# copy DLLs to PARMS['DIST']
r = re.compile(r"boost_(atomic|chrono|system|thread)-vc\d+-mt-[\d_]+\.dll")
os.chdir(os.path.join("stage", "lib"))
for dirpath, dirnames, filenames in os.walk('.'):
for f in filenames:
if re.match(r, f):
cp(f, PARMS['DIST'])
break
wipetree(PARMS['BUILD'])
wipetree(PARMS['DIST'])
build_openssl(PARMS)
build_boost(PARMS)
+317
View File
@@ -0,0 +1,317 @@
import os, sys, re, stat, shutil, tarfile, zipfile, subprocess
import requests
import rfc6266
import hashlib
j = os.path.join
class Cd(object):
"""
Cd is a context manager that allows
you to temporary change the working directory.
with Cd(dir) as cd:
...
"""
def __init__(self, directory):
self._dir = directory
def orig(self):
return self._orig
def __enter__(self):
self._orig = os.getcwd()
os.chdir(self._dir)
return self
def __exit__(self, *args):
os.chdir(self._orig)
class ModEnv(object):
"""
Context manager for temporarily
modifying an env var. Normally used to make
changes to PATH.
"""
def __init__(self, key, value):
self.key = key;
self.value = value;
def __enter__(self):
self.orig_value = os.environ.get(self.key)
os.environ[self.key] = self.value
return self
def __exit__(self, *args):
if self.orig_value is not None:
os.environ[self.key] = self.orig_value
def rmtree(dir):
print "RMTREE", dir
shutil.rmtree(dir, ignore_errors=True)
def rm(fn, silent=False):
if os.path.exists(fn):
if not silent:
print "RM", fn
os.remove(fn)
def makedirs(dir):
print "MAKEDIRS", dir
os.makedirs(dir)
def cp(src, dest):
print "COPY %s %s" % (src, dest)
shutil.copy2(src, dest)
def wipetree(dir, wipe=True):
def onerror(func, path, exc_info):
"""
Error handler for ``shutil.rmtree``.
If the error is due to an access error (read only file)
it attempts to add write permission and then retries.
If the error is for another reason it ignores.
Usage : ``shutil.rmtree(path, onerror=onerror)``
"""
if not os.access(path, os.W_OK):
# Is the error an access error ?
try:
os.chmod(path, stat.S_IWUSR)
func(path)
except:
pass
if wipe:
print "WIPETREE", dir
shutil.rmtree(dir, ignore_errors=False, onerror=onerror)
if not os.path.isdir(dir):
makedirs(dir)
def extract_dict(d, k, default=None):
if k in d:
v = d[k]
del d[k]
else:
v = default
return v
def scan_prefixes(prefix, dir, filt=None):
fns = []
for dirpath, dirnames, filenames in os.walk(dir):
for f in filenames:
if f.startswith(prefix) and (filt is None or filt(f)):
fns.append(f)
break
return fns
def one_prefix(prefix, dir, filt=None):
f = scan_prefixes(prefix, dir, filt)
if len(f) == 0:
raise ValueError("prefix %r not found in dir %r" % (prefix, dir))
elif len(f) >= 2:
raise ValueError("prefix %r is ambiguous in dir %r: %r" % (prefix, dir, f))
return f[0]
def tarsplit(fn):
if fn.endswith(".tar.gz"):
t = 'gz'
b = fn[:-7]
elif fn.endswith(".tgz"):
t = 'gz'
b = fn[:-4]
elif fn.endswith(".tar.bz2"):
t = 'bz2'
b = fn[:-8]
elif fn.endswith(".tbz"):
t = 'bz2'
b = fn[:-4]
elif fn.endswith(".tar.xz"):
t = 'xz'
b = fn[:-7]
else:
raise ValueError("unrecognized tar file type: %r" % (fn,))
return b, t
def zipsplit(fn):
if fn.endswith(".zip"):
t = "zip"
b = fn[:-4]
else:
raise ValueError("unrecognized zip file type: %r" % (fn,))
return b, t
def archsplit(fn):
try:
b, t = tarsplit(fn)
except:
b, t = zipsplit(fn)
return b, t
def archsplit_filt(fn):
try:
tarsplit(fn)
except:
try:
zipsplit(fn)
except:
return False
else:
return True
else:
return True
def extract(fn, t):
print "%s EXTRACT %s [%s]" % ("ZIP" if t == "zip" else "TAR", fn, t)
if t == "zip":
with zipfile.ZipFile(fn) as z:
z.extractall()
else:
tar = tarfile.open(fn, mode='r:'+t)
try:
tar.extractall()
finally:
tar.close()
def expand(pkg_prefix, srcdir, lib_versions=None, noop=False):
if lib_versions and pkg_prefix in lib_versions:
f = one_prefix(lib_versions[pkg_prefix], srcdir, archsplit_filt)
else:
f = one_prefix(pkg_prefix, srcdir, archsplit_filt)
b, t = archsplit(f)
if not noop:
# remove previous directory
rmtree(os.path.realpath(b))
# expand it
extract(os.path.join(srcdir, f), t)
return b
def call(cmd, **kw):
print "***", cmd
ignore_errors = extract_dict(kw, 'ignore_errors', False)
extra_env = extract_dict(kw, 'extra_env', None)
if extra_env:
env = kw.get('env', os.environ).copy()
env.update(extra_env)
kw['env'] = env
succeed = extract_dict(kw, 'succeed', 0)
# show environment
se = kw.get('env')
if se:
show_env(se)
print "***"
ret = subprocess.call(cmd, **kw)
if not ignore_errors and ret != succeed:
raise ValueError("command failed with status %r (expected %r)" % (ret, succeed))
def vc_cmd(parms, cmd, arch=None, succeed=0):
# arch should be one of amd64 (alias x64), x86, x86_xp, or None
# (if None, use parms.py value)
if arch is None:
arch = parms['ARCH']
if arch == "x64":
arch = "amd64"
with ModEnv('PATH', "%s;%s\\VC;%s\\VC\\Auxiliary\\Build;" % (os.environ['PATH'], parms['MSVC_DIR'], parms['MSVC_DIR'])):
call('vcvarsall.bat %s && %s' % (arch, cmd), shell=True, succeed=succeed)
def vc_parms(parms, cmd_dict):
cmd_dict["dbg_rel_flags"] = "/Zi" if parms['DEBUG'] else "/O2"
flags = "/MT" if parms['STATIC'] else "/MD"
if parms['DEBUG']:
flags += "d"
cmd_dict["link_static_dynamic_flags"] = flags
def patchfile(pkg_prefix, patchdir):
return os.path.join(patchdir, one_prefix(pkg_prefix, patchdir))
def patch(pkg_prefix, patchdir):
patch_fn = patchfile(pkg_prefix, patchdir)
print "PATCH", patch_fn
call(['patch', '-p1', '-i', patch_fn])
def build_dir(parms):
return os.path.join(parms['BUILD'], parms['ARCH'])
# remove .obj files
def rm_obj(dir):
fns = []
for dirpath, dirnames, filenames in os.walk(dir):
for f in filenames:
path = os.path.join(dirpath, f)
if f.endswith(".obj"):
rm(path)
# zip a directory
# sample usage:
# zipf = zipfile.ZipFile('Python.zip', 'w')
# zipdir('tmp/', zipf)
# zipf.close()
def zipdir(path, ziph):
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file))
def download(url):
print "Downloading %s" % url
response = requests.get(url)
if "Content-Disposition" in response.headers.keys():
fname = rfc6266.parse_headers(response.headers['Content-Disposition']).filename_unsafe
else:
fname = url.split("/")[-1]
with open(fname, "wb") as f:
f.write(response.content)
return fname
def sha256_checksum(filename, block_size=65536):
sha256 = hashlib.sha256()
with open(filename, 'rb') as f:
for block in iter(lambda: f.read(block_size), b''):
sha256.update(block)
return sha256.hexdigest()
def read_params():
if not os.environ.get('O3'):
sys.exit("Missing required O3 env variable")
params={}
params['OVPN3'] = os.environ.get('O3').rstrip()
if not os.environ.get('DEP_DIR'):
params["BUILD"] = os.path.join(params['OVPN3'], "deps")
else:
params['BUILD'] = os.environ.get('DEP_DIR').rstrip()
params['ARCH'] = os.environ.get('ARCH', 'amd64').rstrip()
params['DEBUG'] = os.environ.get('DEBUG')
params['STATIC'] = os.environ.get('STATIC')
params['MSVC_DIR'] = os.environ.get('MSVC_DIR', 'c:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional').rstrip()
# Community: tap0901, Access Server: tapoas
params['TAP_WIN_COMPONENT_ID'] = os.environ.get('TAP_WIN_COMPONENT_ID', 'tap0901')
params['CPP_EXTRA'] = os.environ.get('CPP_EXTRA', '').rstrip()
if os.environ.get('USE_JSONSPP'):
params['USE_JSONCPP'] = True
if os.environ.get('USE_JSONSPP'):
params['CONNECT'] = True
params['GTEST_ROOT'] = os.environ.get('GTEST_ROOT')
params['USE_OPENSSL'] = os.environ.get('USE_OPENSSL')
# read versions
with open(os.path.join(params['OVPN3'], "core", "deps", "lib-versions")) as f:
for l in [line.strip() for line in f if line.strip()]:
name, val = l.split("=")
if name.startswith("export"):
name = name[6:].strip()
params[name] = val
return params
+27
View File
@@ -0,0 +1,27 @@
--- vcvarsall.bat.orig Mon Apr 4 02:58:07 2016
+++ vcvarsall.bat Mon Apr 4 15:55:42 2016
@@ -20,6 +20,7 @@
:check_platform
if /i %1 == x86 goto x86
+if /i %1 == x86_xp goto x86_xp
if /i %1 == amd64 goto amd64
if /i %1 == x64 goto amd64
if /i %1 == arm goto arm
@@ -32,6 +33,16 @@
:x86
if not exist "%~dp0bin\vcvars32.bat" goto missing
call "%~dp0bin\vcvars32.bat" %2 %3
+goto :SetVisualStudioVersion
+
+:x86_xp
+if not exist "%~dp0bin\vcvars32.bat" goto missing
+call "%~dp0bin\vcvars32.bat" %2 %3
+set INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%
+set PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%
+set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%
+set CL=/D_USING_V110_SDK71_;%CL%