summaryrefslogtreecommitdiffhomepage
path: root/windows/winnet/src
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2019-11-29 13:38:05 +0100
committerDavid Lönnhager <david.l@mullvad.net>2019-12-03 09:17:30 +0100
commit726aec61b039aefa129dcc0c2c261c299f20bdc6 (patch)
tree3b57cc5143bfdb6fc563e08a73d51b852db21c76 /windows/winnet/src
parentba20a7fa733fa02010b62582b220f716444abb50 (diff)
downloadmullvadvpn-726aec61b039aefa129dcc0c2c261c299f20bdc6.tar.xz
mullvadvpn-726aec61b039aefa129dcc0c2c261c299f20bdc6.zip
Workaround for net adapter alias issue on Windows 8
Diffstat (limited to 'windows/winnet/src')
-rw-r--r--windows/winnet/src/winnet/interfaceutils.cpp24
-rw-r--r--windows/winnet/src/winnet/winnet.vcxproj2
2 files changed, 24 insertions, 2 deletions
diff --git a/windows/winnet/src/winnet/interfaceutils.cpp b/windows/winnet/src/winnet/interfaceutils.cpp
index 202d9d0724..e64fbb376e 100644
--- a/windows/winnet/src/winnet/interfaceutils.cpp
+++ b/windows/winnet/src/winnet/interfaceutils.cpp
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "interfaceutils.h"
+#include "ncicontext.h"
#include "libcommon/error.h"
#include "libcommon/string.h"
#include <cstdint>
@@ -28,10 +29,29 @@ std::set<InterfaceUtils::NetworkAdapter> InterfaceUtils::GetAllAdapters()
std::set<NetworkAdapter> adapters;
+ NciContext nci;
+
for (auto it = (PIP_ADAPTER_ADDRESSES)&buffer[0]; nullptr != it; it = it->Next)
{
- adapters.emplace(NetworkAdapter(common::string::ToWide(it->AdapterName),
- it->Description, it->FriendlyName));
+ auto guid = std::string(it->AdapterName);
+ auto wguid = std::wstring(guid.begin(), guid.end());
+
+ IID guidObj = { 0 };
+ if (S_OK != IIDFromString(&wguid[0], &guidObj))
+ {
+ throw std::runtime_error("IIDFromString() failed");
+ }
+
+ try
+ {
+ std::wstring name = nci.getConnectionName(guidObj);
+
+ adapters.emplace(NetworkAdapter(common::string::ToWide(it->AdapterName),
+ it->Description, /*it->FriendlyName*/ name));
+ }
+ catch (...)
+ {
+ }
}
return adapters;
diff --git a/windows/winnet/src/winnet/winnet.vcxproj b/windows/winnet/src/winnet/winnet.vcxproj
index def37bc67d..5943ca53c8 100644
--- a/windows/winnet/src/winnet/winnet.vcxproj
+++ b/windows/winnet/src/winnet/winnet.vcxproj
@@ -27,6 +27,7 @@
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
+ <ClCompile Include="ncicontext.cpp" />
<ClCompile Include="networkadaptermonitor.cpp" />
<ClCompile Include="dllmain.cpp" />
<ClCompile Include="InterfacePair.cpp" />
@@ -41,6 +42,7 @@
<ClCompile Include="winnet.cpp" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="ncicontext.h" />
<ClInclude Include="networkadaptermonitor.h" />
<ClInclude Include="InterfacePair.h" />
<ClInclude Include="interfaceutils.h" />