summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2018-06-12 08:55:03 +0200
committerOdd Stranne <odd@mullvad.net>2018-06-18 09:08:11 +0200
commit7ceb7a3134d139b21b04768e25b80844209d616f (patch)
treeba61f282a13c7accf7d73c2fba9a78e4a11a0d88
parent139453ea5edd1565fcf676e3872c8ff1f8bb9047 (diff)
downloadmullvadvpn-7ceb7a3134d139b21b04768e25b80844209d616f.tar.xz
mullvadvpn-7ceb7a3134d139b21b04768e25b80844209d616f.zip
Migrate tracing to libcommon and update references
-rw-r--r--windows/windns/src/windns/configmanager.cpp19
-rw-r--r--windows/windns/src/windns/configmanager.h18
-rw-r--r--windows/windns/src/windns/consoletracesink.cpp8
-rw-r--r--windows/windns/src/windns/consoletracesink.h8
-rw-r--r--windows/windns/src/windns/itracesink.h48
-rw-r--r--windows/windns/src/windns/macroargument.h23
-rw-r--r--windows/windns/src/windns/netconfigeventsink.cpp2
m---------windows/windows-libraries0
8 files changed, 17 insertions, 109 deletions
diff --git a/windows/windns/src/windns/configmanager.cpp b/windows/windns/src/windns/configmanager.cpp
index 0751eba251..c9fdde1142 100644
--- a/windows/windns/src/windns/configmanager.cpp
+++ b/windows/windns/src/windns/configmanager.cpp
@@ -1,18 +1,17 @@
#include "stdafx.h"
#include "configmanager.h"
#include "libcommon/serialization/serializer.h"
+#include "libcommon/trace/xtrace.h"
#include <utility>
#include <algorithm>
ConfigManager::ConfigManager
(
const std::vector<std::wstring> &servers,
- const ConfigSinkInfo &configSinkInfo,
- std::shared_ptr<ITraceSink> traceSink
+ const ConfigSinkInfo &configSinkInfo
)
: m_servers(servers)
, m_configSinkInfo(configSinkInfo)
- , m_traceSink(traceSink)
{
}
@@ -43,9 +42,9 @@ const std::vector<std::wstring> &ConfigManager::getServers() const
return m_servers;
}
-ConfigManager::UpdateType ConfigManager::updateConfig(const InterfaceConfig &previous, const InterfaceConfig &target)
+ConfigManager::UpdateStatus ConfigManager::updateConfig(const InterfaceConfig &previous, const InterfaceConfig &target)
{
- XTRACE(L"Interface configuration update for interface =", target.interfaceIndex());
+ XTRACE(L"Interface configuration update for interface=", target.interfaceIndex());
//
// There are a few cases we need to deal with:
@@ -60,9 +59,9 @@ ConfigManager::UpdateType ConfigManager::updateConfig(const InterfaceConfig &pre
const auto configIndex = target.configIndex();
auto iter = m_configs.find(configIndex);
- if (internalUpdate(target))
+ if (verifyServers(target))
{
- XTRACE(L"Update event was initiated by WINDNS");
+ XTRACE(L"Update event was initiated by WINDNS or did not include DNS changes");
//
// If we haven't seen this config id before, it means the 'previous' instance
@@ -76,7 +75,7 @@ ConfigManager::UpdateType ConfigManager::updateConfig(const InterfaceConfig &pre
exportConfigs();
}
- return UpdateType::WinDnsEnforced;
+ return UpdateStatus::DnsApproved;
}
//
@@ -95,7 +94,7 @@ ConfigManager::UpdateType ConfigManager::updateConfig(const InterfaceConfig &pre
exportConfigs();
- return UpdateType::External;
+ return UpdateStatus::DnsDeviates;
}
bool ConfigManager::processConfigs(std::function<bool(const InterfaceConfig &)> configSink)
@@ -111,7 +110,7 @@ bool ConfigManager::processConfigs(std::function<bool(const InterfaceConfig &)>
return true;
}
-bool ConfigManager::internalUpdate(const InterfaceConfig &config)
+bool ConfigManager::verifyServers(const InterfaceConfig &config)
{
auto updatedServers = config.servers();
diff --git a/windows/windns/src/windns/configmanager.h b/windows/windns/src/windns/configmanager.h
index 66c2152d5a..157f148901 100644
--- a/windows/windns/src/windns/configmanager.h
+++ b/windows/windns/src/windns/configmanager.h
@@ -2,7 +2,6 @@
#include "interfaceconfig.h"
#include "clientsinkinfo.h"
-#include "itracesink.h"
#include <map>
#include <string>
#include <mutex>
@@ -51,8 +50,7 @@ public:
ConfigManager
(
const std::vector<std::wstring> &servers,
- const ConfigSinkInfo &configSinkInfo,
- std::shared_ptr<ITraceSink> traceSink = std::make_shared<NullTraceSink>()
+ const ConfigSinkInfo &configSinkInfo
);
//
@@ -80,13 +78,13 @@ public:
//
// Notify the ConfigManager that a live configuration has been updated.
//
- enum class UpdateType
+ enum class UpdateStatus
{
- WinDnsEnforced,
- External
+ DnsApproved,
+ DnsDeviates
};
- UpdateType updateConfig(const InterfaceConfig &previous, const InterfaceConfig &target);
+ UpdateStatus updateConfig(const InterfaceConfig &previous, const InterfaceConfig &target);
//
// Enumerate recorded configs.
@@ -105,12 +103,10 @@ private:
//
std::map<uint32_t, InterfaceConfig> m_configs;
- std::shared_ptr<ITraceSink> m_traceSink;
-
//
- // Tests, by looking at the servers, whether this is an update initied by WINDNS.
+ // Check DNS server list to see if it matches what we're trying to enforce.
//
- bool internalUpdate(const InterfaceConfig &config);
+ bool verifyServers(const InterfaceConfig &config);
//
// Bundle the current config details and send them into the config sink.
diff --git a/windows/windns/src/windns/consoletracesink.cpp b/windows/windns/src/windns/consoletracesink.cpp
deleted file mode 100644
index 6e3d415303..0000000000
--- a/windows/windns/src/windns/consoletracesink.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "stdafx.h"
-#include "consoletracesink.h"
-#include <iostream>
-
-void ConsoleTraceSink::trace(const wchar_t *msg)
-{
- std::wcout << msg << std::endl;
-}
diff --git a/windows/windns/src/windns/consoletracesink.h b/windows/windns/src/windns/consoletracesink.h
deleted file mode 100644
index 765fb4a2a0..0000000000
--- a/windows/windns/src/windns/consoletracesink.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-#include "itracesink.h"
-
-struct ConsoleTraceSink : public ITraceSink
-{
- void trace(const wchar_t *msg) override;
-};
diff --git a/windows/windns/src/windns/itracesink.h b/windows/windns/src/windns/itracesink.h
deleted file mode 100644
index 496a7df1b9..0000000000
--- a/windows/windns/src/windns/itracesink.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#pragma once
-
-#include <sstream>
-
-struct ITraceSink
-{
- virtual ~ITraceSink() = 0
- {
- }
-
- virtual void trace(const wchar_t *msg) = 0;
-};
-
-struct NullTraceSink : public ITraceSink
-{
- void trace(const wchar_t *) override
- {
- }
-};
-
-#ifdef _DEBUG
-#define TRACING_ENABLED 1
-#else
-#define TRACING_ENABLED 0
-#endif
-
-#if TRACING_ENABLED == 1
-
-#include "macroargument.h"
-#define XTRACE(...) VFUNC(XTRACE, __VA_ARGS__)
-
-#define XTRACE1(x)\
-{\
-std::wstringstream xtrace_ss;\
-xtrace_ss << __FUNCTIONW__ << L": " << x;\
-m_traceSink->trace(xtrace_ss.str().c_str());\
-}
-
-#define XTRACE2(x, y)\
-{\
-std::wstringstream xtrace_ss;\
-xtrace_ss << __FUNCTIONW__ << L": " << x << L" " << y;\
-m_traceSink->trace(xtrace_ss.str().c_str());\
-}
-
-#else
-#define XTRACE(...)
-#endif
diff --git a/windows/windns/src/windns/macroargument.h b/windows/windns/src/windns/macroargument.h
deleted file mode 100644
index bb27c124c8..0000000000
--- a/windows/windns/src/windns/macroargument.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-//http://www.neff.co.at/2017/04/04/Overloading-Macros-on-the-Number-of-Arguments.html
-
-// Some auxiliary macros
-#define EMPTY()
-#define EXPAND(X) X
-#define CONCAT(X,Y) X##Y
-
-// Get number of arguments passed by __VA_ARGS__
-// http://stackoverflow.com/questions/2124339/c-preprocessor-va-args-number-of-arguments
-// NUMARGS: all arguments must be castable to int
-// NARGS: pure preprocessor macro, maximum 9 arguments
-#define NUMARGS(...) (sizeof((int[]){__VA_ARGS__})/sizeof(int))
-#define NARGS(...) _NARGS_I(_AUGMENT(__VA_ARGS__))
-#define _AUGMENT(...) _UNUSED_, __VA_ARGS__
-#define _NARGS_I(...) EXPAND(_ARG_N(__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0))
-#define _ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, count, ...) count
-
-// Overloading Macro on Number of Arguments
-// http://stackoverflow.com/questions/11761703/overloading-macro-on-number-of-arguments
-#define _VFUNC(NAME, N) CONCAT(NAME, N)
-#define VFUNC(FUNC, ...) CONCAT(_VFUNC(FUNC, NARGS(__VA_ARGS__))(__VA_ARGS__),EMPTY())
diff --git a/windows/windns/src/windns/netconfigeventsink.cpp b/windows/windns/src/windns/netconfigeventsink.cpp
index 2923fecfe7..e4ef7ae1ce 100644
--- a/windows/windns/src/windns/netconfigeventsink.cpp
+++ b/windows/windns/src/windns/netconfigeventsink.cpp
@@ -21,7 +21,7 @@ void NetConfigEventSink::update(CComPtr<IWbemClassObject> previous, CComPtr<IWbe
// This is OK because the config manager will reject updates
// that set our DNS servers.
//
- if (ConfigManager::UpdateType::WinDnsEnforced == m_configManager->updateConfig(previousConfig, targetConfig))
+ if (ConfigManager::UpdateStatus::DnsApproved == m_configManager->updateConfig(previousConfig, targetConfig))
{
return;
}
diff --git a/windows/windows-libraries b/windows/windows-libraries
-Subproject cfd30a10f7de339306b38653cbb8820b60dad65
+Subproject af32131869f182d0c9a4af7a27cd7bc27d619e0