summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2018-06-07 11:41:41 +0200
committerOdd Stranne <odd@mullvad.net>2018-06-18 08:45:16 +0200
commit205bd46a9b1e8f2ce5914fbb1d1311f250c10165 (patch)
treeeeb41e5e9a73d4d99873e5c99f8a939b028bdfdf
parent154bf451f86b40ecd04642feae19b1e551552aa0 (diff)
downloadmullvadvpn-205bd46a9b1e8f2ce5914fbb1d1311f250c10165.tar.xz
mullvadvpn-205bd46a9b1e8f2ce5914fbb1d1311f250c10165.zip
Implement WinDns_Recover
-rw-r--r--windows/windns/src/windns/windns.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/windows/windns/src/windns/windns.cpp b/windows/windns/src/windns/windns.cpp
index 66b7c94f7c..ea8ee15c33 100644
--- a/windows/windns/src/windns/windns.cpp
+++ b/windows/windns/src/windns/windns.cpp
@@ -2,6 +2,9 @@
#include "windns.h"
#include "windnscontext.h"
#include "clientsinkinfo.h"
+#include "windns/serialization/deserializer.h"
+#include "interfaceconfig.h"
+#include "dnsreverter.h"
#include <vector>
#include <string>
@@ -164,7 +167,17 @@ WinDns_Recover(
uint32_t dataLength
)
{
- // TODO: smart stuff
+ common::serialization::Deserializer d(reinterpret_cast<const uint8_t *>(configData), dataLength);
- return false;
+ uint32_t numConfigs;
+ d >> numConfigs;
+
+ DnsReverter dnsReverter;
+
+ for (; numConfigs != 0; --numConfigs)
+ {
+ dnsReverter.revert(InterfaceConfig(d));
+ }
+
+ return true;
}