mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-28 13:56:59 +01:00
network: implement Linux getsockname
This commit is contained in:
+5
-12
@@ -1055,8 +1055,7 @@ static int ConvertGuestSockaddr(const void* addr, uint32_t addrlen, sockaddr_sto
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(_WIN32)
|
static int ConvertHostSockaddr(const sockaddr_storage* addr, SocketLength addrlen, void* out,
|
||||||
static int ConvertHostSockaddr(const sockaddr_storage* addr, int addrlen, void* out,
|
|
||||||
uint32_t* out_len) {
|
uint32_t* out_len) {
|
||||||
EXIT_IF(addr == nullptr);
|
EXIT_IF(addr == nullptr);
|
||||||
EXIT_IF(out_len == nullptr);
|
EXIT_IF(out_len == nullptr);
|
||||||
@@ -1066,7 +1065,8 @@ static int ConvertHostSockaddr(const sockaddr_storage* addr, int addrlen, void*
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (addr->ss_family != AF_INET || addrlen < static_cast<int>(sizeof(sockaddr_in))) {
|
if (addr->ss_family != AF_INET ||
|
||||||
|
addrlen < static_cast<SocketLength>(sizeof(sockaddr_in))) {
|
||||||
*Posix::GetErrorAddr() = Posix::POSIX_EOPNOTSUPP;
|
*Posix::GetErrorAddr() = Posix::POSIX_EOPNOTSUPP;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -1088,7 +1088,6 @@ static int ConvertHostSockaddr(const sockaddr_storage* addr, int addrlen, void*
|
|||||||
*out_len = guest_addrlen;
|
*out_len = guest_addrlen;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static bool GetSocketBackend(int guest_fd, NativeSocket* out) {
|
static bool GetSocketBackend(int guest_fd, NativeSocket* out) {
|
||||||
EXIT_IF(out == nullptr);
|
EXIT_IF(out == nullptr);
|
||||||
@@ -1851,19 +1850,13 @@ int KYTY_SYSV_ABI Getsockname(int s, void* addr, uint32_t* addrlen) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
sockaddr_storage host_addr {};
|
sockaddr_storage host_addr {};
|
||||||
int host_addrlen = sizeof(host_addr);
|
SocketLength host_addrlen = sizeof(host_addr);
|
||||||
if (::getsockname(socket, reinterpret_cast<sockaddr*>(&host_addr), &host_addrlen) ==
|
if (::getsockname(socket, reinterpret_cast<sockaddr*>(&host_addr), &host_addrlen) != 0) {
|
||||||
SOCKET_ERROR) {
|
|
||||||
return SetHostSocketError();
|
return SetHostSocketError();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ConvertHostSockaddr(&host_addr, host_addrlen, addr, addrlen);
|
return ConvertHostSockaddr(&host_addr, host_addrlen, addr, addrlen);
|
||||||
#else
|
|
||||||
*Posix::GetErrorAddr() = Posix::POSIX_ENOSYS;
|
|
||||||
return -1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int KYTY_SYSV_ABI Getsockopt(int s, int level, int optname, void* optval, uint32_t* optlen) {
|
int KYTY_SYSV_ABI Getsockopt(int s, int level, int optname, void* optval, uint32_t* optlen) {
|
||||||
|
|||||||
Reference in New Issue
Block a user