summaryrefslogtreecommitdiffhomepage
path: root/windows
diff options
context:
space:
mode:
Diffstat (limited to 'windows')
-rw-r--r--windows/libshared/libshared.sln (renamed from windows/shared/shared.sln)2
-rw-r--r--windows/libshared/src/libshared/libshared.vcxproj (renamed from windows/shared/src/shared/shared.vcxproj)13
-rw-r--r--windows/libshared/src/libshared/libshared.vcxproj.filters45
-rw-r--r--windows/libshared/src/libshared/logging/logsink.h (renamed from windows/shared/src/shared/logsink.h)15
-rw-r--r--windows/libshared/src/libshared/logging/logsinkadapter.cpp49
-rw-r--r--windows/libshared/src/libshared/logging/logsinkadapter.h24
-rw-r--r--windows/libshared/src/libshared/logging/stdoutlogger.cpp33
-rw-r--r--windows/libshared/src/libshared/logging/stdoutlogger.h10
-rw-r--r--windows/libshared/src/libshared/logging/unwind.cpp21
-rw-r--r--windows/libshared/src/libshared/logging/unwind.h11
-rw-r--r--windows/libshared/src/libshared/network/interfaceutils.cpp (renamed from windows/shared/src/shared/network/interfaceutils.cpp)0
-rw-r--r--windows/libshared/src/libshared/network/interfaceutils.h (renamed from windows/shared/src/shared/network/interfaceutils.h)0
-rw-r--r--windows/libshared/src/libshared/stdafx.cpp (renamed from windows/shared/src/shared/stdafx.cpp)0
-rw-r--r--windows/libshared/src/libshared/stdafx.h (renamed from windows/shared/src/shared/stdafx.h)0
-rw-r--r--windows/libshared/src/libshared/targetver.h (renamed from windows/shared/src/shared/targetver.h)0
-rw-r--r--windows/shared/src/shared/logsinkadapter.h52
-rw-r--r--windows/shared/src/shared/shared.vcxproj.filters23
-rw-r--r--windows/windns/extras.sln15
-rw-r--r--windows/windns/src/extras/loader/loader.cpp27
-rw-r--r--windows/windns/src/extras/loader/loader.vcxproj24
-rw-r--r--windows/windns/src/windns/confineoperation.cpp91
-rw-r--r--windows/windns/src/windns/confineoperation.h23
-rw-r--r--windows/windns/src/windns/ilogsink.h31
-rw-r--r--windows/windns/src/windns/logsink.cpp34
-rw-r--r--windows/windns/src/windns/logsink.h21
-rw-r--r--windows/windns/src/windns/netsh.cpp42
-rw-r--r--windows/windns/src/windns/netsh.h28
-rw-r--r--windows/windns/src/windns/windns.cpp123
-rw-r--r--windows/windns/src/windns/windns.h17
-rw-r--r--windows/windns/src/windns/windns.vcxproj19
-rw-r--r--windows/windns/src/windns/windns.vcxproj.filters3
-rw-r--r--windows/windns/windns.sln5
m---------windows/windows-libraries0
-rw-r--r--windows/winfw/src/extras/cli/cli.vcxproj8
-rw-r--r--windows/winfw/src/extras/cli/commands/winfw/init.cpp2
-rw-r--r--windows/winfw/src/extras/cli/commands/winfw/init.h2
-rw-r--r--windows/winfw/src/extras/cli/commands/winfw/policy.cpp6
-rw-r--r--windows/winfw/src/extras/cli/util.cpp2
-rw-r--r--windows/winfw/src/extras/cli/util.h4
-rw-r--r--windows/winfw/src/winfw/winfw.cpp44
-rw-r--r--windows/winfw/src/winfw/winfw.h15
-rw-r--r--windows/winfw/src/winfw/winfw.vcxproj8
-rw-r--r--windows/winnet/extras.sln49
-rw-r--r--windows/winnet/src/extras/loader/loader.cpp32
-rw-r--r--windows/winnet/src/extras/loader/loader.vcxproj17
-rw-r--r--windows/winnet/src/extras/loader/loader.vcxproj.filters4
-rw-r--r--windows/winnet/src/extras/tests/adaptermonitor.cpp116
-rw-r--r--windows/winnet/src/extras/tests/testadapterutil.cpp12
-rw-r--r--windows/winnet/src/extras/tests/testadapterutil.h7
-rw-r--r--windows/winnet/src/extras/tests/tests.vcxproj90
-rw-r--r--windows/winnet/src/winnet/winnet.cpp35
-rw-r--r--windows/winnet/src/winnet/winnet.h2
-rw-r--r--windows/winnet/src/winnet/winnet.vcxproj24
-rw-r--r--windows/winnet/winnet.sln5
-rw-r--r--windows/winutil/extras.sln15
-rw-r--r--windows/winutil/src/extras/migration/migration.cpp19
-rw-r--r--windows/winutil/src/extras/migration/migration.vcxproj12
-rw-r--r--windows/winutil/src/winutil/winutil.cpp23
-rw-r--r--windows/winutil/src/winutil/winutil.h19
-rw-r--r--windows/winutil/src/winutil/winutil.vcxproj16
-rw-r--r--windows/winutil/winutil.sln14
61 files changed, 613 insertions, 790 deletions
diff --git a/windows/shared/shared.sln b/windows/libshared/libshared.sln
index d664af8399..3a2f41e952 100644
--- a/windows/shared/shared.sln
+++ b/windows/libshared/libshared.sln
@@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29324.140
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared", "src\shared\shared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshared", "src\libshared\libshared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
ProjectSection(ProjectDependencies) = postProject
{B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
EndProjectSection
diff --git a/windows/shared/src/shared/shared.vcxproj b/windows/libshared/src/libshared/libshared.vcxproj
index a5dc7cf4f2..88a2ac5140 100644
--- a/windows/shared/src/shared/shared.vcxproj
+++ b/windows/libshared/src/libshared/libshared.vcxproj
@@ -22,9 +22,9 @@
<VCProjectVersion>16.0</VCProjectVersion>
<ProjectGuid>{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
- <RootNamespace>shared</RootNamespace>
+ <RootNamespace>libshared</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
- <ProjectName>shared</ProjectName>
+ <ProjectName>libshared</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -176,14 +176,19 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClInclude Include="logsink.h" />
- <ClInclude Include="ilogsink.h" />
<ClInclude Include="network\interfaceutils.h" />
+ <ClInclude Include="logging\logsink.h" />
+ <ClInclude Include="logging\logsinkadapter.h" />
+ <ClInclude Include="logging\stdoutlogger.h" />
+ <ClInclude Include="logging\unwind.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="network\interfaceutils.cpp" />
+ <ClCompile Include="logging\logsinkadapter.cpp" />
+ <ClCompile Include="logging\stdoutlogger.cpp" />
+ <ClCompile Include="logging\unwind.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
diff --git a/windows/libshared/src/libshared/libshared.vcxproj.filters b/windows/libshared/src/libshared/libshared.vcxproj.filters
new file mode 100644
index 0000000000..ef4f0330d2
--- /dev/null
+++ b/windows/libshared/src/libshared/libshared.vcxproj.filters
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClInclude Include="stdafx.h" />
+ <ClInclude Include="targetver.h" />
+ <ClInclude Include="logging\logsink.h">
+ <Filter>logging</Filter>
+ </ClInclude>
+ <ClInclude Include="logging\logsinkadapter.h">
+ <Filter>logging</Filter>
+ </ClInclude>
+ <ClInclude Include="logging\stdoutlogger.h">
+ <Filter>logging</Filter>
+ </ClInclude>
+ <ClInclude Include="logging\unwind.h">
+ <Filter>logging</Filter>
+ </ClInclude>
+ <ClInclude Include="network\interfaceutils.h">
+ <Filter>network</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="stdafx.cpp" />
+ <ClCompile Include="logging\logsinkadapter.cpp">
+ <Filter>logging</Filter>
+ </ClCompile>
+ <ClCompile Include="logging\stdoutlogger.cpp">
+ <Filter>logging</Filter>
+ </ClCompile>
+ <ClCompile Include="logging\unwind.cpp">
+ <Filter>logging</Filter>
+ </ClCompile>
+ <ClCompile Include="network\interfaceutils.cpp">
+ <Filter>network</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <Filter Include="logging">
+ <UniqueIdentifier>{8d3be7e9-117c-44d3-a799-0bc6e2712776}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="network">
+ <UniqueIdentifier>{c36884fc-7afc-42a8-b852-c0aafcfcc1c2}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/windows/shared/src/shared/logsink.h b/windows/libshared/src/libshared/logging/logsink.h
index 16a84d4def..b942664af1 100644
--- a/windows/shared/src/shared/logsink.h
+++ b/windows/libshared/src/libshared/logging/logsink.h
@@ -5,12 +5,13 @@
// It should always be C-compatible.
//
-enum MULLVAD_LOG_SINK_SEVERITY
+enum MULLVAD_LOG_LEVEL
{
- MULLVAD_LOG_SINK_SEVERITY_ERROR = 0,
- MULLVAD_LOG_SINK_SEVERITY_WARNING,
- MULLVAD_LOG_SINK_SEVERITY_INFO,
- MULLVAD_LOG_SINK_SEVERITY_TRACE
+ MULLVAD_LOG_LEVEL_ERROR = 1,
+ MULLVAD_LOG_LEVEL_WARNING,
+ MULLVAD_LOG_LEVEL_INFO,
+ MULLVAD_LOG_LEVEL_DEBUG,
+ MULLVAD_LOG_LEVEL_TRACE
};
//
@@ -19,8 +20,8 @@ enum MULLVAD_LOG_SINK_SEVERITY
//
// The parameters are:
//
-// `MULLVAD_LOG_SINK_SEVERITY` - Severity of the message.
+// `MULLVAD_LOG_LEVEL` - Severity of the message.
// `const char *` - The message itself.
// `void *` - The sink context that was registered along with the sink.
//
-typedef void (__stdcall *MullvadLogSink)(MULLVAD_LOG_SINK_SEVERITY, const char *, void *);
+typedef void (__stdcall *MullvadLogSink)(MULLVAD_LOG_LEVEL, const char *, void *);
diff --git a/windows/libshared/src/libshared/logging/logsinkadapter.cpp b/windows/libshared/src/libshared/logging/logsinkadapter.cpp
new file mode 100644
index 0000000000..f506aba096
--- /dev/null
+++ b/windows/libshared/src/libshared/logging/logsinkadapter.cpp
@@ -0,0 +1,49 @@
+#include "stdafx.h"
+#include "logsinkadapter.h"
+
+namespace shared::logging
+{
+
+LogSinkAdapter::LogSinkAdapter(MullvadLogSink target, void *context)
+ : LogSink(MakeAdapter(target, context))
+{
+}
+
+//static
+common::logging::LogTarget LogSinkAdapter::MakeAdapter(MullvadLogSink target, void *context)
+{
+ return [target, context](common::logging::LogLevel level, const char* msg)
+ {
+ if (nullptr == target)
+ {
+ return;
+ }
+
+ //
+ // TODO: Replace manual mapping with ValueMapper once the updated
+ // ValueMapper reaches libcommon.
+ //
+
+ const MULLVAD_LOG_LEVEL translatedLevel = [level]()
+ {
+ switch (level)
+ {
+ case common::logging::LogLevel::Warning:
+ return MULLVAD_LOG_LEVEL_WARNING;
+ case common::logging::LogLevel::Info:
+ return MULLVAD_LOG_LEVEL_INFO;
+ case common::logging::LogLevel::Trace:
+ return MULLVAD_LOG_LEVEL_TRACE;
+ case common::logging::LogLevel::Debug:
+ return MULLVAD_LOG_LEVEL_DEBUG;
+ case common::logging::LogLevel::Error:
+ default:
+ return MULLVAD_LOG_LEVEL_ERROR;
+ }
+ }();
+
+ target(translatedLevel, msg, context);
+ };
+}
+
+}
diff --git a/windows/libshared/src/libshared/logging/logsinkadapter.h b/windows/libshared/src/libshared/logging/logsinkadapter.h
new file mode 100644
index 0000000000..d077e29b4f
--- /dev/null
+++ b/windows/libshared/src/libshared/logging/logsinkadapter.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "logsink.h"
+#include <libcommon/logging/logsink.h>
+
+namespace shared::logging
+{
+
+//
+// Adapt common::logging::LogSink C++ world to
+// MullvadLogSink C world.
+//
+class LogSinkAdapter : public common::logging::LogSink
+{
+public:
+
+ LogSinkAdapter(MullvadLogSink target, void *context);
+
+private:
+
+ static common::logging::LogTarget MakeAdapter(MullvadLogSink target, void *context);
+};
+
+}
diff --git a/windows/libshared/src/libshared/logging/stdoutlogger.cpp b/windows/libshared/src/libshared/logging/stdoutlogger.cpp
new file mode 100644
index 0000000000..6a72009950
--- /dev/null
+++ b/windows/libshared/src/libshared/logging/stdoutlogger.cpp
@@ -0,0 +1,33 @@
+#include "stdafx.h"
+#include "stdoutlogger.h"
+#include <iostream>
+
+namespace shared::logging
+{
+
+void __stdcall StdoutLogger(MULLVAD_LOG_LEVEL level, const char *msg, void*)
+{
+ switch (level)
+ {
+ case MULLVAD_LOG_LEVEL_WARNING:
+ std::cout << "Warning: ";
+ break;
+ case MULLVAD_LOG_LEVEL_INFO:
+ std::cout << "Info: ";
+ break;
+ case MULLVAD_LOG_LEVEL_DEBUG:
+ std::cout << "Debug: ";
+ break;
+ case MULLVAD_LOG_LEVEL_TRACE:
+ std::cout << "Trace: ";
+ break;
+ case MULLVAD_LOG_LEVEL_ERROR:
+ default:
+ std::cout << "Error: ";
+ break;
+ }
+
+ std::cout << msg << std::endl;
+}
+
+}
diff --git a/windows/libshared/src/libshared/logging/stdoutlogger.h b/windows/libshared/src/libshared/logging/stdoutlogger.h
new file mode 100644
index 0000000000..d6cee1b58b
--- /dev/null
+++ b/windows/libshared/src/libshared/logging/stdoutlogger.h
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "logsink.h"
+
+namespace shared::logging
+{
+
+void __stdcall StdoutLogger(MULLVAD_LOG_LEVEL level, const char *msg, void *context);
+
+}
diff --git a/windows/libshared/src/libshared/logging/unwind.cpp b/windows/libshared/src/libshared/logging/unwind.cpp
new file mode 100644
index 0000000000..206ea81ce2
--- /dev/null
+++ b/windows/libshared/src/libshared/logging/unwind.cpp
@@ -0,0 +1,21 @@
+#include "stdafx.h"
+#include "unwind.h"
+#include "logsinkadapter.h"
+#include <libcommon/error.h>
+
+namespace shared::logging
+{
+
+void UnwindAndLog(MullvadLogSink logSink, void *logSinkContext, const std::exception &err)
+{
+ if (nullptr == logSink)
+ {
+ return;
+ }
+
+ auto logger = std::make_shared<LogSinkAdapter>(logSink, logSinkContext);
+
+ common::error::UnwindException(err, logger);
+}
+
+}
diff --git a/windows/libshared/src/libshared/logging/unwind.h b/windows/libshared/src/libshared/logging/unwind.h
new file mode 100644
index 0000000000..ab3c6c519d
--- /dev/null
+++ b/windows/libshared/src/libshared/logging/unwind.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include "logsink.h"
+#include <stdexcept>
+
+namespace shared::logging
+{
+
+void UnwindAndLog(MullvadLogSink logSink, void *logSinkContext, const std::exception &err);
+
+}
diff --git a/windows/shared/src/shared/network/interfaceutils.cpp b/windows/libshared/src/libshared/network/interfaceutils.cpp
index 6d56ec82d2..6d56ec82d2 100644
--- a/windows/shared/src/shared/network/interfaceutils.cpp
+++ b/windows/libshared/src/libshared/network/interfaceutils.cpp
diff --git a/windows/shared/src/shared/network/interfaceutils.h b/windows/libshared/src/libshared/network/interfaceutils.h
index 85a243d591..85a243d591 100644
--- a/windows/shared/src/shared/network/interfaceutils.h
+++ b/windows/libshared/src/libshared/network/interfaceutils.h
diff --git a/windows/shared/src/shared/stdafx.cpp b/windows/libshared/src/libshared/stdafx.cpp
index c418cf5096..c418cf5096 100644
--- a/windows/shared/src/shared/stdafx.cpp
+++ b/windows/libshared/src/libshared/stdafx.cpp
diff --git a/windows/shared/src/shared/stdafx.h b/windows/libshared/src/libshared/stdafx.h
index 59e4616a97..59e4616a97 100644
--- a/windows/shared/src/shared/stdafx.h
+++ b/windows/libshared/src/libshared/stdafx.h
diff --git a/windows/shared/src/shared/targetver.h b/windows/libshared/src/libshared/targetver.h
index ae4a5c032c..ae4a5c032c 100644
--- a/windows/shared/src/shared/targetver.h
+++ b/windows/libshared/src/libshared/targetver.h
diff --git a/windows/shared/src/shared/logsinkadapter.h b/windows/shared/src/shared/logsinkadapter.h
deleted file mode 100644
index cbeca9e148..0000000000
--- a/windows/shared/src/shared/logsinkadapter.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "logsink.h"
-#include <libcommon/logging/logsink.h>
-
-namespace shared
-{
-
-//
-// Adapt common::logging::LogSink C++ world to
-// MullvadLogSink C world.
-//
-class LogSinkAdapter : public common::logging::LogSink
-{
-public:
-
- LogSinkAdapter(MullvadLogSink target, void *context)
- : LogSink(MakeAdapter(target, context))
- {
- }
-
-private:
-
- static common::logging::LogTarget MakeAdapter(MullvadLogSink target, void *context)
- {
- return [target, context](common::logging::Severity s, const char *msg)
- {
- if (nullptr == target)
- {
- return;
- }
-
- const MULLVAD_LOG_SINK_SEVERITY severity = [s]()
- {
- switch (s)
- {
- case common::logging::Severity::Warning:
- return MULLVAD_LOG_SINK_SEVERITY_WARNING;
- case common::logging::Severity::Info:
- return MULLVAD_LOG_SINK_SEVERITY_INFO;
- case common::logging::Severity::Trace:
- return MULLVAD_LOG_SINK_SEVERITY_TRACE;
- case common::logging::Severity::Error:
- default:
- return MULLVAD_LOG_SINK_SEVERITY_ERROR;
- }
- }();
-
- target(severity, msg, context);
- };
- }
-};
-
-}
diff --git a/windows/shared/src/shared/shared.vcxproj.filters b/windows/shared/src/shared/shared.vcxproj.filters
deleted file mode 100644
index 61b48a6937..0000000000
--- a/windows/shared/src/shared/shared.vcxproj.filters
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <ClInclude Include="ilogsink.h" />
- <ClInclude Include="logsink.h" />
- <ClInclude Include="stdafx.h" />
- <ClInclude Include="targetver.h" />
- <ClInclude Include="network\interfaceutils.h">
- <Filter>network</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="stdafx.cpp" />
- <ClCompile Include="network\interfaceutils.cpp">
- <Filter>network</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <Filter Include="network">
- <UniqueIdentifier>{c36884fc-7afc-42a8-b852-c0aafcfcc1c2}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/windows/windns/extras.sln b/windows/windns/extras.sln
index 51448f0506..b65334eea0 100644
--- a/windows/windns/extras.sln
+++ b/windows/windns/extras.sln
@@ -6,15 +6,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader", "src\extras\loader
ProjectSection(ProjectDependencies) = postProject
{A5344205-FC37-4572-9C63-8564ECC410AC} = {A5344205-FC37-4572-9C63-8564ECC410AC}
{B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D} = {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windns", "src\windns\windns.vcxproj", "{A5344205-FC37-4572-9C63-8564ECC410AC}"
ProjectSection(ProjectDependencies) = postProject
{B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D} = {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcommon", "..\windows-libraries\src\libcommon\libcommon.vcxproj", "{B52E2D10-A94A-4605-914A-2DCEF6A757EF}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshared", "..\libshared\src\libshared\libshared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -47,6 +54,14 @@ Global
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.Build.0 = Release|x64
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.ActiveCfg = Release|Win32
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.Build.0 = Release|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.ActiveCfg = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.Build.0 = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.ActiveCfg = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.Build.0 = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.ActiveCfg = Release|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.Build.0 = Release|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.ActiveCfg = Release|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/windows/windns/src/extras/loader/loader.cpp b/windows/windns/src/extras/loader/loader.cpp
index b20b4336b0..d4e118e3a0 100644
--- a/windows/windns/src/extras/loader/loader.cpp
+++ b/windows/windns/src/extras/loader/loader.cpp
@@ -1,37 +1,18 @@
#include "stdafx.h"
#include "windns/windns.h"
-#include "libcommon/trace/trace.h"
-#include "libcommon/trace/consoletracesink.h"
+#include <libshared/logging/stdoutlogger.h>
+#include <libcommon/trace/trace.h>
+#include <libcommon/trace/consoletracesink.h>
#include <iostream>
#include <conio.h>
#include <vector>
#include <windows.h>
-void WINDNS_API LogSink(WinDnsLogCategory category, const char *message, const char **details,
- uint32_t numDetails, void *context)
-{
- if (WINDNS_LOG_CATEGORY_ERROR == category)
- {
- std::cout << "WINDNS Error: ";
- }
- else
- {
- std::cout << "WINDNS Info: ";
- }
-
- std::cout << message << std::endl;
-
- for (uint32_t i = 0; i < numDetails; ++i)
- {
- std::cout << " " << details[i] << std::endl;
- }
-}
-
int main()
{
common::trace::Trace::RegisterSink(new common::trace::ConsoleTraceSink);
- std::wcout << L"WinDns_Initialize: " << std::boolalpha << WinDns_Initialize(LogSink, nullptr) << std::endl;
+ std::wcout << L"WinDns_Initialize: " << std::boolalpha << WinDns_Initialize(shared::logging::StdoutLogger, nullptr) << std::endl;
const wchar_t *servers[] =
{
diff --git a/windows/windns/src/extras/loader/loader.vcxproj b/windows/windns/src/extras/loader/loader.vcxproj
index 96f4178bba..43780ba0fd 100644
--- a/windows/windns/src/extras/loader/loader.vcxproj
+++ b/windows/windns/src/extras/loader/loader.vcxproj
@@ -93,12 +93,12 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
+ <WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
- <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../windows-libraries/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../../libshared/src/;$(ProjectDir)../../;$(ProjectDir)../../../../windows-libraries/src/</AdditionalIncludeDirectories>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
@@ -106,18 +106,18 @@
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>windns.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;windns.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
+ <WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
- <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../windows-libraries/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../../libshared/src/;$(ProjectDir)../../;$(ProjectDir)../../../../windows-libraries/src/</AdditionalIncludeDirectories>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
@@ -125,20 +125,20 @@
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>windns.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;windns.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
+ <WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
- <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../windows-libraries/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../../libshared/src/;$(ProjectDir)../../;$(ProjectDir)../../../../windows-libraries/src/</AdditionalIncludeDirectories>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
@@ -148,20 +148,20 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>windns.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;windns.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
+ <WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
- <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../windows-libraries/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../../libshared/src/;$(ProjectDir)../../;$(ProjectDir)../../../../windows-libraries/src/</AdditionalIncludeDirectories>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
@@ -171,7 +171,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>windns.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;windns.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/windows/windns/src/windns/confineoperation.cpp b/windows/windns/src/windns/confineoperation.cpp
index a43bbd0d2e..5097986c0f 100644
--- a/windows/windns/src/windns/confineoperation.cpp
+++ b/windows/windns/src/windns/confineoperation.cpp
@@ -5,7 +5,7 @@
bool ConfineOperation
(
const char *literalOperation,
- std::function<void(const char *, const char **, uint32_t)> errorCallback,
+ std::shared_ptr<common::logging::ILogSink> logSink,
std::function<void()> operation
)
{
@@ -14,29 +14,11 @@ bool ConfineOperation
operation();
return true;
}
- catch (NetShError &err)
- {
- auto raw = CreateRawStringArray(err.details());
-
- const char **details = reinterpret_cast<const char **>(&raw[0]);
- uint32_t numDetails = static_cast<uint32_t>(err.details().size());
-
- if (0 == numDetails)
- {
- details = nullptr;
- }
-
- const auto what = std::string(literalOperation).append(": ").append(err.what());
-
- errorCallback(what.c_str(), details, numDetails);
-
- return false;
- }
- catch (std::exception &err)
+ catch (const std::exception &err)
{
const auto what = std::string(literalOperation).append(": ").append(err.what());
- errorCallback(what.c_str(), nullptr, 0);
+ logSink->error(what.c_str());
return false;
}
@@ -44,73 +26,8 @@ bool ConfineOperation
{
const auto what = std::string(literalOperation).append(": Unspecified failure");
- errorCallback(what.c_str(), nullptr, 0);
+ logSink->error(what.c_str());
return false;
}
}
-
-bool ConfineOperation
-(
- const char *literalOperation,
- ILogSink *logSink,
- std::function<void()> operation
-)
-{
- auto ForwardError = [logSink](const char *error, const char **details, uint32_t numDetails)
- {
- if (nullptr != logSink)
- {
- logSink->error(error, details, numDetails);
- }
- };
-
- return ConfineOperation(literalOperation, ForwardError, operation);
-}
-
-std::vector<uint8_t> CreateRawStringArray(const std::vector<std::string> &arr)
-{
- //
- // Return a buffer containing a nullptr if there are no items in the array.
- // This enables clients of this function to address the pointer table.
- //
-
- if (arr.empty())
- {
- return std::vector<uint8_t>(sizeof(char *), 0);
- }
-
- //
- // Determine total size needed.
- //
-
- size_t bufferSize = 0;
-
- for (const auto &str : arr)
- {
- bufferSize += sizeof(char *);
- bufferSize += (str.size() + 1);
- }
-
- //
- // Copy strings and populate pointer table.
- //
-
- std::vector<uint8_t> buffer(bufferSize, 0);
-
- char **pointerTable = reinterpret_cast<char**>(&buffer[0]);
- char *data = reinterpret_cast<char*>(&buffer[0] + (sizeof(char*) * arr.size()));
-
- for (const auto &str : arr)
- {
- const auto fullStringSize = str.size() + 1;
-
- *pointerTable = data;
- memcpy(data, str.c_str(), fullStringSize);
-
- ++pointerTable;
- data += fullStringSize;
- }
-
- return buffer;
-}
diff --git a/windows/windns/src/windns/confineoperation.h b/windows/windns/src/windns/confineoperation.h
index 4c37058da2..56aa48a929 100644
--- a/windows/windns/src/windns/confineoperation.h
+++ b/windows/windns/src/windns/confineoperation.h
@@ -1,6 +1,6 @@
#pragma once
-#include "ilogsink.h"
+#include <libcommon/logging/ilogsink.h>
#include <functional>
#include <vector>
#include <string>
@@ -9,25 +9,6 @@
bool ConfineOperation
(
const char *literalOperation,
- std::function<void(const char *, const char **, uint32_t)> errorCallback,
+ std::shared_ptr<common::logging::ILogSink> logSink,
std::function<void()> operation
);
-
-bool ConfineOperation
-(
- const char *literalOperation,
- ILogSink *logSink,
- std::function<void()> operation
-);
-
-//
-// The returned buffer looks like this:
-//
-// string pointer 1
-// string pointer 2
-// string pointer n
-// string 1
-// string 2
-// string n
-//
-std::vector<uint8_t> CreateRawStringArray(const std::vector<std::string> &arr);
diff --git a/windows/windns/src/windns/ilogsink.h b/windows/windns/src/windns/ilogsink.h
deleted file mode 100644
index 0d39b172b2..0000000000
--- a/windows/windns/src/windns/ilogsink.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#include "windns.h"
-#include <cstdint>
-
-struct LogSinkInfo
-{
- WinDnsLogSink sink;
- void* context;
-};
-
-struct ILogSink
-{
- virtual ~ILogSink() = 0
- {
- }
-
- virtual void error(const char *msg, const char **details, uint32_t numDetails) = 0;
-
- virtual void error(const char *msg)
- {
- error(msg, nullptr, 0);
- }
-
- virtual void info(const char *msg, const char **details, uint32_t numDetails) = 0;
-
- virtual void info(const char *msg)
- {
- info(msg, nullptr, 0);
- }
-};
diff --git a/windows/windns/src/windns/logsink.cpp b/windows/windns/src/windns/logsink.cpp
deleted file mode 100644
index b5f127d25c..0000000000
--- a/windows/windns/src/windns/logsink.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "stdafx.h"
-#include "logsink.h"
-
-LogSink::LogSink(const LogSinkInfo &target)
- : m_target(target)
-{
-}
-
-void LogSink::setTarget(const LogSinkInfo &target)
-{
- std::scoped_lock<std::mutex> lock(m_targetMutex);
-
- m_target = target;
-}
-
-void LogSink::error(const char *msg, const char **details, uint32_t numDetails)
-{
- std::scoped_lock<std::mutex> lock(m_targetMutex);
-
- if (nullptr != m_target.sink)
- {
- m_target.sink(WINDNS_LOG_CATEGORY_ERROR, msg, details, numDetails, m_target.context);
- }
-}
-
-void LogSink::info(const char *msg, const char **details, uint32_t numDetails)
-{
- std::scoped_lock<std::mutex> lock(m_targetMutex);
-
- if (nullptr != m_target.sink)
- {
- m_target.sink(WINDNS_LOG_CATEGORY_INFO, msg, details, numDetails, m_target.context);
- }
-}
diff --git a/windows/windns/src/windns/logsink.h b/windows/windns/src/windns/logsink.h
deleted file mode 100644
index 236c8e3242..0000000000
--- a/windows/windns/src/windns/logsink.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma once
-
-#include "ilogsink.h"
-#include <mutex>
-
-class LogSink : public ILogSink
-{
-public:
-
- LogSink(const LogSinkInfo &target);
-
- void setTarget(const LogSinkInfo &target);
-
- void error(const char *msg, const char **details, uint32_t numDetails) override;
- void info(const char *msg, const char **details, uint32_t numDetails) override;
-
-private:
-
- std::mutex m_targetMutex;
- LogSinkInfo m_target;
-};
diff --git a/windows/windns/src/windns/netsh.cpp b/windows/windns/src/windns/netsh.cpp
index 8e1df6a44e..d8354e4e0b 100644
--- a/windows/windns/src/windns/netsh.cpp
+++ b/windows/windns/src/windns/netsh.cpp
@@ -11,34 +11,9 @@
namespace
{
-std::vector<std::string> BlockToRows(const std::string &textBlock)
-{
- //
- // TODO: Formalize and move to libcommon.
- // There is a recurring need to split a text block into lines, ignoring blank lines.
- //
- // Also, changing the encoding back and forth is terribly wasteful.
- // Should look into replacing all of this with Boost some day.
- //
-
- const auto wideTextBlock = common::string::ToWide(textBlock);
- const auto wideRows = common::string::Tokenize(wideTextBlock, L"\r\n");
-
- std::vector<std::string> result;
-
- result.reserve(wideRows.size());
-
- std::transform(wideRows.begin(), wideRows.end(), std::back_inserter(result), [](const std::wstring &str)
- {
- return common::string::ToAnsi(str);
- });
-
- return result;
-}
-
__declspec(noreturn) void ThrowWithDetails(std::string &&error, common::ApplicationRunner &netsh)
{
- std::vector<std::string> details { "Failed to capture output from 'netsh'" };
+ std::string details("Failed to capture output from 'netsh'");
std::string output;
@@ -47,20 +22,17 @@ __declspec(noreturn) void ThrowWithDetails(std::string &&error, common::Applicat
if (netsh.read(output, MAX_CHARS, TIMEOUT_MILLISECONDS))
{
- auto outputRows = BlockToRows(output);
-
- if (false == outputRows.empty())
- {
- details = std::move(outputRows);
- }
+ details = std::move(output);
}
- throw NetShError(std::move(error), std::move(details));
+ const auto msg = std::string(error).append(": ").append(details);
+
+ throw std::runtime_error(msg.c_str());
}
} // anonymous namespace
-NetSh::NetSh(std::shared_ptr<ILogSink> logSink)
+NetSh::NetSh(std::shared_ptr<common::logging::ILogSink> logSink)
: m_logSink(logSink)
{
const auto system32 = common::fs::GetKnownFolderPath(FOLDERID_System, 0, nullptr);
@@ -243,6 +215,6 @@ void NetSh::validateShellOut(common::ApplicationRunner &netsh, uint32_t timeout)
<< elapsed << " ms of "
<< actualTimeout << " ms max permitted execution time";
- m_logSink->info(ss.str().c_str(), nullptr, 0);
+ m_logSink->info(ss.str().c_str());
}
}
diff --git a/windows/windns/src/windns/netsh.h b/windows/windns/src/windns/netsh.h
index d80c55529c..3b0b2b0251 100644
--- a/windows/windns/src/windns/netsh.h
+++ b/windows/windns/src/windns/netsh.h
@@ -1,6 +1,6 @@
#pragma once
-#include "ilogsink.h"
+#include <libcommon/logging/ilogsink.h>
#include <libcommon/applicationrunner.h>
#include <string>
#include <vector>
@@ -12,7 +12,7 @@ class NetSh
{
public:
- NetSh(std::shared_ptr<ILogSink> logSink);
+ NetSh(std::shared_ptr<common::logging::ILogSink> logSink);
void setIpv4StaticDns(uint32_t interfaceIndex,
const std::vector<std::wstring> &nameServers, uint32_t timeout = 0);
@@ -26,30 +26,8 @@ public:
private:
- std::shared_ptr<ILogSink> m_logSink;
+ std::shared_ptr<common::logging::ILogSink> m_logSink;
std::wstring m_netShPath;
void validateShellOut(common::ApplicationRunner &netsh, uint32_t timeout);
};
-
-class NetShError : public std::exception
-{
-public:
-
- NetShError(std::string &&error, std::vector<std::string> &&details)
- : std::exception(error.c_str())
- , m_error(std::move(error))
- , m_details(std::move(details))
- {
- }
-
- const std::vector<std::string> &details()
- {
- return m_details;
- }
-
-private:
-
- const std::string m_error;
- const std::vector<std::string> m_details;
-};
diff --git a/windows/windns/src/windns/windns.cpp b/windows/windns/src/windns/windns.cpp
index 1ea10f0f08..c0d36e8ad2 100644
--- a/windows/windns/src/windns/windns.cpp
+++ b/windows/windns/src/windns/windns.cpp
@@ -1,11 +1,12 @@
#include "stdafx.h"
#include <libcommon/guid.h>
#include <libcommon/string.h>
-#include <shared/network/interfaceutils.h>
+#include <libshared/network/interfaceutils.h>
+#include <libcommon/logging/ilogsink.h>
+#include <libshared/logging/logsinkadapter.h>
#include "windns.h"
#include "confineoperation.h"
#include "netsh.h"
-#include "logsink.h"
#include <memory>
#include <vector>
#include <string>
@@ -28,7 +29,7 @@ bool operator==(const IN6_ADDR &lhs, const IN6_ADDR &rhs)
namespace
{
-std::shared_ptr<LogSink> g_LogSink;
+std::shared_ptr<common::logging::ILogSink> g_LogSink;
std::shared_ptr<NetSh> g_NetSh;
std::vector<std::wstring> MakeStringArray(const wchar_t **strings, uint32_t numStrings)
@@ -43,14 +44,6 @@ std::vector<std::wstring> MakeStringArray(const wchar_t **strings, uint32_t numS
return v;
}
-void ForwardError(const char *message, const char **details, uint32_t numDetails)
-{
- if (nullptr != g_LogSink)
- {
- g_LogSink->error(message, details, numDetails);
- }
-}
-
uint32_t ConvertInterfaceAliasToIndex(const std::wstring &interfaceAlias)
{
NET_LUID luid;
@@ -184,8 +177,8 @@ WINDNS_LINKAGE
bool
WINDNS_API
WinDns_Initialize(
- WinDnsLogSink logSink,
- void *logContext
+ MullvadLogSink logSink,
+ void *logSinkContext
)
{
if (g_LogSink)
@@ -193,9 +186,9 @@ WinDns_Initialize(
return false;
}
- return ConfineOperation("Initialize", ForwardError, [&]()
+ try
{
- g_LogSink = std::make_shared<LogSink>(LogSinkInfo{ logSink, logContext });
+ g_LogSink = std::make_shared<shared::logging::LogSinkAdapter>(logSink, logSinkContext);
try
{
@@ -206,7 +199,29 @@ WinDns_Initialize(
g_LogSink.reset();
throw;
}
- });
+
+ return true;
+ }
+ catch (const std::exception &err)
+ {
+ if (nullptr != logSink)
+ {
+ const auto msg = std::string("Failed to initialize WinDns: ").append(err.what());
+ logSink(MULLVAD_LOG_LEVEL_ERROR, msg.c_str(), logSinkContext);
+ }
+
+ return false;
+ }
+ catch (...)
+ {
+ if (nullptr != logSink)
+ {
+ const std::string msg("Failed to initialize WinDns: Unspecified error");
+ logSink(MULLVAD_LOG_LEVEL_ERROR, msg.c_str(), logSinkContext);
+ }
+
+ return false;
+ }
}
WINDNS_LINKAGE
@@ -232,53 +247,61 @@ WinDns_Set(
uint32_t numIpv6Servers
)
{
- return ConfineOperation("Apply DNS settings", ForwardError, [&]()
+ if (nullptr == g_LogSink)
{
- //
- // Check the settings on the adapter.
- // If it already has the exact same settings we need, we're done.
- //
-
- try
- {
- const auto activeSettings = GetAdapterDnsAddresses(interfaceAlias);
- const auto wantedSetting = ConvertAddresses(ipv4Servers, numIpv4Servers, ipv6Servers, numIpv6Servers);
-
- if (Equal(activeSettings, wantedSetting))
- {
- std::stringstream ss;
+ return false;
+ }
- ss << "DNS settings on adapter with alias \"" << common::string::ToAnsi(interfaceAlias)
- << "\" are up-to-date";
+ //
+ // Check the settings on the adapter.
+ // If it already has the exact same settings we need, we're done.
+ //
- g_LogSink->info(ss.str().c_str(), nullptr, 0);
+ try
+ {
+ const auto activeSettings = GetAdapterDnsAddresses(interfaceAlias);
+ const auto wantedSetting = ConvertAddresses(ipv4Servers, numIpv4Servers, ipv6Servers, numIpv6Servers);
- return;
- }
- }
- catch (const std::exception &ex)
+ if (Equal(activeSettings, wantedSetting))
{
std::stringstream ss;
- ss << "Failed to evaluate DNS settings on adapter with alias \""
- << common::string::ToAnsi(interfaceAlias) << "\": " << ex.what();
+ ss << "DNS settings on adapter with alias \"" << common::string::ToAnsi(interfaceAlias)
+ << "\" are up-to-date";
+
+ g_LogSink->info(ss.str().c_str());
- g_LogSink->info(ss.str().c_str(), nullptr, 0);
+ return true;
}
- catch (...)
- {
- std::stringstream ss;
+ }
+ catch (const std::exception & ex)
+ {
+ std::stringstream ss;
- ss << "Failed to evaluate DNS settings on adapter with alias \""
- << common::string::ToAnsi(interfaceAlias) << "\": Unspecified failure";
+ ss << "Failed to evaluate DNS settings on adapter with alias \""
+ << common::string::ToAnsi(interfaceAlias) << "\": " << ex.what();
- g_LogSink->info(ss.str().c_str(), nullptr, 0);
- }
+ g_LogSink->info(ss.str().c_str());
+ }
+ catch (...)
+ {
+ std::stringstream ss;
- //
- // Onwards
- //
+ ss << "Failed to evaluate DNS settings on adapter with alias \""
+ << common::string::ToAnsi(interfaceAlias) << "\": Unspecified failure";
+ g_LogSink->info(ss.str().c_str());
+ }
+
+ //
+ // Apply specified settings.
+ //
+
+ const auto operation = std::string("Apply DNS settings on adapter with alias \"")
+ .append(common::string::ToAnsi(interfaceAlias)).append("\"");
+
+ return ConfineOperation(operation.c_str(), g_LogSink, [&]()
+ {
const auto interfaceIndex = ConvertInterfaceAliasToIndex(interfaceAlias);
if (nullptr != ipv4Servers && 0 != numIpv4Servers)
diff --git a/windows/windns/src/windns/windns.h b/windows/windns/src/windns/windns.h
index 2ecd046f5b..dee2993681 100644
--- a/windows/windns/src/windns/windns.h
+++ b/windows/windns/src/windns/windns.h
@@ -1,5 +1,7 @@
#pragma once
-#include <cstdint>
+
+#include <libshared/logging/logsink.h>
+#include <stdint.h>
//
// WINDNS public API
@@ -17,15 +19,6 @@
// Functions
///////////////////////////////////////////////////////////////////////////////
-enum WinDnsLogCategory
-{
- WINDNS_LOG_CATEGORY_ERROR = 0x01,
- WINDNS_LOG_CATEGORY_INFO = 0x02
-};
-
-typedef void (WINDNS_API *WinDnsLogSink)(WinDnsLogCategory category, const char *message,
- const char **details, uint32_t numDetails, void *context);
-
//
// WinDns_Initialize:
//
@@ -37,8 +30,8 @@ WINDNS_LINKAGE
bool
WINDNS_API
WinDns_Initialize(
- WinDnsLogSink logSink,
- void *logContext
+ MullvadLogSink logSink,
+ void *logSinkContext
);
//
diff --git a/windows/windns/src/windns/windns.vcxproj b/windows/windns/src/windns/windns.vcxproj
index 31a74eab87..05293ca9a4 100644
--- a/windows/windns/src/windns/windns.vcxproj
+++ b/windows/windns/src/windns/windns.vcxproj
@@ -98,7 +98,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;WINDNS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
- <AdditionalIncludeDirectories>$(ProjectDir)../;$(ProjectDir)../../../windows-libraries/src/;$(ProjectDir)../../../shared/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../libshared/src/;$(ProjectDir)../../../windows-libraries/src/</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
@@ -106,7 +106,7 @@
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib;wbemuuid.lib;comsuppw.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib;wbemuuid.lib;comsuppw.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -117,7 +117,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;WINDNS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
- <AdditionalIncludeDirectories>$(ProjectDir)../;$(ProjectDir)../../../windows-libraries/src/;$(ProjectDir)../../../shared/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../libshared/src/;$(ProjectDir)../../../windows-libraries/src/</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
@@ -125,7 +125,7 @@
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib;wbemuuid.lib;comsuppw.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib;wbemuuid.lib;comsuppw.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -138,7 +138,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;WINDNS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
- <AdditionalIncludeDirectories>$(ProjectDir)../;$(ProjectDir)../../../windows-libraries/src/;$(ProjectDir)../../../shared/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../libshared/src/;$(ProjectDir)../../../windows-libraries/src/</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
@@ -148,7 +148,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib;wbemuuid.lib;comsuppw.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib;wbemuuid.lib;comsuppw.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -161,7 +161,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;WINDNS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
- <AdditionalIncludeDirectories>$(ProjectDir)../;$(ProjectDir)../../../windows-libraries/src/;$(ProjectDir)../../../shared/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../libshared/src/;$(ProjectDir)../../../windows-libraries/src/</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
@@ -171,13 +171,11 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib;wbemuuid.lib;comsuppw.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib;wbemuuid.lib;comsuppw.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="confineoperation.h" />
- <ClInclude Include="logsink.h" />
- <ClInclude Include="ilogsink.h" />
<ClInclude Include="netsh.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
@@ -186,7 +184,6 @@
<ItemGroup>
<ClCompile Include="confineoperation.cpp" />
<ClCompile Include="dllmain.cpp" />
- <ClCompile Include="logsink.cpp" />
<ClCompile Include="netsh.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
diff --git a/windows/windns/src/windns/windns.vcxproj.filters b/windows/windns/src/windns/windns.vcxproj.filters
index e71bf3e814..69449dc6c4 100644
--- a/windows/windns/src/windns/windns.vcxproj.filters
+++ b/windows/windns/src/windns/windns.vcxproj.filters
@@ -6,8 +6,6 @@
<ClInclude Include="windns.h" />
<ClInclude Include="netsh.h" />
<ClInclude Include="confineoperation.h" />
- <ClInclude Include="ilogsink.h" />
- <ClInclude Include="logsink.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp" />
@@ -15,7 +13,6 @@
<ClCompile Include="windns.cpp" />
<ClCompile Include="netsh.cpp" />
<ClCompile Include="confineoperation.cpp" />
- <ClCompile Include="logsink.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="windns.rc" />
diff --git a/windows/windns/windns.sln b/windows/windns/windns.sln
index 13f072ff31..efe218a454 100644
--- a/windows/windns/windns.sln
+++ b/windows/windns/windns.sln
@@ -10,7 +10,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windns", "src\windns\windns
{EE69EA4A-CF71-4B88-866B-957F60C4CE0D} = {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared", "..\shared\src\shared\shared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshared", "..\libshared\src\libshared\libshared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/windows/windows-libraries b/windows/windows-libraries
-Subproject 19889be7a7e3555a03b9678dc486b429d5fad10
+Subproject 3c5212ce3085addf9311392aeaeed9f13d79b27
diff --git a/windows/winfw/src/extras/cli/cli.vcxproj b/windows/winfw/src/extras/cli/cli.vcxproj
index b4cf2f8cf1..e8c9f21745 100644
--- a/windows/winfw/src/extras/cli/cli.vcxproj
+++ b/windows/winfw/src/extras/cli/cli.vcxproj
@@ -97,7 +97,7 @@
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\..\libshared\src\</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
@@ -115,7 +115,7 @@
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\..\libshared\src\</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
@@ -135,7 +135,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\..\libshared\src\</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
@@ -157,7 +157,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\;$(ProjectDir)..\..\..\..\libwfp\src\;$(ProjectDir)..\..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\..\libshared\src\</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
diff --git a/windows/winfw/src/extras/cli/commands/winfw/init.cpp b/windows/winfw/src/extras/cli/commands/winfw/init.cpp
index 6236027725..b97bb494a8 100644
--- a/windows/winfw/src/extras/cli/commands/winfw/init.cpp
+++ b/windows/winfw/src/extras/cli/commands/winfw/init.cpp
@@ -44,7 +44,7 @@ void Init::handleRequest(const std::vector<std::wstring> &arguments)
}
//static
-void WINFW_API Init::ErrorForwarder(const char *errorMessage, void *context)
+void WINFW_API Init::ErrorForwarder(MULLVAD_LOG_LEVEL, const char *errorMessage, void *context)
{
auto thiz = reinterpret_cast<Init *>(context);
diff --git a/windows/winfw/src/extras/cli/commands/winfw/init.h b/windows/winfw/src/extras/cli/commands/winfw/init.h
index f3589535bf..e855769c95 100644
--- a/windows/winfw/src/extras/cli/commands/winfw/init.h
+++ b/windows/winfw/src/extras/cli/commands/winfw/init.h
@@ -22,7 +22,7 @@ private:
MessageSink m_messageSink;
- static void WINFW_API ErrorForwarder(const char *errorMessage, void *context);
+ static void WINFW_API ErrorForwarder(MULLVAD_LOG_LEVEL level, const char *errorMessage, void *context);
};
}
diff --git a/windows/winfw/src/extras/cli/commands/winfw/policy.cpp b/windows/winfw/src/extras/cli/commands/winfw/policy.cpp
index decead0596..02c358449c 100644
--- a/windows/winfw/src/extras/cli/commands/winfw/policy.cpp
+++ b/windows/winfw/src/extras/cli/commands/winfw/policy.cpp
@@ -111,7 +111,8 @@ void Policy::processConnecting(const KeyValuePairs &arguments)
auto success = WinFw_ApplyPolicyConnecting
(
settings,
- relay
+ relay,
+ nullptr
);
m_messageSink((success
@@ -141,7 +142,8 @@ void Policy::processConnected(const KeyValuePairs &arguments)
settings,
relay,
GetArgumentValue(arguments, L"tunnel").c_str(),
- GetArgumentValue(arguments, L"dns").c_str()
+ GetArgumentValue(arguments, L"dns").c_str(),
+ nullptr
);
m_messageSink((success
diff --git a/windows/winfw/src/extras/cli/util.cpp b/windows/winfw/src/extras/cli/util.cpp
index 6181e68639..2cd668d060 100644
--- a/windows/winfw/src/extras/cli/util.cpp
+++ b/windows/winfw/src/extras/cli/util.cpp
@@ -1,7 +1,7 @@
#include "stdafx.h"
#include "util.h"
#include "inlineformatter.h"
-#include "libcommon/string.h"
+#include <libcommon/string.h>
#include <string>
void PrettyPrintProperties(MessageSink messageSink, PrettyPrintOptions options, const PropertyList &properties)
diff --git a/windows/winfw/src/extras/cli/util.h b/windows/winfw/src/extras/cli/util.h
index 3919e03422..e7deeebb3e 100644
--- a/windows/winfw/src/extras/cli/util.h
+++ b/windows/winfw/src/extras/cli/util.h
@@ -4,8 +4,8 @@
#include <memory>
#include <string>
#include "propertylist.h"
-#include "libwfp/filterengine.h"
-#include "libcommon/string.h"
+#include <libwfp/filterengine.h>
+#include <libcommon/string.h>
typedef std::function<void(const std::wstring &)> MessageSink;
diff --git a/windows/winfw/src/winfw/winfw.cpp b/windows/winfw/src/winfw/winfw.cpp
index 3065408f3d..7260de3e8b 100644
--- a/windows/winfw/src/winfw/winfw.cpp
+++ b/windows/winfw/src/winfw/winfw.cpp
@@ -11,8 +11,8 @@ namespace
uint32_t g_timeout = 0;
-WinFwErrorSink g_errorSink = nullptr;
-void * g_errorContext = nullptr;
+MullvadLogSink g_logSink = nullptr;
+void *g_logSinkContext = nullptr;
FwContext *g_fwContext = nullptr;
@@ -51,8 +51,8 @@ bool
WINFW_API
WinFw_Initialize(
uint32_t timeout,
- WinFwErrorSink errorSink,
- void *errorContext
+ MullvadLogSink logSink,
+ void *logSinkContext
)
{
if (nullptr != g_fwContext)
@@ -67,8 +67,8 @@ WinFw_Initialize(
// Convert seconds to milliseconds.
g_timeout = timeout * 1000;
- g_errorSink = errorSink;
- g_errorContext = errorContext;
+ g_logSink = logSink;
+ g_logSinkContext = logSinkContext;
try
{
@@ -76,9 +76,9 @@ WinFw_Initialize(
}
catch (std::exception &err)
{
- if (nullptr != g_errorSink)
+ if (nullptr != g_logSink)
{
- g_errorSink(err.what(), g_errorContext);
+ g_logSink(MULLVAD_LOG_LEVEL_ERROR, err.what(), g_logSinkContext);
}
return false;
@@ -98,8 +98,8 @@ WINFW_API
WinFw_InitializeBlocked(
uint32_t timeout,
const WinFwSettings &settings,
- WinFwErrorSink errorSink,
- void *errorContext
+ MullvadLogSink logSink,
+ void *logSinkContext
)
{
if (nullptr != g_fwContext)
@@ -114,8 +114,8 @@ WinFw_InitializeBlocked(
// Convert seconds to milliseconds.
g_timeout = timeout * 1000;
- g_errorSink = errorSink;
- g_errorContext = errorContext;
+ g_logSink = logSink;
+ g_logSinkContext = logSinkContext;
try
{
@@ -123,9 +123,9 @@ WinFw_InitializeBlocked(
}
catch (std::exception &err)
{
- if (nullptr != g_errorSink)
+ if (nullptr != g_logSink)
{
- g_errorSink(err.what(), g_errorContext);
+ g_logSink(MULLVAD_LOG_LEVEL_ERROR, err.what(), g_logSinkContext);
}
return false;
@@ -174,9 +174,9 @@ WinFw_ApplyPolicyConnecting(
}
catch (std::exception &err)
{
- if (nullptr != g_errorSink)
+ if (nullptr != g_logSink)
{
- g_errorSink(err.what(), g_errorContext);
+ g_logSink(MULLVAD_LOG_LEVEL_ERROR, err.what(), g_logSinkContext);
}
return false;
@@ -209,9 +209,9 @@ WinFw_ApplyPolicyConnected(
}
catch (std::exception &err)
{
- if (nullptr != g_errorSink)
+ if (nullptr != g_logSink)
{
- g_errorSink(err.what(), g_errorContext);
+ g_logSink(MULLVAD_LOG_LEVEL_ERROR, err.what(), g_logSinkContext);
}
return false;
@@ -240,9 +240,9 @@ WinFw_ApplyPolicyBlocked(
}
catch (std::exception &err)
{
- if (nullptr != g_errorSink)
+ if (nullptr != g_logSink)
{
- g_errorSink(err.what(), g_errorContext);
+ g_logSink(MULLVAD_LOG_LEVEL_ERROR, err.what(), g_logSinkContext);
}
return false;
@@ -269,9 +269,9 @@ WinFw_Reset()
}
catch (std::exception &err)
{
- if (nullptr != g_errorSink)
+ if (nullptr != g_logSink)
{
- g_errorSink(err.what(), g_errorContext);
+ g_logSink(MULLVAD_LOG_LEVEL_ERROR, err.what(), g_logSinkContext);
}
return false;
diff --git a/windows/winfw/src/winfw/winfw.h b/windows/winfw/src/winfw/winfw.h
index 6d43b0db4c..c95890dd4a 100644
--- a/windows/winfw/src/winfw/winfw.h
+++ b/windows/winfw/src/winfw/winfw.h
@@ -1,5 +1,7 @@
#pragma once
-#include <cstdint>
+
+#include <libshared/logging/logsink.h>
+#include <stdint.h>
//
// WINFW public API
@@ -58,9 +60,6 @@ WinFwRelay;
// transaction lock to become available. Specify 0 to use a default timeout
// determined by Windows.
//
-// Optionally provide a callback if you are interested in logging exceptions.
-//
-typedef void (WINFW_API *WinFwErrorSink)(const char *errorMessage, void *context);
extern "C"
WINFW_LINKAGE
@@ -68,8 +67,8 @@ bool
WINFW_API
WinFw_Initialize(
uint32_t timeout,
- WinFwErrorSink errorSink,
- void *errorContext
+ MullvadLogSink logSink,
+ void *logSinkContext
);
//
@@ -89,8 +88,8 @@ WINFW_API
WinFw_InitializeBlocked(
uint32_t timeout,
const WinFwSettings &settings,
- WinFwErrorSink errorSink,
- void *errorContext
+ MullvadLogSink logSink,
+ void *logSinkContext
);
//
diff --git a/windows/winfw/src/winfw/winfw.vcxproj b/windows/winfw/src/winfw/winfw.vcxproj
index cbabe2f4f7..15da42ec0f 100644
--- a/windows/winfw/src/winfw/winfw.vcxproj
+++ b/windows/winfw/src/winfw/winfw.vcxproj
@@ -160,7 +160,7 @@
<PreprocessorDefinitions>WIN32;_DEBUG;WINFW_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -179,7 +179,7 @@
<PreprocessorDefinitions>_DEBUG;WINFW_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -200,7 +200,7 @@
<PreprocessorDefinitions>WIN32;NDEBUG;WINFW_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -223,7 +223,7 @@
<PreprocessorDefinitions>NDEBUG;WINFW_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir)..\..\..\libwfp\src\</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
diff --git a/windows/winnet/extras.sln b/windows/winnet/extras.sln
index e50989583b..c59c831a99 100644
--- a/windows/winnet/extras.sln
+++ b/windows/winnet/extras.sln
@@ -4,13 +4,14 @@ VisualStudioVersion = 16.0.29324.140
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader", "src\extras\loader\loader.vcxproj", "{227C50F4-D9F6-4D9A-84A0-33CE84432D0D}"
ProjectSection(ProjectDependencies) = postProject
- {B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D} = {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}
{89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4} = {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winnet", "src\winnet\winnet.vcxproj", "{89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}"
ProjectSection(ProjectDependencies) = postProject
{B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D} = {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcommon", "..\windows-libraries\src\libcommon\libcommon.vcxproj", "{B52E2D10-A94A-4605-914A-2DCEF6A757EF}"
@@ -18,13 +19,21 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tests", "src\extras\tests\tests.vcxproj", "{01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}"
ProjectSection(ProjectDependencies) = postProject
{B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D} = {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}
{89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4} = {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshared", "..\libshared\src\libshared\libshared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
+ Debug-AutoTests|x64 = Debug-AutoTests|x64
+ Debug-AutoTests|x86 = Debug-AutoTests|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
@@ -33,14 +42,20 @@ Global
{227C50F4-D9F6-4D9A-84A0-33CE84432D0D}.Debug|x64.Build.0 = Debug|x64
{227C50F4-D9F6-4D9A-84A0-33CE84432D0D}.Debug|x86.ActiveCfg = Debug|Win32
{227C50F4-D9F6-4D9A-84A0-33CE84432D0D}.Debug|x86.Build.0 = Debug|Win32
+ {227C50F4-D9F6-4D9A-84A0-33CE84432D0D}.Debug-AutoTests|x64.ActiveCfg = Debug|x64
+ {227C50F4-D9F6-4D9A-84A0-33CE84432D0D}.Debug-AutoTests|x86.ActiveCfg = Debug|Win32
{227C50F4-D9F6-4D9A-84A0-33CE84432D0D}.Release|x64.ActiveCfg = Release|x64
{227C50F4-D9F6-4D9A-84A0-33CE84432D0D}.Release|x64.Build.0 = Release|x64
{227C50F4-D9F6-4D9A-84A0-33CE84432D0D}.Release|x86.ActiveCfg = Release|Win32
{227C50F4-D9F6-4D9A-84A0-33CE84432D0D}.Release|x86.Build.0 = Release|Win32
- {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug|x64.ActiveCfg = Debug Static|x64
- {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug|x64.Build.0 = Debug Static|x64
+ {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug|x64.ActiveCfg = Debug|x64
+ {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug|x64.Build.0 = Debug|x64
{89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug|x86.ActiveCfg = Debug|Win32
{89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug|x86.Build.0 = Debug|Win32
+ {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug-AutoTests|x64.ActiveCfg = Debug Static|x64
+ {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug-AutoTests|x64.Build.0 = Debug Static|x64
+ {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug-AutoTests|x86.ActiveCfg = Debug Static|Win32
+ {89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Debug-AutoTests|x86.Build.0 = Debug Static|Win32
{89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Release|x64.ActiveCfg = Release|x64
{89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Release|x64.Build.0 = Release|x64
{89C5CDE8-04DB-4D9C-A8D8-7F786DAFB6D4}.Release|x86.ActiveCfg = Release|Win32
@@ -49,18 +64,34 @@ Global
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x64.Build.0 = Debug|x64
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x86.ActiveCfg = Debug|Win32
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug|x86.Build.0 = Debug|Win32
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug-AutoTests|x64.ActiveCfg = Debug|x64
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug-AutoTests|x64.Build.0 = Debug|x64
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug-AutoTests|x86.ActiveCfg = Debug|Win32
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Debug-AutoTests|x86.Build.0 = Debug|Win32
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.ActiveCfg = Release|x64
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.Build.0 = Release|x64
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.ActiveCfg = Release|Win32
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.Build.0 = Release|Win32
{01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Debug|x64.ActiveCfg = Debug|x64
- {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Debug|x64.Build.0 = Debug|x64
{01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Debug|x86.ActiveCfg = Debug|Win32
- {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Debug|x86.Build.0 = Debug|Win32
- {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Release|x64.ActiveCfg = Release|x64
- {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Release|x64.Build.0 = Release|x64
- {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Release|x86.ActiveCfg = Release|Win32
- {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Release|x86.Build.0 = Release|Win32
+ {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Debug-AutoTests|x64.ActiveCfg = Debug|x64
+ {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Debug-AutoTests|x64.Build.0 = Debug|x64
+ {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Debug-AutoTests|x86.ActiveCfg = Debug|Win32
+ {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Debug-AutoTests|x86.Build.0 = Debug|Win32
+ {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Release|x64.ActiveCfg = Debug|x64
+ {01A4E766-CC61-40B7-A3D6-7A37F6BF5CCB}.Release|x86.ActiveCfg = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.ActiveCfg = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.Build.0 = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.ActiveCfg = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.Build.0 = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug-AutoTests|x64.ActiveCfg = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug-AutoTests|x64.Build.0 = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug-AutoTests|x86.ActiveCfg = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug-AutoTests|x86.Build.0 = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.ActiveCfg = Release|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.Build.0 = Release|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.ActiveCfg = Release|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/windows/winnet/src/extras/loader/loader.cpp b/windows/winnet/src/extras/loader/loader.cpp
index bdacc1567d..00d795c032 100644
--- a/windows/winnet/src/extras/loader/loader.cpp
+++ b/windows/winnet/src/extras/loader/loader.cpp
@@ -1,5 +1,6 @@
#include "stdafx.h"
-#include "../../winnet/winnet.h"
+#include <winnet/winnet.h>
+#include <libshared/logging/stdoutlogger.h>
#include <iostream>
void __stdcall ConnectivityChanged(bool connected, void *)
@@ -7,32 +8,6 @@ void __stdcall ConnectivityChanged(bool connected, void *)
std::wcout << (0 != connected? L"Connected" : L"NOT connected") << std::endl;
}
-namespace
-{
-
-void __stdcall log(MULLVAD_LOG_SINK_SEVERITY severity, const char *msg, void *)
-{
- switch (severity)
- {
- case MULLVAD_LOG_SINK_SEVERITY_ERROR:
- std::cout << "Error: ";
- break;
- case MULLVAD_LOG_SINK_SEVERITY_WARNING:
- std::cout << "Warning: ";
- break;
- case MULLVAD_LOG_SINK_SEVERITY_INFO:
- std::cout << "Info: ";
- break;
- case MULLVAD_LOG_SINK_SEVERITY_TRACE:
- std::cout << "Trace: ";
- break;
- }
-
- std::cout << msg << std::endl;
-}
-
-}
-
int main()
{
//wchar_t *alias = nullptr;
@@ -56,7 +31,7 @@ int main()
const auto status = WinNet_ActivateConnectivityMonitor(
ConnectivityChanged,
nullptr,
- log,
+ shared::logging::StdoutLogger,
nullptr
);
@@ -64,4 +39,3 @@ int main()
return 0;
}
-
diff --git a/windows/winnet/src/extras/loader/loader.vcxproj b/windows/winnet/src/extras/loader/loader.vcxproj
index e225b64dd8..6f43421d39 100644
--- a/windows/winnet/src/extras/loader/loader.vcxproj
+++ b/windows/winnet/src/extras/loader/loader.vcxproj
@@ -107,12 +107,14 @@
<PreprocessorDefinitions>WINNET_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../libshared/src/</AdditionalIncludeDirectories>
+ <LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration)</AdditionalLibraryDirectories>
- <AdditionalDependencies>winnet-static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;winnet.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -124,13 +126,14 @@
<PreprocessorDefinitions>WINNET_STATIC;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <AdditionalIncludeDirectories>$(SolutionDir)src</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../libshared/src/</AdditionalIncludeDirectories>
+ <LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration)</AdditionalLibraryDirectories>
- <AdditionalDependencies>winnet-static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;winnet.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -144,6 +147,8 @@
<PreprocessorDefinitions>WINNET_STATIC;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../libshared/src/</AdditionalIncludeDirectories>
+ <LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -151,7 +156,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration)</AdditionalLibraryDirectories>
- <AdditionalDependencies>winnet-static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;winnet.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -165,6 +170,8 @@
<PreprocessorDefinitions>WINNET_STATIC;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../libshared/src/</AdditionalIncludeDirectories>
+ <LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -172,7 +179,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration)</AdditionalLibraryDirectories>
- <AdditionalDependencies>winnet-static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;winnet.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/windows/winnet/src/extras/loader/loader.vcxproj.filters b/windows/winnet/src/extras/loader/loader.vcxproj.filters
index 408a9591b1..cd0f4643c7 100644
--- a/windows/winnet/src/extras/loader/loader.vcxproj.filters
+++ b/windows/winnet/src/extras/loader/loader.vcxproj.filters
@@ -3,13 +3,9 @@
<ItemGroup>
<ClCompile Include="loader.cpp" />
<ClCompile Include="stdafx.cpp" />
- <ClCompile Include="..\..\winnet\routemanager.cpp" />
- <ClCompile Include="..\..\winnet\adapters.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
- <ClInclude Include="..\..\winnet\routemanager.h" />
- <ClInclude Include="..\..\winnet\adapters.h" />
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/windows/winnet/src/extras/tests/adaptermonitor.cpp b/windows/winnet/src/extras/tests/adaptermonitor.cpp
index bfb3da8d5e..465bb0b7cd 100644
--- a/windows/winnet/src/extras/tests/adaptermonitor.cpp
+++ b/windows/winnet/src/extras/tests/adaptermonitor.cpp
@@ -1,39 +1,21 @@
#include "stdafx.h"
#include "testadapterutil.h"
+#include <libshared/logging/stdoutlogger.h>
+#include <libshared/logging/logsinkadapter.h>
#include <iostream>
-
#include <CppUnitTest.h>
-#include <libcommon/trace/trace.h>
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace
{
-
-void logFunc(common::logging::Severity severity, const char *msg)
-{
- using common::logging::Severity;
-
- switch (severity)
- {
- case Severity::Error:
- std::cout << "Error: ";
- break;
- case Severity::Warning:
- std::cout << "Warning: ";
- break;
- case Severity::Info:
- std::cout << "Info: ";
- break;
- case Severity::Trace:
- std::cout << "Trace: ";
- break;
- }
- std::cout << msg << std::endl;
+auto MakeStdoutLogger()
+{
+ return std::make_shared<shared::logging::LogSinkAdapter>(shared::logging::StdoutLogger, nullptr);
}
-
+
enum class LastEvent
{
NoEvent,
@@ -48,7 +30,7 @@ namespace Microsoft::VisualStudio::CppUnitTestFramework
{
template<>
-static std::wstring ToString<LastEvent>(const enum class LastEvent& t)
+std::wstring ToString<LastEvent>(const enum class LastEvent& t)
{
switch (t)
{
@@ -72,9 +54,9 @@ public:
TEST_METHOD(addAdapter)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -84,7 +66,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -93,7 +75,7 @@ public:
);
Assert::AreEqual(
- 0ULL,
+ size_t(0),
adapterCount,
L"Expected 0 adapters initially"
);
@@ -117,7 +99,7 @@ public:
testProvider->sendEvent(&iface, MibAddInstance);
Assert::AreEqual(
- 1ULL,
+ size_t(1),
adapterCount,
L"Expected new adapter"
);
@@ -125,9 +107,9 @@ public:
TEST_METHOD(addAdapter_Duplicate)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -137,7 +119,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -162,7 +144,7 @@ public:
testProvider->sendEvent(&iface, MibAddInstance);
Assert::AreEqual(
- 1ULL,
+ size_t(1),
adapterCount,
L"Expected new adapter"
);
@@ -173,7 +155,7 @@ public:
testProvider->sendEvent(&iface, MibAddInstance);
Assert::AreEqual(
- 1ULL,
+ size_t(1),
adapterCount,
L"Expected ignored duplicate interface event"
);
@@ -181,9 +163,9 @@ public:
TEST_METHOD(removeAdapter_AdminStatus)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -193,7 +175,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -235,7 +217,7 @@ public:
testProvider->removeAdapter(adapter);
Assert::AreEqual(
- 0ULL,
+ size_t(0),
adapterCount,
L"Expected removed adapter"
);
@@ -243,9 +225,9 @@ public:
TEST_METHOD(removeAdapter_NoInterfaces)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -255,7 +237,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -299,7 +281,7 @@ public:
testProvider->removeAdapter(adapter);
Assert::AreEqual(
- 0ULL,
+ size_t(0),
adapterCount,
L"Expected removed adapter"
);
@@ -307,9 +289,9 @@ public:
TEST_METHOD(removeAdapter_Duplicate)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -319,7 +301,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -343,7 +325,7 @@ public:
testProvider->sendEvent(&iface, MibAddInstance);
Assert::AreEqual(
- 1ULL,
+ size_t(1),
adapterCount,
L"Expected new adapter"
);
@@ -363,7 +345,7 @@ public:
testProvider->sendEvent(&iface, MibDeleteInstance);
Assert::AreEqual(
- 0ULL,
+ size_t(0),
adapterCount,
L"State inconsistent after duplicate Delete event"
);
@@ -371,9 +353,9 @@ public:
TEST_METHOD(addIPv6Interface)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -383,7 +365,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -410,7 +392,7 @@ public:
testProvider->sendEvent(&iface, MibAddInstance);
Assert::AreEqual(
- 1ULL,
+ size_t(1),
adapterCount,
L"Expected new adapter"
);
@@ -418,9 +400,9 @@ public:
TEST_METHOD(addIPv4And6Interface)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -430,7 +412,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -474,9 +456,9 @@ public:
TEST_METHOD(addIPv4And6Interface_RemoveIPv4)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -486,7 +468,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -537,9 +519,9 @@ public:
TEST_METHOD(addIPv4And6Interface_RemoveIPv6)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -549,7 +531,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -600,9 +582,9 @@ public:
TEST_METHOD(addIPv4And6Interface_RemoveBoth)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
- const auto filter = [](const MIB_IF_ROW2 &row) -> bool
+ const auto filter = [](const MIB_IF_ROW2 &) -> bool
{
return true;
};
@@ -612,7 +594,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType) -> void
{
adapterCount = adapters.size();
},
@@ -665,7 +647,7 @@ public:
TEST_METHOD(filter)
{
- auto logSink = std::make_shared<common::logging::LogSink>(logFunc);
+ auto logSink = MakeStdoutLogger();
const auto testProvider = std::make_shared<TestDataProvider>();
@@ -697,7 +679,7 @@ public:
NetworkAdapterMonitor inst(
logSink,
- [&adapterCount, &lastEvent](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *adapter, UpdateType updateType) -> void
+ [&adapterCount, &lastEvent](const std::vector<MIB_IF_ROW2> &adapters, const MIB_IF_ROW2 *, UpdateType updateType) -> void
{
switch (updateType)
{
@@ -746,7 +728,7 @@ public:
Assert::AreEqual(LastEvent::NoEvent, lastEvent, L"Unexpectedly received event for loopback adapter");
Assert::AreEqual(
- 0ULL,
+ size_t(0),
adapterCount,
L"Loopback adapter was not filtered correctly"
);
diff --git a/windows/winnet/src/extras/tests/testadapterutil.cpp b/windows/winnet/src/extras/tests/testadapterutil.cpp
index 09d488bc27..128cbee681 100644
--- a/windows/winnet/src/extras/tests/testadapterutil.cpp
+++ b/windows/winnet/src/extras/tests/testadapterutil.cpp
@@ -1,13 +1,11 @@
#include "stdafx.h"
-
#include "testadapterutil.h"
-
#include <CppUnitTest.h>
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
#include <libcommon/logging/logsink.h>
-#include "../../winnet/networkadaptermonitor.h"
+#include <winnet/networkadaptermonitor.h>
using FilterType = NetworkAdapterMonitor::FilterType;
using UpdateSinkType = NetworkAdapterMonitor::UpdateSinkType;
@@ -63,11 +61,11 @@ void MibIfTable::remove(const MIB_IF_ROW2 &row)
//
DWORD TestDataProvider::notifyIpInterfaceChange(
- ADDRESS_FAMILY Family,
+ ADDRESS_FAMILY,
PIPINTERFACE_CHANGE_CALLBACK Callback,
PVOID CallerContext,
- BOOLEAN InitialNotification,
- HANDLE *NotificationHandle
+ BOOLEAN,
+ HANDLE *
)
{
// TODO: assert: m_callback == nullptr
@@ -78,7 +76,7 @@ DWORD TestDataProvider::notifyIpInterfaceChange(
return NO_ERROR;
}
-DWORD TestDataProvider::cancelMibChangeNotify2(HANDLE NotificationHandle)
+DWORD TestDataProvider::cancelMibChangeNotify2(HANDLE)
{
// TODO: assert: m_callback != nullptr
// TODO: multiple callbacks?
diff --git a/windows/winnet/src/extras/tests/testadapterutil.h b/windows/winnet/src/extras/tests/testadapterutil.h
index 4b4ae80799..5ae8cc32c2 100644
--- a/windows/winnet/src/extras/tests/testadapterutil.h
+++ b/windows/winnet/src/extras/tests/testadapterutil.h
@@ -1,11 +1,8 @@
#pragma once
#include <functional>
-
-#include <WinSock2.h>
-
-#include <libcommon/logging/logsink.h>
-#include "../../winnet/networkadaptermonitor.h"
+#include <winSock2.h>
+#include <winnet/networkadaptermonitor.h>
using FilterType = NetworkAdapterMonitor::FilterType;
using UpdateSinkType = NetworkAdapterMonitor::UpdateSinkType;
diff --git a/windows/winnet/src/extras/tests/tests.vcxproj b/windows/winnet/src/extras/tests/tests.vcxproj
index 6a332a9f48..d9afdea25e 100644
--- a/windows/winnet/src/extras/tests/tests.vcxproj
+++ b/windows/winnet/src/extras/tests/tests.vcxproj
@@ -5,18 +5,10 @@
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
@@ -35,14 +27,6 @@
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
@@ -50,14 +34,6 @@
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
@@ -66,15 +42,9 @@
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
@@ -83,21 +53,15 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>true</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>true</LinkIncremental>
- <IntDir>$(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\</IntDir>
<OutDir>$(SolutionDir)bin\$(Platform)-$(Configuration)\</OutDir>
+ <IntDir>$(SolutionDir)bin\temp\$(Platform)-$(Configuration)\$(ProjectName)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
+ <WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(SolutionDir)..\windows-libraries\src;$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../libshared/src;$(ProjectDir)../../../../windows-libraries/src;$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<LanguageStandard>stdcpplatest</LanguageStandard>
@@ -106,60 +70,24 @@
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration);$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <AdditionalDependencies>libcommon.lib;Iphlpapi.lib;winnet-static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;winnet-static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
+ <WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../;$(ProjectDir)../../../../libshared/src;$(ProjectDir)../../../../windows-libraries/src;$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <UseFullPaths>true</UseFullPaths>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>$(SolutionDir)..\windows-libraries\src;$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <UseFullPaths>true</UseFullPaths>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration);$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <AdditionalDependencies>libcommon.lib;winnet.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;winnet-static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
@@ -171,8 +99,6 @@
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="adaptermonitor.cpp" />
<ClCompile Include="testadapterutil.cpp" />
diff --git a/windows/winnet/src/winnet/winnet.cpp b/windows/winnet/src/winnet/winnet.cpp
index c94970b863..3c8f133d57 100644
--- a/windows/winnet/src/winnet/winnet.cpp
+++ b/windows/winnet/src/winnet/winnet.cpp
@@ -3,8 +3,9 @@
#include "NetworkInterfaces.h"
#include "offlinemonitor.h"
#include "routing/routemanager.h"
-#include <shared/logsinkadapter.h>
-#include <shared/network/interfaceutils.h>
+#include <libshared/logging/logsinkadapter.h>
+#include <libshared/logging/unwind.h>
+#include <libshared/network/interfaceutils.h>
#include <libcommon/error.h>
#include <libcommon/network.h>
#include <cstdint>
@@ -25,7 +26,7 @@ OfflineMonitor *g_OfflineMonitor = nullptr;
std::mutex g_RouteManagerLock;
RouteManager *g_RouteManager = nullptr;
-std::shared_ptr<shared::LogSinkAdapter> g_RouteManagerLogSink;
+std::shared_ptr<shared::logging::LogSinkAdapter> g_RouteManagerLogSink;
Network ConvertNetwork(const WINNET_IPNETWORK &in)
{
@@ -134,18 +135,6 @@ std::vector<Route> ConvertRoutes(const WINNET_ROUTE *routes, uint32_t numRoutes)
return out;
}
-void UnwindAndLog(MullvadLogSink logSink, void *logSinkContext, const std::exception &err)
-{
- if (nullptr == logSink)
- {
- return;
- }
-
- auto logger = std::make_shared<shared::LogSinkAdapter>(logSink, logSinkContext);
-
- common::error::UnwindException(err, logger);
-}
-
std::vector<SOCKADDR_INET> ConvertAddresses(const WINNET_IP *addresses, uint32_t numAddresses)
{
//
@@ -209,7 +198,7 @@ WinNet_EnsureTopMetric(
}
catch (const std::exception &err)
{
- UnwindAndLog(logSink, logSinkContext, err);
+ shared::logging::UnwindAndLog(logSink, logSinkContext, err);
return WINNET_ETM_STATUS_FAILURE;
}
catch (...)
@@ -250,7 +239,7 @@ WinNet_GetTapInterfaceIpv6Status(
}
catch (const std::exception &err)
{
- UnwindAndLog(logSink, logSinkContext, err);
+ shared::logging::UnwindAndLog(logSink, logSinkContext, err);
return WINNET_GTII_STATUS_FAILURE;
}
catch (...)
@@ -282,7 +271,7 @@ WinNet_GetTapInterfaceAlias(
}
catch (const std::exception &err)
{
- UnwindAndLog(logSink, logSinkContext, err);
+ shared::logging::UnwindAndLog(logSink, logSinkContext, err);
return false;
}
catch (...)
@@ -331,7 +320,7 @@ WinNet_ActivateConnectivityMonitor(
callback(connected, callbackContext);
};
- auto logger = std::make_shared<shared::LogSinkAdapter>(logSink, logSinkContext);
+ auto logger = std::make_shared<shared::logging::LogSinkAdapter>(logSink, logSinkContext);
g_OfflineMonitor = new OfflineMonitor(logger, forwarder);
@@ -339,7 +328,7 @@ WinNet_ActivateConnectivityMonitor(
}
catch (const std::exception &err)
{
- UnwindAndLog(logSink, logSinkContext, err);
+ shared::logging::UnwindAndLog(logSink, logSinkContext, err);
return false;
}
catch (...)
@@ -383,14 +372,14 @@ WinNet_ActivateRouteManager(
throw std::runtime_error("Cannot activate route manager twice");
}
- g_RouteManagerLogSink = std::make_shared<shared::LogSinkAdapter>(logSink, logSinkContext);
+ g_RouteManagerLogSink = std::make_shared<shared::logging::LogSinkAdapter>(logSink, logSinkContext);
g_RouteManager = new RouteManager(g_RouteManagerLogSink);
return true;
}
catch (const std::exception &err)
{
- UnwindAndLog(logSink, logSinkContext, err);
+ shared::logging::UnwindAndLog(logSink, logSinkContext, err);
return false;
}
catch (...)
@@ -713,7 +702,7 @@ WinNet_AddDeviceIpAddresses(
}
catch (const std::exception &err)
{
- UnwindAndLog(logSink, logSinkContext, err);
+ shared::logging::UnwindAndLog(logSink, logSinkContext, err);
return false;
}
catch (...)
diff --git a/windows/winnet/src/winnet/winnet.h b/windows/winnet/src/winnet/winnet.h
index f277d61c81..40ccf9f421 100644
--- a/windows/winnet/src/winnet/winnet.h
+++ b/windows/winnet/src/winnet/winnet.h
@@ -1,6 +1,6 @@
#pragma once
-#include <shared/logsink.h>
+#include <libshared/logging/logsink.h>
#include <stdint.h>
#include <stdbool.h>
diff --git a/windows/winnet/src/winnet/winnet.vcxproj b/windows/winnet/src/winnet/winnet.vcxproj
index 5fb0a50ec5..c21f75b2c1 100644
--- a/windows/winnet/src/winnet/winnet.vcxproj
+++ b/windows/winnet/src/winnet/winnet.vcxproj
@@ -170,14 +170,14 @@
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\shared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ModuleDefinitionFile>winnet.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration)</AdditionalLibraryDirectories>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'">
@@ -190,7 +190,7 @@
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\shared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -201,7 +201,7 @@
</Link>
<Lib>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-Debug</AdditionalLibraryDirectories>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -214,12 +214,12 @@
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\shared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>winnet.def</ModuleDefinitionFile>
</Link>
@@ -234,7 +234,7 @@
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\shared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -244,7 +244,7 @@
<ModuleDefinitionFile>winnet.def</ModuleDefinitionFile>
</Link>
<Lib>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-Debug</AdditionalLibraryDirectories>
</Lib>
</ItemDefinitionGroup>
@@ -260,7 +260,7 @@
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\shared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -269,7 +269,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<ModuleDefinitionFile>winnet.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration)</AdditionalLibraryDirectories>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -284,7 +284,7 @@
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<LanguageStandard>stdcpplatest</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\shared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)..\..\..\libshared\src\;$(ProjectDir)..\..\..\windows-libraries\src\;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -293,7 +293,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<ModuleDefinitionFile>winnet.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>$(SolutionDir)/bin/$(Platform)-$(Configuration)</AdditionalLibraryDirectories>
- <AdditionalDependencies>shared.lib;libcommon.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/windows/winnet/winnet.sln b/windows/winnet/winnet.sln
index a64d15d479..9a83e0d4a2 100644
--- a/windows/winnet/winnet.sln
+++ b/windows/winnet/winnet.sln
@@ -11,7 +11,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winnet", "src\winnet\winnet
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcommon", "..\windows-libraries\src\libcommon\libcommon.vcxproj", "{B52E2D10-A94A-4605-914A-2DCEF6A757EF}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared", "..\shared\src\shared\shared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshared", "..\libshared\src\libshared\libshared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/windows/winutil/extras.sln b/windows/winutil/extras.sln
index 756ecbd9d6..02e5b42d6b 100644
--- a/windows/winutil/extras.sln
+++ b/windows/winutil/extras.sln
@@ -7,15 +7,22 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "migration", "src\extras\mig
ProjectSection(ProjectDependencies) = postProject
{C075F50C-1A62-46D1-9494-02C8F48A9419} = {C075F50C-1A62-46D1-9494-02C8F48A9419}
{B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D} = {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winutil", "src\winutil\winutil.vcxproj", "{C075F50C-1A62-46D1-9494-02C8F48A9419}"
ProjectSection(ProjectDependencies) = postProject
{B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D} = {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcommon", "..\windows-libraries\src\libcommon\libcommon.vcxproj", "{B52E2D10-A94A-4605-914A-2DCEF6A757EF}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshared", "..\libshared\src\libshared\libshared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -48,6 +55,14 @@ Global
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.Build.0 = Release|x64
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.ActiveCfg = Release|Win32
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.Build.0 = Release|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.ActiveCfg = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.Build.0 = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.ActiveCfg = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.Build.0 = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.ActiveCfg = Release|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.Build.0 = Release|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.ActiveCfg = Release|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/windows/winutil/src/extras/migration/migration.cpp b/windows/winutil/src/extras/migration/migration.cpp
index 0ee4d458fe..e5fdf3f5ef 100644
--- a/windows/winutil/src/extras/migration/migration.cpp
+++ b/windows/winutil/src/extras/migration/migration.cpp
@@ -1,34 +1,30 @@
#include "stdafx.h"
#include <iostream>
-#include "../../winutil/winutil.h"
-
-void WINUTIL_API ErrorSink(const char *errorMessage, void *)
-{
- std::cout << "Error: " << errorMessage << std::endl;
-}
+#include <libshared/logging/stdoutlogger.h>
+#include <winutil/winutil.h>
int main()
{
- const auto status = WinUtil_MigrateAfterWindowsUpdate(ErrorSink, nullptr);
+ const auto status = WinUtil_MigrateAfterWindowsUpdate(shared::logging::StdoutLogger, nullptr);
switch (status)
{
- case WINUTIL_MIGRATION_STATUS::SUCCESS:
+ case WINUTIL_MIGRATION_STATUS_SUCCESS:
{
std::wcout << L"Success" << std::endl;
break;
}
- case WINUTIL_MIGRATION_STATUS::ABORTED:
+ case WINUTIL_MIGRATION_STATUS_ABORTED:
{
std::wcout << L"Aborted" << std::endl;
break;
}
- case WINUTIL_MIGRATION_STATUS::NOTHING_TO_MIGRATE:
+ case WINUTIL_MIGRATION_STATUS_NOTHING_TO_MIGRATE:
{
std::wcout << L"Nothing to migrate" << std::endl;
break;
}
- case WINUTIL_MIGRATION_STATUS::FAILED:
+ case WINUTIL_MIGRATION_STATUS_FAILED:
{
std::wcout << L"Failed" << std::endl;
break;
@@ -37,4 +33,3 @@ int main()
return 0;
}
-
diff --git a/windows/winutil/src/extras/migration/migration.vcxproj b/windows/winutil/src/extras/migration/migration.vcxproj
index 0283a21c60..a030827149 100644
--- a/windows/winutil/src/extras/migration/migration.vcxproj
+++ b/windows/winutil/src/extras/migration/migration.vcxproj
@@ -100,11 +100,12 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../../winutil/src/;$(ProjectDir)../../../../libshared/src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>winutil.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;winutil.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
@@ -118,11 +119,12 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../../winutil/src/;$(ProjectDir)../../../../libshared/src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>winutil.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;winutil.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
@@ -138,13 +140,14 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../../winutil/src/;$(ProjectDir)../../../../libshared/src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>winutil.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;winutil.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
@@ -160,13 +163,14 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../../winutil/src/;$(ProjectDir)../../../../libshared/src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>winutil.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;winutil.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
diff --git a/windows/winutil/src/winutil/winutil.cpp b/windows/winutil/src/winutil/winutil.cpp
index 633e181779..4ea0ac27e3 100644
--- a/windows/winutil/src/winutil/winutil.cpp
+++ b/windows/winutil/src/winutil/winutil.cpp
@@ -1,7 +1,8 @@
#include "stdafx.h"
#include "winutil.h"
#include "migration.h"
-#include "libcommon/valuemapper.h"
+#include <libshared/logging/unwind.h>
+#include <libcommon/valuemapper.h>
#include <stdexcept>
extern "C"
@@ -9,8 +10,8 @@ WINUTIL_LINKAGE
WINUTIL_MIGRATION_STATUS
WINUTIL_API
WinUtil_MigrateAfterWindowsUpdate(
- WinUtilErrorSink errorSink,
- void *errorSinkContext
+ MullvadLogSink logSink,
+ void *logSinkContext
)
{
try
@@ -19,24 +20,20 @@ WinUtil_MigrateAfterWindowsUpdate(
const common::ValueMapper<migration::MigrationStatus, WINUTIL_MIGRATION_STATUS> mapper =
{
- value_type(migration::MigrationStatus::Success, WINUTIL_MIGRATION_STATUS::SUCCESS),
- value_type(migration::MigrationStatus::Aborted, WINUTIL_MIGRATION_STATUS::ABORTED),
- value_type(migration::MigrationStatus::NothingToMigrate, WINUTIL_MIGRATION_STATUS::NOTHING_TO_MIGRATE),
+ value_type(migration::MigrationStatus::Success, WINUTIL_MIGRATION_STATUS_SUCCESS),
+ value_type(migration::MigrationStatus::Aborted, WINUTIL_MIGRATION_STATUS_ABORTED),
+ value_type(migration::MigrationStatus::NothingToMigrate, WINUTIL_MIGRATION_STATUS_NOTHING_TO_MIGRATE),
};
return mapper.map(migration::MigrateAfterWindowsUpdate());
}
catch (const std::exception &err)
{
- if (nullptr != errorSink)
- {
- errorSink(err.what(), errorSinkContext);
- }
-
- return WINUTIL_MIGRATION_STATUS::FAILED;
+ shared::logging::UnwindAndLog(logSink, logSinkContext, err);
+ return WINUTIL_MIGRATION_STATUS_FAILED;
}
catch (...)
{
- return WINUTIL_MIGRATION_STATUS::FAILED;
+ return WINUTIL_MIGRATION_STATUS_FAILED;
}
}
diff --git a/windows/winutil/src/winutil/winutil.h b/windows/winutil/src/winutil/winutil.h
index 8939aadc8f..c29a57a079 100644
--- a/windows/winutil/src/winutil/winutil.h
+++ b/windows/winutil/src/winutil/winutil.h
@@ -1,6 +1,7 @@
#pragma once
-#include <cstdint>
+#include <libshared/logging/logsink.h>
+#include <stdint.h>
#ifdef WINUTIL_EXPORTS
#define WINUTIL_LINKAGE __declspec(dllexport)
@@ -10,19 +11,17 @@
#define WINUTIL_API __stdcall
-typedef void (WINUTIL_API *WinUtilErrorSink)(const char *errorMessage, void *context);
-
-enum class WINUTIL_MIGRATION_STATUS : uint32_t
+enum WINUTIL_MIGRATION_STATUS
{
- SUCCESS = 0,
+ WINUTIL_MIGRATION_STATUS_SUCCESS = 0,
// Destination already exists
- ABORTED,
+ WINUTIL_MIGRATION_STATUS_ABORTED,
// There's no backup
- NOTHING_TO_MIGRATE,
+ WINUTIL_MIGRATION_STATUS_NOTHING_TO_MIGRATE,
- FAILED,
+ WINUTIL_MIGRATION_STATUS_FAILED,
};
extern "C"
@@ -30,6 +29,6 @@ WINUTIL_LINKAGE
WINUTIL_MIGRATION_STATUS
WINUTIL_API
WinUtil_MigrateAfterWindowsUpdate(
- WinUtilErrorSink errorSink,
- void *errorSinkContext
+ MullvadLogSink logSink,
+ void *logSinkContext
);
diff --git a/windows/winutil/src/winutil/winutil.vcxproj b/windows/winutil/src/winutil/winutil.vcxproj
index 7d4e17dbff..3113553ce3 100644
--- a/windows/winutil/src/winutil/winutil.vcxproj
+++ b/windows/winutil/src/winutil/winutil.vcxproj
@@ -123,13 +123,13 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <AdditionalIncludeDirectories>$(ProjectDir)../../../windows-libraries/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../libshared/src/;$(ProjectDir)../../../windows-libraries/src/;$(ProjectDir)../../../</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>winutil.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
@@ -143,13 +143,13 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <AdditionalIncludeDirectories>$(ProjectDir)../../../windows-libraries/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../libshared/src/;$(ProjectDir)../../../windows-libraries/src/;$(ProjectDir)../../../</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>winutil.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
@@ -165,7 +165,7 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <AdditionalIncludeDirectories>$(ProjectDir)../../../windows-libraries/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../libshared/src/;$(ProjectDir)../../../windows-libraries/src/;$(ProjectDir)../../../</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -173,7 +173,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>winutil.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
@@ -189,7 +189,7 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpplatest</LanguageStandard>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <AdditionalIncludeDirectories>$(ProjectDir)../../../windows-libraries/src/</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir)../../../libshared/src/;$(ProjectDir)../../../windows-libraries/src/;$(ProjectDir)../../../</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -197,7 +197,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(SolutionDir)bin\$(Platform)-$(Configuration)\</AdditionalLibraryDirectories>
- <AdditionalDependencies>libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>libshared.lib;libcommon.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>winutil.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
diff --git a/windows/winutil/winutil.sln b/windows/winutil/winutil.sln
index 8109de4e94..79dc0dc851 100644
--- a/windows/winutil/winutil.sln
+++ b/windows/winutil/winutil.sln
@@ -6,10 +6,16 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winutil", "src\winutil\winutil.vcxproj", "{C075F50C-1A62-46D1-9494-02C8F48A9419}"
ProjectSection(ProjectDependencies) = postProject
{B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D} = {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcommon", "..\windows-libraries\src\libcommon\libcommon.vcxproj", "{B52E2D10-A94A-4605-914A-2DCEF6A757EF}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshared", "..\libshared\src\libshared\libshared.vcxproj", "{EE69EA4A-CF71-4B88-866B-957F60C4CE0D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B52E2D10-A94A-4605-914A-2DCEF6A757EF} = {B52E2D10-A94A-4605-914A-2DCEF6A757EF}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -34,6 +40,14 @@ Global
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x64.Build.0 = Release|x64
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.ActiveCfg = Release|Win32
{B52E2D10-A94A-4605-914A-2DCEF6A757EF}.Release|x86.Build.0 = Release|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.ActiveCfg = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x64.Build.0 = Debug|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.ActiveCfg = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Debug|x86.Build.0 = Debug|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.ActiveCfg = Release|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x64.Build.0 = Release|x64
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.ActiveCfg = Release|Win32
+ {EE69EA4A-CF71-4B88-866B-957F60C4CE0D}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE