Move out a utility function to Common/Net

This commit is contained in:
Henrik Rydgård 2025-01-09 09:23:33 +01:00
parent 5e50a1777a
commit 2a0e3b1084
14 changed files with 31 additions and 81 deletions

View file

@ -2389,8 +2389,6 @@ add_library(${CoreLibName} ${CoreLinkType}
Core/MIPS/MIPSAsm.h
Core/MIPS/MIPSTracer.cpp
Core/MIPS/MIPSTracer.h
Core/Net/InetCommon.cpp
Core/Net/InetCommon.h
Core/Net/NetResolver.cpp
Core/Net/NetResolver.h
Core/MemFault.cpp

View file

@ -111,6 +111,31 @@ void DNSResolveFree(addrinfo *res)
freeaddrinfo(res);
}
bool GetDefaultOutboundSockaddr(sockaddr_in& destSockaddrIn, socklen_t& destSocklen) {
auto fd = socket(AF_INET, SOCK_STREAM, 0);
if (fd < 0) {
ERROR_LOG(Log::sceNet, "getSockAddrFromDefaultSocket: Failed to open socket (%s)", strerror(socket_errno));
return false;
}
sockaddr_in connectingTo;
memset(&connectingTo, 0, sizeof(connectingTo));
connectingTo.sin_family = AF_INET;
connectingTo.sin_port = htons(53);
connectingTo.sin_addr.s_addr = 0x08080808;
if (connect(fd, (sockaddr*)&connectingTo, sizeof(connectingTo)) < 0) {
ERROR_LOG(Log::sceNet, "getSockAddrFromDefaultSocket: Failed to connect to Google (%s)", strerror(socket_errno));
closesocket(fd);
return false;
}
if (getsockname(fd, (sockaddr*)&destSockaddrIn, &destSocklen) < 0) {
ERROR_LOG(Log::sceNet, "getSockAddrFromDefaultSocket: Failed to execute getsockname (%s)", strerror(socket_errno));
closesocket(fd);
return false;
}
closesocket(fd);
return true;
}
bool GetIPList(std::vector<std::string> &IP4s) {
char ipstr[INET6_ADDRSTRLEN]; // We use IPv6 length since it's longer than IPv4
// getifaddrs first appeared in glibc 2.3, On Android officially supported since __ANDROID_API__ >= 24

View file

@ -4,6 +4,8 @@
#include <vector>
struct addrinfo;
typedef int socklen_t;
struct sockaddr_in;
namespace net {
@ -20,6 +22,7 @@ enum class DNSType {
bool DNSResolve(const std::string &host, const std::string &service, addrinfo **res, std::string &error, DNSType type = DNSType::ANY);
void DNSResolveFree(addrinfo *res);
bool GetIPList(std::vector<std::string>& IP4s);
bool GetDefaultOutboundSockaddr(sockaddr_in& destSockaddrIn, socklen_t& destSocklen);
int inet_pton(int af, const char* src, void* dst);
} // namespace net

View file

@ -630,7 +630,6 @@
<ClCompile Include="MIPS\x86\X64IRCompSystem.cpp" />
<ClCompile Include="MIPS\x86\X64IRCompVec.cpp" />
<ClCompile Include="MIPS\x86\X64IRJit.cpp" />
<ClCompile Include="Net\InetCommon.cpp" />
<ClCompile Include="Net\NetResolver.cpp" />
<ClCompile Include="Replay.cpp" />
<ClCompile Include="Compatibility.cpp" />
@ -1223,7 +1222,6 @@
<ClInclude Include="MIPS\RiscV\RiscVJit.h" />
<ClInclude Include="MIPS\RiscV\RiscVRegCache.h" />
<ClInclude Include="MIPS\x86\X64IRJit.h" />
<ClInclude Include="Net\InetCommon.h" />
<ClInclude Include="Net\NetResolver.h" />
<ClInclude Include="Replay.h" />
<ClInclude Include="Compatibility.h" />

View file

@ -1333,9 +1333,6 @@
<ClCompile Include="HLE\sceNetResolver.cpp">
<Filter>HLE\Libraries</Filter>
</ClCompile>
<ClCompile Include="Net\InetCommon.cpp">
<Filter>Net</Filter>
</ClCompile>
<ClCompile Include="Net\NetResolver.cpp">
<Filter>Net</Filter>
</ClCompile>
@ -2154,9 +2151,6 @@
<ClInclude Include="HLE\sceNetResolver.h">
<Filter>HLE\Libraries</Filter>
</ClInclude>
<ClInclude Include="Net\InetCommon.h">
<Filter>Net</Filter>
</ClInclude>
<ClInclude Include="Net\NetResolver.h">
<Filter>Net</Filter>
</ClInclude>

View file

@ -20,7 +20,6 @@
#include <algorithm>
#include "Common/Net/Resolve.h"
#include "Common/Net/SocketCompat.h"
#include "Core/Net/InetCommon.h"
#include "Common/Data/Text/Parsers.h"
#include "Common/Serialize/Serializer.h"

View file

@ -115,9 +115,6 @@ extern SceNetApctlInfoInternal netApctlInfo;
extern std::string defaultNetConfigName;
extern std::string defaultNetSSID;
template <typename I> std::string num2hex(I w, size_t hex_len = sizeof(I) << 1);
std::string error2str(u32 errorcode);
void Register_sceNet();
void Register_sceNetApctl();
void Register_sceWlanDrv();

View file

@ -22,9 +22,7 @@
#include <fcntl.h>
#endif
// TODO: fixme move Core/Net to Common/Net
#include "Common/Net/Resolve.h"
#include "Core/Net/InetCommon.h"
#include "Common/Data/Text/Parsers.h"
#include "Common/Serialize/Serializer.h"

View file

@ -1,40 +0,0 @@
// TODO: license
// TODO: fixme move Core/Net to Common/Net
#include "Common/Net/Resolve.h"
#include "Common/Net/SocketCompat.h"
#include "Core/Net/InetCommon.h"
#include "Core/Config.h"
#include "Core/HLE/HLE.h"
#include "Core/MemMapHelpers.h"
#include "Core/HLE/sceNp.h"
#if PPSSPP_PLATFORM(WINDOWS)
#define close closesocket
#endif
bool getDefaultOutboundSockaddr(sockaddr_in& destSockaddrIn, socklen_t& destSocklen) {
auto fd = socket(AF_INET, SOCK_STREAM, 0);
if (fd < 0) {
ERROR_LOG(Log::sceNet, "getSockAddrFromDefaultSocket: Failed to open socket (%s)", strerror(socket_errno));
return false;
}
sockaddr_in connectingTo;
memset(&connectingTo, 0, sizeof(connectingTo));
connectingTo.sin_family = AF_INET;
connectingTo.sin_port = htons(53);
connectingTo.sin_addr.s_addr = 0x08080808;
if (connect(fd, (sockaddr*) &connectingTo, sizeof(connectingTo)) < 0) {
ERROR_LOG(Log::sceNet, "getSockAddrFromDefaultSocket: Failed to connect to Google (%s)", strerror(socket_errno));
close(fd);
return false;
}
if (getsockname(fd, (sockaddr*) &destSockaddrIn, &destSocklen) < 0) {
ERROR_LOG(Log::sceNet, "getSockAddrFromDefaultSocket: Failed to execute getsockname (%s)", strerror(socket_errno));
close(fd);
return false;
}
close(fd);
return true;
}

View file

@ -1,12 +0,0 @@
#pragma once
#include "Core/HLE/HLE.h"
#if PPSSPP_PLATFORM(WINDOWS)
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <netinet/in.h>
#endif
bool getDefaultOutboundSockaddr(sockaddr_in& destSockaddrIn, socklen_t& destSocklen);

View file

@ -319,7 +319,6 @@
<ClInclude Include="..\..\Core\MIPS\x86\RegCacheFPU.h" />
<ClInclude Include="..\..\Core\MIPS\x86\X64IRJit.h" />
<ClInclude Include="..\..\Core\MIPS\x86\X64IRRegCache.h" />
<ClInclude Include="..\..\Core\Net\InetCommon.h" />
<ClInclude Include="..\..\Core\Net\NetResolver.h" />
<ClInclude Include="..\..\Core\Opcode.h" />
<ClInclude Include="..\..\Core\PSPLoaders.h" />
@ -620,7 +619,6 @@
<ClCompile Include="..\..\Core\MIPS\x86\X64IRCompVec.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\X64IRJit.cpp" />
<ClCompile Include="..\..\Core\MIPS\x86\X64IRRegCache.cpp" />
<ClCompile Include="..\..\Core\Net\InetCommon.cpp" />
<ClCompile Include="..\..\Core\Net\NetResolver.cpp" />
<ClCompile Include="..\..\Core\PSPLoaders.cpp" />
<ClCompile Include="..\..\Core\Reporting.cpp" />

View file

@ -1223,9 +1223,6 @@
<ClCompile Include="..\..\Core\HLE\sceNetResolver.cpp">
<Filter>HLE</Filter>
</ClCompile>
<ClCompile Include="..\..\Core\Net\InetCommon.cpp">
<Filter>Net</Filter>
</ClCompile>
<ClCompile Include="..\..\Core\Net\NetResolver.cpp">
<Filter>Net</Filter>
</ClCompile>
@ -1942,9 +1939,6 @@
<ClInclude Include="..\..\Core\HLE\sceNetResolver.h">
<Filter>HLE</Filter>
</ClInclude>
<ClInclude Include="..\..\Core\Net\InetCommon.h">
<Filter>Net</Filter>
</ClInclude>
<ClInclude Include="..\..\Core\Net\NetResolver.h">
<Filter>Net</Filter>
</ClInclude>

View file

@ -510,7 +510,6 @@ EXEC_AND_LIB_FILES := \
$(SRC)/Core/MIPS/IR/IRNativeCommon.cpp \
$(SRC)/Core/MIPS/IR/IRPassSimplify.cpp \
$(SRC)/Core/MIPS/IR/IRRegCache.cpp \
$(SRC)/Core/Net/InetCommon.cpp \
$(SRC)/Core/Net/NetResolver.cpp \
$(SRC)/GPU/Math3D.cpp \
$(SRC)/GPU/GPU.cpp \

View file

@ -816,8 +816,7 @@ SOURCES_CXX += \
$(COREDIR)/MemFault.cpp \
$(COREDIR)/MemMap.cpp \
$(COREDIR)/MemMapFunctions.cpp \
$(COREDIR)/Net/InetCommon.cpp \
$(COREDIR)/Net/NetResolver.cpp \
$(COREDIR)/Net/NetResolver.cpp \
$(COREDIR)/PSPLoaders.cpp \
$(COREDIR)/Replay.cpp \
$(COREDIR)/Reporting.cpp \