summaryrefslogtreecommitdiffhomepage
path: root/windows
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2019-04-16 12:05:21 +0200
committerOdd Stranne <odd@mullvad.net>2019-04-17 14:10:38 +0200
commit9ccc27bb67e29f55333187ea2949b8a307665c0a (patch)
treee3d46aa1bce5599583166392f6e310100478ed9e /windows
parent7feb5f4c7517b7b125a60f32b201998950d8112f (diff)
downloadmullvadvpn-9ccc27bb67e29f55333187ea2949b8a307665c0a.tar.xz
mullvadvpn-9ccc27bb67e29f55333187ea2949b8a307665c0a.zip
Make driverlogic module aware of updated TAP naming scheme
Diffstat (limited to 'windows')
-rw-r--r--windows/nsis-plugins/src/driverlogic/context.cpp37
1 files changed, 35 insertions, 2 deletions
diff --git a/windows/nsis-plugins/src/driverlogic/context.cpp b/windows/nsis-plugins/src/driverlogic/context.cpp
index d0ad9dfb67..13cb781863 100644
--- a/windows/nsis-plugins/src/driverlogic/context.cpp
+++ b/windows/nsis-plugins/src/driverlogic/context.cpp
@@ -10,6 +10,8 @@
#include <vector>
#include <list>
#include <stdexcept>
+#include <sstream>
+#include <algorithm>
namespace
{
@@ -100,9 +102,40 @@ Context::BaselineStatus Context::establishBaseline()
return BaselineStatus::NO_TAP_ADAPTERS_PRESENT;
}
- for (const auto &adapter : tapAdapters)
+ //
+ // Look for TAP adapter with alias "Mullvad".
+ //
+
+ auto findByAlias = [](const std::set<NetworkAdapter> &adapters, const std::wstring &alias)
{
- if (0 == _wcsicmp(adapter.alias.c_str(), L"mullvad"))
+ const auto it = std::find_if(adapters.begin(), adapters.end(), [&alias](const NetworkAdapter &candidate)
+ {
+ return 0 == _wcsicmp(candidate.alias.c_str(), alias.c_str());
+ });
+
+ return it != adapters.end();
+ };
+
+ static const wchar_t baseAlias[] = L"Mullvad";
+
+ if (findByAlias(tapAdapters, baseAlias))
+ {
+ return BaselineStatus::MULLVAD_ADAPTER_PRESENT;
+ }
+
+ //
+ // Look for TAP adapter with alias "Mullvad-1", "Mullvad-2", etc.
+ //
+
+ for (auto i = 0; i < 10; ++i)
+ {
+ std::wstringstream ss;
+
+ ss << baseAlias << L"-" << i;
+
+ const auto alias = ss.str();
+
+ if (findByAlias(tapAdapters, alias))
{
return BaselineStatus::MULLVAD_ADAPTER_PRESENT;
}