summaryrefslogtreecommitdiffhomepage
path: root/windows/driverlogic/src/driverlogic.cpp
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-02-24 15:58:42 +0100
committerDavid Lönnhager <david.l@mullvad.net>2021-02-26 12:52:21 +0100
commit213d53618952114e316f3e8c5bd17da4dded84e2 (patch)
tree4b56fbe1b22b6ee44169527a4b415675b8fe86ae /windows/driverlogic/src/driverlogic.cpp
parent07c9d41f188f273c7d50e47518969f414773add5 (diff)
downloadmullvadvpn-213d53618952114e316f3e8c5bd17da4dded84e2.tar.xz
mullvadvpn-213d53618952114e316f3e8c5bd17da4dded84e2.zip
Add remove-by-guid function to driverlogic
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
-rw-r--r--windows/driverlogic/src/driverlogic.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp
index 4cd1a6640a..f849c828f2 100644
--- a/windows/driverlogic/src/driverlogic.cpp
+++ b/windows/driverlogic/src/driverlogic.cpp
@@ -759,7 +759,7 @@ std::optional<NetworkAdapter> FindAdapterByAlias(const std::set<NetworkAdapter>
return std::nullopt;
}
-bool RemoveNetDevice(const std::wstring &tapHardwareId, const std::wstring &guid)
+bool RemoveNetDevice(const std::optional<std::wstring> tapHardwareId, const std::wstring &guid)
{
bool deletedAdapter = false;
@@ -806,7 +806,7 @@ void RemoveNetAdapterByAlias(const std::wstring &hardwareId, const std::wstring
// and delete any adapter whose GUID matches that of the "Mullvad" adapter.
//
- if (!RemoveNetDevice(hardwareId, guid))
+ if (!RemoveNetDevice(std::make_optional(hardwareId), guid))
{
THROW_ERROR("The virtual adapter could not be removed");
}
@@ -1038,6 +1038,20 @@ int wmain(int argc, const wchar_t * argv[], const wchar_t * [])
RemoveNetAdapterByAlias(hardwareId, baseName);
}
+ else if (0 == _wcsicmp(argv[1], L"remove-device-by-guid"))
+ {
+ if (3 != argc)
+ {
+ goto INVALID_ARGUMENTS;
+ }
+
+ const wchar_t *guid = argv[2];
+
+ if (!RemoveNetDevice(std::nullopt, guid))
+ {
+ return ADAPTER_NOT_FOUND;
+ }
+ }
else if (0 == _wcsicmp(argv[1], L"device-exists"))
{
if (4 != argc)