diff options
| -rw-r--r-- | windows/windns/src/windns/dnsreverter.cpp | 24 | ||||
| -rw-r--r-- | windows/windns/src/windns/dnsreverter.h | 5 |
2 files changed, 12 insertions, 17 deletions
diff --git a/windows/windns/src/windns/dnsreverter.cpp b/windows/windns/src/windns/dnsreverter.cpp index 0b97459a21..5eb51f6d20 100644 --- a/windows/windns/src/windns/dnsreverter.cpp +++ b/windows/windns/src/windns/dnsreverter.cpp @@ -1,32 +1,28 @@ #include "stdafx.h" #include "dnsreverter.h" -#include "wmi/methodcall.h" -#include <sstream> +#include "netsh.h" DnsReverter::DnsReverter(std::shared_ptr<ITraceSink> traceSink) : m_traceSink(traceSink) { } -void DnsReverter::revert(wmi::IConnection &connection, const DnsConfig &config) +void DnsReverter::revert(const InterfaceConfig &config) { XTRACE("Reverting DNS configuration for interface with index=", config.interfaceIndex()); - std::wstringstream ss; + auto servers = config.servers(); - ss << L"SELECT * FROM Win32_NetworkAdapterConfiguration " - << L"WHERE Index = '" << config.configIndex() << L"'"; - - auto resultSet = connection.query(ss.str().c_str()); - - if (false == resultSet.advance()) + if (config.dhcp() || nullptr == servers || 0 == servers->size()) { - XTRACE("Unable to retrieve active configuration object"); + NetSh::SetIpv4Dhcp(config.interfaceIndex()); return; } - auto activeConfig = resultSet.result(); - auto targetDns = config.servers(); + NetSh::SetIpv4PrimaryDns(config.interfaceIndex(), (*servers)[0]); - nchelpers::SetDnsServers(connection, activeConfig, targetDns); + if (servers->size() > 1) + { + NetSh::SetIpv4SecondaryDns(config.interfaceIndex(), (*servers)[1]); + } } diff --git a/windows/windns/src/windns/dnsreverter.h b/windows/windns/src/windns/dnsreverter.h index 98de9caa8c..fa88ccc008 100644 --- a/windows/windns/src/windns/dnsreverter.h +++ b/windows/windns/src/windns/dnsreverter.h @@ -1,7 +1,6 @@ #pragma once -#include "wmi/iconnection.h" -#include "dnsconfig.h" +#include "interfaceconfig.h" #include "itracesink.h" #include <memory> @@ -11,7 +10,7 @@ public: DnsReverter(std::shared_ptr<ITraceSink> traceSink = std::make_shared<NullTraceSink>()); - void revert(wmi::IConnection &connection, const DnsConfig &config); + void revert(const InterfaceConfig &config); private: |
