summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--windows/windns/src/windns/dnsreverter.cpp24
-rw-r--r--windows/windns/src/windns/dnsreverter.h5
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: