diff options
| author | Odd Stranne <odd@mullvad.net> | 2018-06-12 08:55:03 +0200 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2018-06-18 09:08:11 +0200 |
| commit | 7ceb7a3134d139b21b04768e25b80844209d616f (patch) | |
| tree | ba61f282a13c7accf7d73c2fba9a78e4a11a0d88 | |
| parent | 139453ea5edd1565fcf676e3872c8ff1f8bb9047 (diff) | |
| download | mullvadvpn-7ceb7a3134d139b21b04768e25b80844209d616f.tar.xz mullvadvpn-7ceb7a3134d139b21b04768e25b80844209d616f.zip | |
Migrate tracing to libcommon and update references
| -rw-r--r-- | windows/windns/src/windns/configmanager.cpp | 19 | ||||
| -rw-r--r-- | windows/windns/src/windns/configmanager.h | 18 | ||||
| -rw-r--r-- | windows/windns/src/windns/consoletracesink.cpp | 8 | ||||
| -rw-r--r-- | windows/windns/src/windns/consoletracesink.h | 8 | ||||
| -rw-r--r-- | windows/windns/src/windns/itracesink.h | 48 | ||||
| -rw-r--r-- | windows/windns/src/windns/macroargument.h | 23 | ||||
| -rw-r--r-- | windows/windns/src/windns/netconfigeventsink.cpp | 2 | ||||
| m--------- | windows/windows-libraries | 0 |
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 |
