diff options
| author | Odd Stranne <odd@mullvad.net> | 2018-04-23 11:45:58 +0200 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2018-06-18 08:45:10 +0200 |
| commit | ce64eef69a700c08c6dba22cda14a6fc7c87788e (patch) | |
| tree | 6d5cff1407d53588b6850b9292df36677a8bbd63 | |
| parent | c12f3f4fdf2391fdaa42ca50910588cde5a160dd (diff) | |
| download | mullvadvpn-ce64eef69a700c08c6dba22cda14a6fc7c87788e.tar.xz mullvadvpn-ce64eef69a700c08c6dba22cda14a6fc7c87788e.zip | |
Add class for keeping track of interface DNS settings
| -rw-r--r-- | windns/src/windns/dnsconfiguration.cpp | 20 | ||||
| -rw-r--r-- | windns/src/windns/dnsconfiguration.h | 42 |
2 files changed, 62 insertions, 0 deletions
diff --git a/windns/src/windns/dnsconfiguration.cpp b/windns/src/windns/dnsconfiguration.cpp new file mode 100644 index 0000000000..ae0c3ffc2f --- /dev/null +++ b/windns/src/windns/dnsconfiguration.cpp @@ -0,0 +1,20 @@ +#include "stdafx.h" +#include "dnsconfiguration.h" +#include "windns/comhelpers.h" + +DnsConfiguration::DnsConfiguration(CComPtr<IWbemClassObject> instance) +{ + m_configId = dnshelpers::GetId(instance); + m_interfaceIndex = ComGetPropertyAlways(instance, L"InterfaceIndex").uintVal; + m_servers = dnshelpers::GetServers(instance); +} + +std::vector<std::wstring> *DnsConfiguration::servers() const +{ + return m_servers.get(); +} + +void DnsConfiguration::update(CComPtr<IWbemClassObject> instance) +{ + m_servers = dnshelpers::GetServers(instance); +} diff --git a/windns/src/windns/dnsconfiguration.h b/windns/src/windns/dnsconfiguration.h new file mode 100644 index 0000000000..1477d96a95 --- /dev/null +++ b/windns/src/windns/dnsconfiguration.h @@ -0,0 +1,42 @@ +#pragma once + +#include "windns/dnshelpers.h" +#include <cstdint> +#include <string> +#include <vector> +#include <memory> +#include <atlbase.h> +#include <wbemidl.h> + +class DnsConfiguration +{ +public: + + // instance = Win32_NetworkAdapterConfiguration. + DnsConfiguration(CComPtr<IWbemClassObject> instance); + + DnsConfiguration(const DnsConfiguration &) = delete; + DnsConfiguration &operator=(const DnsConfiguration &) = delete; + DnsConfiguration(DnsConfiguration &&) = default; + DnsConfiguration &operator=(DnsConfiguration &&) = default; + + const std::wstring &id() const + { + return m_configId; + } + + uint32_t interfaceIndex() const + { + return m_interfaceIndex; + } + + std::vector<std::wstring> *servers() const; + + void update(CComPtr<IWbemClassObject> instance); + +private: + + std::wstring m_configId; + uint32_t m_interfaceIndex; + dnshelpers::OptionalStringList m_servers; +}; |
