summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--windows/windns/src/windns/interfaceconfig.cpp43
-rw-r--r--windows/windns/src/windns/interfaceconfig.h5
2 files changed, 48 insertions, 0 deletions
diff --git a/windows/windns/src/windns/interfaceconfig.cpp b/windows/windns/src/windns/interfaceconfig.cpp
index 6cffb4ffe8..249c629e81 100644
--- a/windows/windns/src/windns/interfaceconfig.cpp
+++ b/windows/windns/src/windns/interfaceconfig.cpp
@@ -17,3 +17,46 @@ InterfaceConfig::InterfaceConfig(CComPtr<IWbemClassObject> instance)
m_servers = nchelpers::GetDnsServers(instance);
}
+
+InterfaceConfig::InterfaceConfig(common::serialization::Deserializer &deserializer)
+{
+ common::serialization::Deserializer &d = deserializer;
+
+ d >> m_configIndex;
+ d >> (uint8_t &)m_dhcp;
+ d >> m_interfaceIndex;
+ d >> m_interfaceGuid;
+
+ bool serversAvailable;
+
+ d >> (uint8_t &)serversAvailable;
+
+ if (serversAvailable)
+ {
+ m_servers = std::make_shared<std::vector<std::wstring> >();
+ d >> *m_servers;
+ }
+}
+
+void InterfaceConfig::serialize(common::serialization::Serializer &serializer) const
+{
+ common::serialization::Serializer &s = serializer;
+
+ s << m_configIndex;
+ s << (uint8_t)m_dhcp;
+ s << m_interfaceIndex;
+ s << m_interfaceGuid;
+
+ //
+ // TODO: Encapsulate this inside a new type.
+ //
+ if (nullptr == m_servers.get())
+ {
+ s << (uint8_t)0;
+ }
+ else
+ {
+ s << (uint8_t)1;
+ s << *m_servers;
+ }
+}
diff --git a/windows/windns/src/windns/interfaceconfig.h b/windows/windns/src/windns/interfaceconfig.h
index 4e0af5c482..a72142e6a4 100644
--- a/windows/windns/src/windns/interfaceconfig.h
+++ b/windows/windns/src/windns/interfaceconfig.h
@@ -1,6 +1,8 @@
#pragma once
#include "windns/netconfighelpers.h"
+#include "windns/serialization/deserializer.h"
+#include "windns/serialization/serializer.h"
#include <cstdint>
#include <string>
#include <vector>
@@ -15,6 +17,9 @@ public:
// instance = Win32_NetworkAdapterConfiguration.
explicit InterfaceConfig(CComPtr<IWbemClassObject> instance);
+ explicit InterfaceConfig(common::serialization::Deserializer &deserializer);
+ void serialize(common::serialization::Serializer &serializer) const;
+
void updateServers(const InterfaceConfig &rhs)
{
m_servers = rhs.m_servers;