diff options
| author | Odd Stranne <odd@mullvad.net> | 2019-04-16 12:05:21 +0200 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2019-04-17 14:10:38 +0200 |
| commit | 9ccc27bb67e29f55333187ea2949b8a307665c0a (patch) | |
| tree | e3d46aa1bce5599583166392f6e310100478ed9e /windows | |
| parent | 7feb5f4c7517b7b125a60f32b201998950d8112f (diff) | |
| download | mullvadvpn-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.cpp | 37 |
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; } |
