summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-11-22 17:21:08 +0100
committerDavid Lönnhager <david.l@mullvad.net>2021-11-22 17:21:08 +0100
commit9a2fa96aa3d40c809d63a779243923ba88b3512a (patch)
tree58ca253e7fff1666f77dbb7e1a01202107503523
parent9147b6ed04c0ebe287a16c27c0e92d27c94090e7 (diff)
parentf1f2e0c44d570f80502e3aaff5368d81fcb6f4f6 (diff)
downloadmullvadvpn-9a2fa96aa3d40c809d63a779243923ba88b3512a.tar.xz
mullvadvpn-9a2fa96aa3d40c809d63a779243923ba88b3512a.zip
Merge branch 'win-remove-tap-workaround'
-rw-r--r--windows/libshared/src/libshared/network/interfaceutils.cpp38
-rw-r--r--windows/libshared/src/libshared/network/interfaceutils.h3
-rw-r--r--windows/windns/src/windns/windns.cpp12
3 files changed, 11 insertions, 42 deletions
diff --git a/windows/libshared/src/libshared/network/interfaceutils.cpp b/windows/libshared/src/libshared/network/interfaceutils.cpp
index fba4d71ba0..e381a2abca 100644
--- a/windows/libshared/src/libshared/network/interfaceutils.cpp
+++ b/windows/libshared/src/libshared/network/interfaceutils.cpp
@@ -9,7 +9,6 @@ namespace shared::network
{
InterfaceUtils::NetworkAdapter::NetworkAdapter(
- const common::network::Nci &nci,
const std::shared_ptr<std::vector<uint8_t>> addressesBuffer,
const IP_ADAPTER_ADDRESSES &entry
)
@@ -17,38 +16,7 @@ InterfaceUtils::NetworkAdapter::NetworkAdapter(
, m_entry(entry)
{
m_guid = common::string::ToWide(entry.AdapterName);
-
- try
- {
- //
- // FIXME:
- // Work around incorrect alias sometimes
- // being returned on Windows 8.
- //
- // Steps to reproduce:
- // 1. Install NDIS 6 TAP driver v9.00.00.21.
- // 2. Update driver to v9.24.2.601.
- // 3. Rename TAP adapter.
- //
- // GetAdaptersAddresses() returns a generic name
- // for the *first* adapter instead of the correct
- // one, whereas ConvertInterfaceAliasToLuid() and
- // ConvertInterfaceLuidToAlias() yield correct values.
- //
-
- IID guidObj = { 0 };
- if (S_OK != IIDFromString(&m_guid[0], &guidObj))
- {
- THROW_ERROR("IIDFromString() failed");
- }
-
- m_alias = nci.getConnectionName(guidObj);
- }
- catch (const std::exception &)
- {
- m_alias = entry.FriendlyName;
- }
-
+ m_alias = entry.FriendlyName;
m_name = entry.Description;
}
@@ -79,11 +47,9 @@ std::set<InterfaceUtils::NetworkAdapter> InterfaceUtils::GetAllAdapters(ULONG fa
std::set<NetworkAdapter> adapters;
- common::network::Nci nci;
-
for (auto it = addresses; nullptr != it; it = it->Next)
{
- adapters.emplace(NetworkAdapter(nci, buffer, *it));
+ adapters.emplace(NetworkAdapter(buffer, *it));
}
return adapters;
diff --git a/windows/libshared/src/libshared/network/interfaceutils.h b/windows/libshared/src/libshared/network/interfaceutils.h
index b23eb88475..0fff359d08 100644
--- a/windows/libshared/src/libshared/network/interfaceutils.h
+++ b/windows/libshared/src/libshared/network/interfaceutils.h
@@ -16,8 +16,6 @@
#include <netioapi.h>
// end
-#include <libcommon/network/nci.h>
-
namespace shared::network
{
@@ -49,7 +47,6 @@ public:
private:
NetworkAdapter(
- const common::network::Nci &nci,
const std::shared_ptr<std::vector<uint8_t>> addressesBuffer,
const IP_ADAPTER_ADDRESSES &entry
);
diff --git a/windows/windns/src/windns/windns.cpp b/windows/windns/src/windns/windns.cpp
index 72db7a00b8..26532f00e8 100644
--- a/windows/windns/src/windns/windns.cpp
+++ b/windows/windns/src/windns/windns.cpp
@@ -94,11 +94,17 @@ AdapterDnsAddresses GetAdapterDnsAddresses(const std::wstring &adapterAlias)
GAA_FLAG_SKIP_UNICAST | GAA_FLAG_SKIP_ANYCAST | GAA_FLAG_SKIP_MULTICAST
);
- for (const auto adapter : adapters)
+ NET_LUID luid;
+ if (NO_ERROR != ConvertInterfaceAliasToLuid(adapterAlias.c_str(), &luid))
{
- const auto guidObj = common::Guid::FromString(adapter.guid());
+ const auto err = std::wstring(L"Could not resolve LUID of interface: \"")
+ .append(adapterAlias).append(L"\"");
+ THROW_ERROR(common::string::ToAnsi(err).c_str());
+ }
- if (0 != _wcsicmp(adapter.alias().c_str(), adapterAlias.c_str()))
+ for (const auto adapter : adapters)
+ {
+ if (luid.Value != adapter.raw().Luid.Value)
{
continue;
}