summaryrefslogtreecommitdiffhomepage
path: root/windows/nsis-plugins/src/driverlogic/context.cpp
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2019-04-18 14:46:39 +0200
committerOdd Stranne <odd@mullvad.net>2019-04-18 14:46:39 +0200
commit7fdc2f84a24ee25ab74dbfdfa000600034c78525 (patch)
tree12340daab96f74ac64cd733b3c3252d623d19f72 /windows/nsis-plugins/src/driverlogic/context.cpp
parenta0fe634b812e84a69a481c07da01381ab7f02622 (diff)
parentf11d1e7c18647707d42056d7dec91c6b730f9e26 (diff)
downloadmullvadvpn-7fdc2f84a24ee25ab74dbfdfa000600034c78525.tar.xz
mullvadvpn-7fdc2f84a24ee25ab74dbfdfa000600034c78525.zip
Merge branch 'tap-renaming'
Diffstat (limited to 'windows/nsis-plugins/src/driverlogic/context.cpp')
-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;
}