mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-06 09:22:35 +00:00
some fixes
This commit is contained in:
parent
da4b3b511f
commit
984375a1d4
@ -2,6 +2,7 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <common/singleton.h>
|
#include <common/singleton.h>
|
||||||
|
#include <core/libraries/error_codes.h>
|
||||||
#include <core/libraries/libs.h>
|
#include <core/libraries/libs.h>
|
||||||
#include "posix_net.h"
|
#include "posix_net.h"
|
||||||
|
|
||||||
@ -28,12 +29,12 @@ int PS4_SYSV_ABI posix_bind(int sockfd, const struct OrbisNetSockaddr* addr, soc
|
|||||||
}
|
}
|
||||||
int PS4_SYSV_ABI posix_listen(int sockfd, int backlog) {
|
int PS4_SYSV_ABI posix_listen(int sockfd, int backlog) {
|
||||||
auto* netcall = Common::Singleton<NetPosixInternal>::Instance();
|
auto* netcall = Common::Singleton<NetPosixInternal>::Instance();
|
||||||
int listen = netcall->net_listen(sockfd,backlog);
|
int listen = netcall->net_listen(sockfd, backlog);
|
||||||
// todo check for errors
|
// todo check for errors
|
||||||
return listen;
|
return listen;
|
||||||
}
|
}
|
||||||
int PS4_SYSV_ABI posix_accept(int sockfd, struct OrbisNetSockaddr* addr, socklen_t* addrlen) {
|
int PS4_SYSV_ABI posix_accept(int sockfd, struct OrbisNetSockaddr* addr, socklen_t* addrlen) {
|
||||||
return 0;
|
return ORBIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterNet(Core::Loader::SymbolsResolver* sym) {
|
void RegisterNet(Core::Loader::SymbolsResolver* sym) {
|
||||||
@ -51,6 +52,7 @@ int NetPosixInternal::net_socket(int domain, int type, int protocol) {
|
|||||||
s_socket sock = ::socket(domain, type, protocol);
|
s_socket sock = ::socket(domain, type, protocol);
|
||||||
auto id = ++next_id;
|
auto id = ++next_id;
|
||||||
socks.emplace(id, sock);
|
socks.emplace(id, sock);
|
||||||
|
LOG_INFO(Lib_Kernel, "socket created with id = {}", id);
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,9 +60,9 @@ static void convertOrbisNetSockaddrToPosix(const OrbisNetSockaddr* src, sockaddr
|
|||||||
if (src == nullptr || dst == nullptr)
|
if (src == nullptr || dst == nullptr)
|
||||||
return;
|
return;
|
||||||
memset(dst, 0, sizeof(sockaddr));
|
memset(dst, 0, sizeof(sockaddr));
|
||||||
const OrbisNetSockaddr* src_in = (const OrbisNetSockaddr*)src;
|
const OrbisNetSockaddrIn* src_in = (const OrbisNetSockaddrIn*)src;
|
||||||
sockaddr_in* dst_in = (sockaddr_in*)dst;
|
sockaddr_in* dst_in = (sockaddr_in*)dst;
|
||||||
dst_in->sin_family = src_in->sa_family;
|
dst_in->sin_family = src_in->sin_family;
|
||||||
dst_in->sin_port = src_in->sin_port;
|
dst_in->sin_port = src_in->sin_port;
|
||||||
memcpy(&dst_in->sin_addr, &src_in->sin_addr, 4);
|
memcpy(&dst_in->sin_addr, &src_in->sin_addr, 4);
|
||||||
}
|
}
|
||||||
@ -81,7 +83,7 @@ int NetPosixInternal::net_listen(int sockfd, int backlog) {
|
|||||||
const auto it = socks.find(sockfd);
|
const auto it = socks.find(sockfd);
|
||||||
if (it != socks.end()) {
|
if (it != socks.end()) {
|
||||||
s_socket sock = it->second;
|
s_socket sock = it->second;
|
||||||
return ::listen(sock,backlog);
|
return ::listen(sock, backlog);
|
||||||
}
|
}
|
||||||
return 0; // TODO logging and error return
|
return 0; // TODO logging and error return
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,12 @@ namespace Libraries::Kernel {
|
|||||||
struct OrbisNetSockaddr {
|
struct OrbisNetSockaddr {
|
||||||
u8 sa_len;
|
u8 sa_len;
|
||||||
u8 sa_family;
|
u8 sa_family;
|
||||||
|
char sa_data[14];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNetSockaddrIn {
|
||||||
|
u8 sin_len;
|
||||||
|
u8 sin_family;
|
||||||
u16 sin_port;
|
u16 sin_port;
|
||||||
u32 sin_addr;
|
u32 sin_addr;
|
||||||
u16 sin_vport;
|
u16 sin_vport;
|
||||||
|
@ -24,6 +24,12 @@ using OrbisNetId = s32;
|
|||||||
struct OrbisNetSockaddr {
|
struct OrbisNetSockaddr {
|
||||||
u8 sa_len;
|
u8 sa_len;
|
||||||
u8 sa_family;
|
u8 sa_family;
|
||||||
|
char sa_data[14];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OrbisNetSockaddrIn {
|
||||||
|
u8 sin_len;
|
||||||
|
u8 sin_family;
|
||||||
u16 sin_port;
|
u16 sin_port;
|
||||||
u32 sin_addr;
|
u32 sin_addr;
|
||||||
u16 sin_vport;
|
u16 sin_vport;
|
||||||
|
Loading…
Reference in New Issue
Block a user