diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index d2a9f50fc6..2bdda230e5 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -148,8 +148,9 @@ set(SRCS ActionReplay.cpp IOS/FS/FS.cpp IOS/Network/Config.cpp IOS/Network/ICMPLin.cpp - IOS/Network/Socket.cpp + IOS/Network/MACUtils.cpp IOS/Network/Net.cpp + IOS/Network/Socket.cpp IOS/Network/SSL.cpp IOS/Network/KD/NetKDRequest.cpp IOS/Network/KD/NetKDTime.cpp diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj index d91d0c3ad7..5669289562 100644 --- a/Source/Core/Core/Core.vcxproj +++ b/Source/Core/Core/Core.vcxproj @@ -180,8 +180,9 @@ - + + @@ -420,8 +421,9 @@ - + + diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters index 5b84d0e0df..4158f106e2 100644 --- a/Source/Core/Core/Core.vcxproj.filters +++ b/Source/Core/Core/Core.vcxproj.filters @@ -758,6 +758,9 @@ IOS + + IOS\Network + IOS\Network @@ -1353,6 +1356,9 @@ IOS\Network + + IOS\Network + IOS\Network diff --git a/Source/Core/Core/IOS/Network/MACUtils.cpp b/Source/Core/Core/IOS/Network/MACUtils.cpp new file mode 100644 index 0000000000..fabc58ec74 --- /dev/null +++ b/Source/Core/Core/IOS/Network/MACUtils.cpp @@ -0,0 +1,50 @@ +// Copyright 2017 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "Core/IOS/Network/MACUtils.h" + +#include + +#include "Common/CommonTypes.h" +#include "Common/Logging/Log.h" +#include "Common/Network.h" + +#include "Core/ConfigManager.h" +#include "Core/Core.h" + +namespace IOS +{ +namespace Net +{ +static void SaveMACAddress(const u8* mac) +{ + SConfig::GetInstance().m_WirelessMac = Common::MacAddressToString(mac); + SConfig::GetInstance().SaveSettings(); +} + +void GetMACAddress(u8* mac) +{ + // Parse MAC address from config, and generate a new one if it doesn't + // exist or can't be parsed. + std::string wireless_mac = SConfig::GetInstance().m_WirelessMac; + + if (Core::g_want_determinism) + wireless_mac = "12:34:56:78:9a:bc"; + + if (!Common::StringToMacAddress(wireless_mac, mac)) + { + Common::GenerateMacAddress(Common::MACConsumer::IOS, mac); + SaveMACAddress(mac); + if (!wireless_mac.empty()) + { + ERROR_LOG(IOS_NET, "The MAC provided (%s) is invalid. We have " + "generated another one for you.", + Common::MacAddressToString(mac).c_str()); + } + } + + INFO_LOG(IOS_NET, "Using MAC address: %s", Common::MacAddressToString(mac).c_str()); +} +} // namespace Net +} // namespace IOS diff --git a/Source/Core/Core/IOS/Network/MACUtils.h b/Source/Core/Core/IOS/Network/MACUtils.h new file mode 100644 index 0000000000..7cc055d6fb --- /dev/null +++ b/Source/Core/Core/IOS/Network/MACUtils.h @@ -0,0 +1,15 @@ +// Copyright 2017 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include "Common/CommonTypes.h" + +namespace IOS +{ +namespace Net +{ +void GetMACAddress(u8* mac); +} // namespace Net +} // namespace IOS diff --git a/Source/Core/Core/IOS/Network/Net.cpp b/Source/Core/Core/IOS/Network/Net.cpp index f080079b12..751dc9fb6e 100644 --- a/Source/Core/Core/IOS/Network/Net.cpp +++ b/Source/Core/Core/IOS/Network/Net.cpp @@ -24,10 +24,10 @@ #include "Common/Logging/Log.h" #include "Common/Network.h" #include "Common/StringUtil.h" -#include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/HW/Memmap.h" #include "Core/IOS/Network/ICMP.h" +#include "Core/IOS/Network/MACUtils.h" #include "Core/IOS/Network/Socket.h" #ifdef _WIN32 @@ -62,35 +62,6 @@ namespace HLE { namespace Device { -static void SaveMacAddress(u8* mac) -{ - SConfig::GetInstance().m_WirelessMac = Common::MacAddressToString(mac); - SConfig::GetInstance().SaveSettings(); -} - -static void GetMacAddress(u8* mac) -{ - // Parse MAC address from config, and generate a new one if it doesn't - // exist or can't be parsed. - std::string wireless_mac = SConfig::GetInstance().m_WirelessMac; - - if (Core::g_want_determinism) - wireless_mac = "12:34:56:78:9a:bc"; - - if (!Common::StringToMacAddress(wireless_mac, mac)) - { - Common::GenerateMacAddress(Common::MACConsumer::IOS, mac); - SaveMacAddress(mac); - if (!wireless_mac.empty()) - { - ERROR_LOG(IOS_NET, "The MAC provided (%s) is invalid. We have " - "generated another one for you.", - Common::MacAddressToString(mac).c_str()); - } - } - INFO_LOG(IOS_NET, "Using MAC address: %s", Common::MacAddressToString(mac).c_str()); -} - // ********************************************************************************** // Handle /dev/net/ncd/manage requests NetNCDManage::NetNCDManage(u32 device_id, const std::string& device_name) @@ -146,7 +117,7 @@ IPCCommandResult NetNCDManage::IOCtlV(const IOCtlVRequest& request) INFO_LOG(IOS_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETWIRELESSMACADDRESS"); u8 address[Common::MAC_ADDRESS_SIZE]; - GetMacAddress(address); + IOS::Net::GetMACAddress(address); Memory::CopyToEmu(request.io_vectors.at(1).address, address, sizeof(address)); break; @@ -215,7 +186,7 @@ IPCCommandResult NetWDCommand::IOCtlV(const IOCtlVRequest& request) info->ntr_allowed_channels = Common::swap16(0xfffe); u8 address[Common::MAC_ADDRESS_SIZE]; - GetMacAddress(address); + IOS::Net::GetMACAddress(address); memcpy(info->mac, address, sizeof(info->mac)); } break; @@ -930,7 +901,7 @@ IPCCommandResult NetIPTop::IOCtlV(const IOCtlVRequest& request) case 0x1004: // mac address u8 address[Common::MAC_ADDRESS_SIZE]; - GetMacAddress(address); + IOS::Net::GetMACAddress(address); Memory::CopyToEmu(request.io_vectors[0].address, address, sizeof(address)); break;