// DVM: S: Add loopback adapter
auto currIpAdapterInfo = m_pInfo;
IP_ADAPTER_INFO* parentIpAdapterInfo = nullptr;
while (currIpAdapterInfo != nullptr)
{
parentIpAdapterInfo =
currIpAdapterInfo;
currIpAdapterInfo =
currIpAdapterInfo->Next;
}
// ReSharper disable once CppLocalVariableMayBeConst
bool addLoopbackAdapter = true;
if (addLoopbackAdapter &&
parentIpAdapterInfo != nullptr)
{
IP_ADAPTER_INFO* loopbackIpAdapterInfo =
new IP_ADAPTER_INFO;
loopbackIpAdapterInfo->Next = nullptr;
loopbackIpAdapterInfo->ComboIndex = 999;
strcpy(loopbackIpAdapterInfo->AdapterName, _T("Loopback"));
strcpy(loopbackIpAdapterInfo->Description, _T("Loopback Pseudo-Interface"));
// Hw address length
loopbackIpAdapterInfo->AddressLength = 6;
// Hw address
// 2, 0, 76, 79, 79, 80, 0, 0 - '\x2', '\0', "LOOP", '\0', '\0'
//memset(loopbackIpAdapterInfo->Address, 0, sizeof(loopbackIpAdapterInfo->Address));
loopbackIpAdapterInfo->Address[0] = '\x2';
loopbackIpAdapterInfo->Address[1] = '\0';
loopbackIpAdapterInfo->Address[2] = 127;
loopbackIpAdapterInfo->Address[3] = 4;
loopbackIpAdapterInfo->Address[4] = 0;
loopbackIpAdapterInfo->Address[5] = 2;
loopbackIpAdapterInfo->Address[6] = 0;
loopbackIpAdapterInfo->Address[7] = 0;
//loopbackIpAdapterInfo->Address[0] = '\x2';
//loopbackIpAdapterInfo->Address[1] = '\0';
//loopbackIpAdapterInfo->Address[2] = 'L';
//loopbackIpAdapterInfo->Address[3] = 'O';
//loopbackIpAdapterInfo->Address[4] = 'O';
//loopbackIpAdapterInfo->Address[5] = 'P';
//loopbackIpAdapterInfo->Address[6] = '\0';
//loopbackIpAdapterInfo->Address[7] = '\0';
loopbackIpAdapterInfo->Index = 21; // ???
loopbackIpAdapterInfo->Type = 71; // ??
loopbackIpAdapterInfo->DhcpEnabled = 0;
loopbackIpAdapterInfo->CurrentIpAddress = nullptr;
loopbackIpAdapterInfo->IpAddressList.Next = nullptr;
strcpy(loopbackIpAdapterInfo->IpAddressList.IpAddress.String, _T("127.4.0.2"));
strcpy(loopbackIpAdapterInfo->IpAddressList.IpMask.String, _T("0.0.0.0"));
loopbackIpAdapterInfo->IpAddressList.Context = 0;
loopbackIpAdapterInfo->GatewayList.Next = nullptr;
strcpy(loopbackIpAdapterInfo->GatewayList.IpAddress.String, _T("0.0.0.0"));
strcpy(loopbackIpAdapterInfo->GatewayList.IpMask.String, _T("255.255.255.255"));
loopbackIpAdapterInfo->GatewayList.Context = 0;
loopbackIpAdapterInfo->DhcpServer.Next = nullptr;
loopbackIpAdapterInfo->DhcpServer.IpAddress.String[0] = '\0';
loopbackIpAdapterInfo->DhcpServer.IpMask.String[0] = '\0';
loopbackIpAdapterInfo->DhcpServer.Context = 0;
loopbackIpAdapterInfo->HaveWins = 0;
loopbackIpAdapterInfo->PrimaryWinsServer.Next = nullptr;
loopbackIpAdapterInfo->PrimaryWinsServer.IpAddress.String[0] = '\0';
loopbackIpAdapterInfo->PrimaryWinsServer.IpMask.String[0] = '\0';
loopbackIpAdapterInfo->PrimaryWinsServer.Context = 0;
loopbackIpAdapterInfo->SecondaryWinsServer.Next = nullptr;
loopbackIpAdapterInfo->SecondaryWinsServer.IpAddress.String[0] = '\0';
loopbackIpAdapterInfo->SecondaryWinsServer.IpMask.String[0] = '\0';
loopbackIpAdapterInfo->SecondaryWinsServer.Context = 0;
loopbackIpAdapterInfo->LeaseObtained = 0;
loopbackIpAdapterInfo->LeaseExpires = 103188859728;
parentIpAdapterInfo->Next = loopbackIpAdapterInfo;
}
// DVM: E: Add loopback adapter