diff options
| author | David Lönnhager <david.l@mullvad.net> | 2020-09-29 13:37:25 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2020-11-24 18:50:04 +0100 |
| commit | 5e56bfe1e7990bdd1cd2c294f97689738cdebb3e (patch) | |
| tree | 4f17692d81019972946f57b0b7cd4c32d19f2f35 /windows/driverlogic/src/driverlogic.cpp | |
| parent | af6a5af32e2363b75bfb1e58a5f3e8ea380dccf9 (diff) | |
| download | mullvadvpn-5e56bfe1e7990bdd1cd2c294f97689738cdebb3e.tar.xz mullvadvpn-5e56bfe1e7990bdd1cd2c294f97689738cdebb3e.zip | |
Only create wintun adapter if none exists
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
| -rw-r--r-- | windows/driverlogic/src/driverlogic.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp index 25487d8481..08f0e97883 100644 --- a/windows/driverlogic/src/driverlogic.cpp +++ b/windows/driverlogic/src/driverlogic.cpp @@ -34,7 +34,8 @@ constexpr std::chrono::milliseconds REGISTRY_GET_TIMEOUT_MS{ 10000 }; enum ReturnCodes { GENERAL_SUCCESS = 0, - GENERAL_ERROR = -1 + GENERAL_ERROR = -1, + ADAPTER_NOT_FOUND = -2 }; struct NetworkAdapter @@ -917,6 +918,24 @@ int wmain(int argc, const wchar_t * argv[], const wchar_t * []) RemoveNetAdapterByAlias(hardwareId, baseName); } + else if (0 == _wcsicmp(argv[1], L"device-exists")) + { + if (4 != argc) + { + goto INVALID_ARGUMENTS; + } + + const wchar_t *hardwareId = argv[2]; + const wchar_t *baseName = argv[3]; + + const auto tapAdapters = GetNetworkAdapters(hardwareId); + const auto adapter = FindAdapterByAlias(tapAdapters, baseName); + + if (!adapter.has_value()) + { + return ADAPTER_NOT_FOUND; + } + } else if (0 == _wcsicmp(argv[1], L"remove")) { if (3 != argc) |
