diff options
| author | Odd Stranne <odd@mullvad.net> | 2018-06-04 14:51:30 +0200 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2018-06-18 08:45:15 +0200 |
| commit | 73ee6af8a30640537ce329f52f67d6d4e0a15f1c (patch) | |
| tree | 60e638c0429dd81ded1911d3f9b279dccb9f0696 | |
| parent | 276600656eb68d3fd3da7db441871b44d7759236 (diff) | |
| download | mullvadvpn-73ee6af8a30640537ce329f52f67d6d4e0a15f1c.tar.xz mullvadvpn-73ee6af8a30640537ce329f52f67d6d4e0a15f1c.zip | |
Provide config sink to ConfigManager
| -rw-r--r-- | windows/windns/src/windns/configmanager.cpp | 15 | ||||
| -rw-r--r-- | windows/windns/src/windns/configmanager.h | 9 | ||||
| -rw-r--r-- | windows/windns/src/windns/windnscontext.cpp | 2 |
3 files changed, 25 insertions, 1 deletions
diff --git a/windows/windns/src/windns/configmanager.cpp b/windows/windns/src/windns/configmanager.cpp index 4ebdfcfbae..bff2cf4264 100644 --- a/windows/windns/src/windns/configmanager.cpp +++ b/windows/windns/src/windns/configmanager.cpp @@ -6,9 +6,11 @@ ConfigManager::ConfigManager ( const std::vector<std::wstring> &servers, + const ConfigSinkInfo &configSinkInfo, std::shared_ptr<ITraceSink> traceSink ) : m_servers(servers) + , m_configSinkInfo(configSinkInfo) , m_traceSink(traceSink) { } @@ -63,6 +65,8 @@ ConfigManager::UpdateType ConfigManager::updateConfig(const DnsConfig &previous, { XTRACE(L"Creating new interface configuration entry"); m_configs.insert(std::make_pair(configIndex, previous)); + + exportConfigs(); } return UpdateType::WinDnsEnforced; @@ -82,6 +86,8 @@ ConfigManager::UpdateType ConfigManager::updateConfig(const DnsConfig &previous, iter->second = target; } + exportConfigs(); + return UpdateType::External; } @@ -109,3 +115,12 @@ bool ConfigManager::internalUpdate(const DnsConfig &config) return std::equal(m_servers.begin(), m_servers.end(), updatedServers->begin(), updatedServers->end()); } + +void ConfigManager::exportConfigs() +{ + // + // TODO: Serialize all configs and send to config sink + // + // serialize as array of DnsConfig? + // +} diff --git a/windows/windns/src/windns/configmanager.h b/windows/windns/src/windns/configmanager.h index 1344e23857..65c2000c99 100644 --- a/windows/windns/src/windns/configmanager.h +++ b/windows/windns/src/windns/configmanager.h @@ -1,6 +1,7 @@ #pragma once #include "dnsconfig.h" +#include "clientsinkinfo.h" #include "itracesink.h" #include <map> #include <string> @@ -50,6 +51,7 @@ public: ConfigManager ( const std::vector<std::wstring> &servers, + const ConfigSinkInfo &configSinkInfo, std::shared_ptr<ITraceSink> traceSink = std::make_shared<NullTraceSink>() ); @@ -89,7 +91,9 @@ public: private: std::mutex m_mutex; + std::vector<std::wstring> m_servers; + ConfigSinkInfo m_configSinkInfo; // // Organize configs based on their system assigned index. @@ -102,4 +106,9 @@ private: // Tests, by looking at the servers, whether this is an update initied by WINDNS. // bool internalUpdate(const DnsConfig &config); + + // + // Bundle the current config details and send them into the config sink. + // + void exportConfigs(); }; diff --git a/windows/windns/src/windns/windnscontext.cpp b/windows/windns/src/windns/windnscontext.cpp index 8daff46145..aac564f6a6 100644 --- a/windows/windns/src/windns/windnscontext.cpp +++ b/windows/windns/src/windns/windnscontext.cpp @@ -13,7 +13,7 @@ bool WinDnsContext::set(const std::vector<std::wstring> &servers, const ClientSi { m_sinkInfo = sinkInfo; - m_configManager = std::make_shared<ConfigManager>(servers); + m_configManager = std::make_shared<ConfigManager>(servers, m_sinkInfo.configSinkInfo); // // Register interface configuration monitoring. |
