summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2018-04-23 11:45:20 +0200
committerOdd Stranne <odd@mullvad.net>2018-06-18 08:45:10 +0200
commitc12f3f4fdf2391fdaa42ca50910588cde5a160dd (patch)
tree7be4331a08c043a6df22c609ea961d547dac712a
parentf7b1f77456cfdb4bf6f0daee4985e524223cdc51 (diff)
downloadmullvadvpn-c12f3f4fdf2391fdaa42ca50910588cde5a160dd.tar.xz
mullvadvpn-c12f3f4fdf2391fdaa42ca50910588cde5a160dd.zip
Add static functions for working with DNS
-rw-r--r--windns/src/windns/dnshelpers.cpp30
-rw-r--r--windns/src/windns/dnshelpers.h20
2 files changed, 50 insertions, 0 deletions
diff --git a/windns/src/windns/dnshelpers.cpp b/windns/src/windns/dnshelpers.cpp
new file mode 100644
index 0000000000..a23ffc5cef
--- /dev/null
+++ b/windns/src/windns/dnshelpers.cpp
@@ -0,0 +1,30 @@
+#include "stdafx.h"
+#include "dnshelpers.h"
+#include "comhelpers.h"
+
+namespace dnshelpers
+{
+
+std::wstring GetId(CComPtr<IWbemClassObject> instance)
+{
+ return ComConvertString(V_BSTR(&ComGetPropertyAlways(instance, L"SettingID")));
+}
+
+OptionalStringList GetServers(CComPtr<IWbemClassObject> instance)
+{
+ OptionalStringList result;
+
+ auto servers = ComGetProperty(instance, L"DNSServerSearchOrder");
+
+ if (VT_EMPTY == V_VT(&servers) || VT_NULL == V_VT(&servers))
+ {
+ return result;
+ }
+
+ result = std::make_unique<std::vector<std::wstring> >(
+ ComConvertStringArray(V_ARRAY(&servers)));
+
+ return result;
+}
+
+}
diff --git a/windns/src/windns/dnshelpers.h b/windns/src/windns/dnshelpers.h
new file mode 100644
index 0000000000..036fb032b1
--- /dev/null
+++ b/windns/src/windns/dnshelpers.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include <string>
+#include <memory>
+#include <vector>
+#include <atlbase.h>
+#include <wbemidl.h>
+
+namespace dnshelpers
+{
+
+// instance = Win32_NetworkAdapterConfiguration
+std::wstring GetId(CComPtr<IWbemClassObject> instance);
+
+using OptionalStringList = std::unique_ptr<std::vector<std::wstring> >;
+
+// instance = Win32_NetworkAdapterConfiguration
+OptionalStringList GetServers(CComPtr<IWbemClassObject> instance);
+
+} \ No newline at end of file