diff options
| author | David Lönnhager <david.l@mullvad.net> | 2020-02-04 10:48:38 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2020-02-04 14:52:42 +0100 |
| commit | 7dd5dee62bb4b461a839c5a3e38cfb08b4bb25c8 (patch) | |
| tree | f537e387dc35bce1f67813f11a1dedf25e8484ce /windows/driverlogic/src/driverlogic.cpp | |
| parent | 83038a2319fc44f8d909be45be51a4d7a450d9c7 (diff) | |
| download | mullvadvpn-7dd5dee62bb4b461a839c5a3e38cfb08b4bb25c8.tar.xz mullvadvpn-7dd5dee62bb4b461a839c5a3e38cfb08b4bb25c8.zip | |
Add removal function to driverlogic
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
| -rw-r--r-- | windows/driverlogic/src/driverlogic.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp index 7798603ec9..003b123346 100644 --- a/windows/driverlogic/src/driverlogic.cpp +++ b/windows/driverlogic/src/driverlogic.cpp @@ -558,6 +558,25 @@ NetworkAdapter FindBrandedTap() return *added.begin(); } +void RemoveTapDriver(const std::wstring &tapHardwareId) +{ + ForEachDevice(tapHardwareId, [&](HDEVINFO devInfo, PSP_DEVINFO_DATA devInfoData) { + try + { + DeleteDevice(devInfo, devInfoData); + } + catch (const std::exception & e) + { + // + // Skip this adapter + // + + std::cerr << "Skipping TAP adapter due to exception caught while iterating: " + << e.what() << std::endl; + } + }); +} + enum class DeletionResult { NO_REMAINING_TAP_ADAPTERS, @@ -635,6 +654,15 @@ int wmain(int argc, const wchar_t * argv[], const wchar_t * []) UpdateTapDriver(argv[2]); } + else if (0 == _wcsicmp(argv[1], L"remove")) + { + if (3 != argc) + { + goto INVALID_ARGUMENTS; + } + + RemoveTapDriver(argv[2]); + } else if (0 == _wcsicmp(argv[1], L"remove-vanilla-tap")) { switch (DeleteVanillaMullvadAdapter()) |
