summaryrefslogtreecommitdiffhomepage
path: root/windows/driverlogic/src/driverlogic.cpp
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2020-09-28 18:34:19 +0200
committerDavid Lönnhager <david.l@mullvad.net>2020-11-24 18:50:03 +0100
commit5b6ae2a5ba273f0a78012140fb531e325a944f74 (patch)
treeb301882cd2a8777e277776b3276342f7bf1e0d78 /windows/driverlogic/src/driverlogic.cpp
parentf71f4c0f650a7d83008ac6e9d4b31019d50d6577 (diff)
downloadmullvadvpn-5b6ae2a5ba273f0a78012140fb531e325a944f74.tar.xz
mullvadvpn-5b6ae2a5ba273f0a78012140fb531e325a944f74.zip
Generalize driverlogic
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
-rw-r--r--windows/driverlogic/src/driverlogic.cpp30
1 files changed, 15 insertions, 15 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp
index 989ee70cf5..e38b7b71a2 100644
--- a/windows/driverlogic/src/driverlogic.cpp
+++ b/windows/driverlogic/src/driverlogic.cpp
@@ -504,7 +504,7 @@ std::set<NetworkAdapter> GetNetworkAdapters(const std::optional<std::wstring> ha
return adapters;
}
-void CreateTapDevice()
+void CreateNetDevice(const std::wstring &hardwareId)
{
GUID classGuid = GUID_DEVCLASS_NET;
@@ -542,8 +542,8 @@ void CreateTapDevice()
deviceInfoSet,
&devInfoData,
SPDRP_HARDWAREID,
- reinterpret_cast<const BYTE *>(TAP_HARDWARE_ID),
- sizeof(TAP_HARDWARE_ID) - sizeof(L'\0')
+ reinterpret_cast<const BYTE *>(hardwareId.c_str()),
+ sizeof(wchar_t) * hardwareId.size()
);
if (FALSE == status)
@@ -565,7 +565,7 @@ void CreateTapDevice()
THROW_SETUPAPI_ERROR(GetLastError(), "SetupDiCallClassInstaller");
}
- Log(L"Created new TAP adapter successfully");
+ Log(L"Created new network adapter successfully");
}
void UpdateTapDriver(const std::wstring &infPath)
@@ -644,13 +644,13 @@ ATTEMPT_UPDATE:
// NOTE: Enumerating adapters first and picking the next free name is not sufficient,
// because the broken TAP may not be included.
//
-void RenameAdapterToMullvad(const NetworkAdapter &adapter)
+void RenameAdapter(const NetworkAdapter &adapter, const std::wstring &baseName)
{
common::network::Nci nci;
try
{
- nci.setConnectionName(common::Guid::FromString(adapter.guid), TAP_BASE_ALIAS);
+ nci.setConnectionName(common::Guid::FromString(adapter.guid), baseName.c_str());
return;
}
catch (...)
@@ -660,7 +660,7 @@ void RenameAdapterToMullvad(const NetworkAdapter &adapter)
for (int i = 1; i < 10; i++)
{
std::wstringstream ss;
- ss << TAP_BASE_ALIAS << L"-" << i;
+ ss << baseName << L"-" << i;
try
{
@@ -672,7 +672,7 @@ void RenameAdapterToMullvad(const NetworkAdapter &adapter)
}
}
- THROW_ERROR("Exhausted TAP adapter namespace");
+ THROW_ERROR("Unable to rename network adapter");
}
std::optional<NetworkAdapter> FindMullvadAdapter(const std::set<NetworkAdapter> &tapAdapters)
@@ -726,19 +726,19 @@ std::optional<NetworkAdapter> FindMullvadAdapter(const std::set<NetworkAdapter>
return std::nullopt;
}
-NetworkAdapter FindBrandedTap()
+NetworkAdapter FindNetAdapter(const std::wstring &hardwareId)
{
- std::set<NetworkAdapter> added = GetNetworkAdapters(TAP_HARDWARE_ID);
+ std::set<NetworkAdapter> added = GetNetworkAdapters(hardwareId);
if (added.empty())
{
- THROW_ERROR("Could not identify TAP");
+ THROW_ERROR("Could not identify virtual network adapter");
}
else if (added.size() > 1)
{
- LogAdapters(L"Enumerable network TAP adapters", added);
+ LogAdapters(L"Enumerable virtual network adapters", added);
- THROW_ERROR("Identified more TAP adapters than expected");
+ THROW_ERROR("Identified more network adapters than expected");
}
return *added.begin();
@@ -837,9 +837,9 @@ int wmain(int argc, const wchar_t * argv[], const wchar_t * [])
goto INVALID_ARGUMENTS;
}
- CreateTapDevice();
+ CreateNetDevice(TAP_HARDWARE_ID);
UpdateTapDriver(argv[2]);
- RenameAdapterToMullvad(FindBrandedTap());
+ RenameAdapter(FindNetAdapter(TAP_HARDWARE_ID), TAP_BASE_ALIAS);
}
else if (0 == _wcsicmp(argv[1], L"update"))
{