Some poll changes and changed INFO to WARN, also commented out POLL debug as it was way too much. Made all net funcs non-blocking, due to stupid Skylanders :D
This commit is contained in:
parent
f9979701e1
commit
0cf3222e68
|
@ -96,7 +96,7 @@ CWII_IPC_HLE_Device_net_kd_request::~CWII_IPC_HLE_Device_net_kd_request()
|
||||||
|
|
||||||
bool CWII_IPC_HLE_Device_net_kd_request::Open(u32 _CommandAddress, u32 _Mode)
|
bool CWII_IPC_HLE_Device_net_kd_request::Open(u32 _CommandAddress, u32 _Mode)
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: Open");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: Open");
|
||||||
Memory::Write_U32(GetDeviceID(), _CommandAddress + 4);
|
Memory::Write_U32(GetDeviceID(), _CommandAddress + 4);
|
||||||
m_Active = true;
|
m_Active = true;
|
||||||
return true;
|
return true;
|
||||||
|
@ -104,7 +104,7 @@ bool CWII_IPC_HLE_Device_net_kd_request::Open(u32 _CommandAddress, u32 _Mode)
|
||||||
|
|
||||||
bool CWII_IPC_HLE_Device_net_kd_request::Close(u32 _CommandAddress, bool _bForce)
|
bool CWII_IPC_HLE_Device_net_kd_request::Close(u32 _CommandAddress, bool _bForce)
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: Close");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: Close");
|
||||||
if (!_bForce)
|
if (!_bForce)
|
||||||
Memory::Write_U32(0, _CommandAddress + 4);
|
Memory::Write_U32(0, _CommandAddress + 4);
|
||||||
m_Active = false;
|
m_Active = false;
|
||||||
|
@ -124,37 +124,37 @@ bool CWII_IPC_HLE_Device_net_kd_request::IOCtl(u32 _CommandAddress)
|
||||||
{
|
{
|
||||||
case IOCTL_NWC24_SUSPEND_SCHEDULAR:
|
case IOCTL_NWC24_SUSPEND_SCHEDULAR:
|
||||||
// NWC24iResumeForCloseLib from NWC24SuspendScheduler (Input: none, Output: 32 bytes)
|
// NWC24iResumeForCloseLib from NWC24SuspendScheduler (Input: none, Output: 32 bytes)
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_SUSPEND_SCHEDULAR - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_SUSPEND_SCHEDULAR - NI");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_NWC24_EXEC_TRY_SUSPEND_SCHEDULAR: // NWC24iResumeForCloseLib
|
case IOCTL_NWC24_EXEC_TRY_SUSPEND_SCHEDULAR: // NWC24iResumeForCloseLib
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_EXEC_TRY_SUSPEND_SCHEDULAR - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_EXEC_TRY_SUSPEND_SCHEDULAR - NI");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_NWC24_EXEC_RESUME_SCHEDULAR : // NWC24iResumeForCloseLib
|
case IOCTL_NWC24_EXEC_RESUME_SCHEDULAR : // NWC24iResumeForCloseLib
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_EXEC_RESUME_SCHEDULAR - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_EXEC_RESUME_SCHEDULAR - NI");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_NWC24_STARTUP_SOCKET: // NWC24iStartupSocket
|
case IOCTL_NWC24_STARTUP_SOCKET: // NWC24iStartupSocket
|
||||||
Memory::Write_U32(0, BufferOut);
|
Memory::Write_U32(0, BufferOut);
|
||||||
Memory::Write_U32(0, BufferOut+4);
|
Memory::Write_U32(0, BufferOut+4);
|
||||||
ReturnValue = 0;
|
ReturnValue = 0;
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_STARTUP_SOCKET - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_STARTUP_SOCKET - NI");
|
||||||
break;
|
break;
|
||||||
case IOCTL_NWC24_CLEANUP_SOCKET:
|
case IOCTL_NWC24_CLEANUP_SOCKET:
|
||||||
Memory::Memset(BufferOut, 0, BufferOutSize);
|
Memory::Memset(BufferOut, 0, BufferOutSize);
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_CLEANUP_SOCKET - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_CLEANUP_SOCKET - NI");
|
||||||
break;
|
break;
|
||||||
case IOCTL_NWC24_LOCK_SOCKET: // WiiMenu
|
case IOCTL_NWC24_LOCK_SOCKET: // WiiMenu
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_LOCK_SOCKET - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_LOCK_SOCKET - NI");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_NWC24_UNLOCK_SOCKET:
|
case IOCTL_NWC24_UNLOCK_SOCKET:
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_UNLOCK_SOCKET - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_UNLOCK_SOCKET - NI");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_NWC24_REQUEST_GENERATED_USER_ID: // (Input: none, Output: 32 bytes)
|
case IOCTL_NWC24_REQUEST_GENERATED_USER_ID: // (Input: none, Output: 32 bytes)
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_REQUEST_GENERATED_USER_ID");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_REQUEST_GENERATED_USER_ID");
|
||||||
//Memory::Write_U32(0xFFFFFFDC, BufferOut);
|
//Memory::Write_U32(0xFFFFFFDC, BufferOut);
|
||||||
//Memory::Write_U32(0x00050495, BufferOut + 4);
|
//Memory::Write_U32(0x00050495, BufferOut + 4);
|
||||||
//Memory::Write_U32(0x90CFBF35, BufferOut + 8);
|
//Memory::Write_U32(0x90CFBF35, BufferOut + 8);
|
||||||
|
@ -163,20 +163,20 @@ bool CWII_IPC_HLE_Device_net_kd_request::IOCtl(u32 _CommandAddress)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_NWC24_GET_SCHEDULAR_STAT:
|
case IOCTL_NWC24_GET_SCHEDULAR_STAT:
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_GET_SCHEDULAR_STAT - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_GET_SCHEDULAR_STAT - NI");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_NWC24_SAVE_MAIL_NOW:
|
case IOCTL_NWC24_SAVE_MAIL_NOW:
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_SAVE_MAIL_NOW - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_SAVE_MAIL_NOW - NI");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_NWC24_REQUEST_SHUTDOWN:
|
case IOCTL_NWC24_REQUEST_SHUTDOWN:
|
||||||
// if ya set the IOS version to a very high value this happens ...
|
// if ya set the IOS version to a very high value this happens ...
|
||||||
INFO_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_REQUEST_SHUTDOWN - NI");
|
WARN_LOG(WII_IPC_NET, "NET_KD_REQ: IOCTL_NWC24_REQUEST_SHUTDOWN - NI");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/kd/request::IOCtl request 0x%x (BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
WARN_LOG(WII_IPC_NET, "/dev/net/kd/request::IOCtl request 0x%x (BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
Parameter, BufferIn, BufferInSize, BufferOut, BufferOutSize);
|
Parameter, BufferIn, BufferInSize, BufferOut, BufferOutSize);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -196,10 +196,12 @@ CWII_IPC_HLE_Device_net_ncd_manage::CWII_IPC_HLE_Device_net_ncd_manage(u32 _Devi
|
||||||
// store network configuration
|
// store network configuration
|
||||||
const std::string filename(File::GetUserPath(D_WIIUSER_IDX) + "shared2/sys/net/02/config.dat");
|
const std::string filename(File::GetUserPath(D_WIIUSER_IDX) + "shared2/sys/net/02/config.dat");
|
||||||
|
|
||||||
|
isSet = false;
|
||||||
|
|
||||||
File::IOFile file(filename, "rb");
|
File::IOFile file(filename, "rb");
|
||||||
if (!file.ReadBytes(&m_Ifconfig, 1))
|
if (!file.ReadBytes(&m_Ifconfig, 1))
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: Failed to load /shared2/sys/net/02/config.dat, using dummy configuration");
|
WARN_LOG(WII_IPC_NET, "NET_NCD_MANAGE: Failed to load /shared2/sys/net/02/config.dat, using dummy configuration");
|
||||||
|
|
||||||
// wired connection on IP 192.168.1.1 using gateway 192.168.1.2
|
// wired connection on IP 192.168.1.1 using gateway 192.168.1.2
|
||||||
memset(&m_Ifconfig, 0, sizeof(m_Ifconfig));
|
memset(&m_Ifconfig, 0, sizeof(m_Ifconfig));
|
||||||
|
@ -257,6 +259,9 @@ CWII_IPC_HLE_Device_net_ncd_manage::CWII_IPC_HLE_Device_net_ncd_manage(u32 _Devi
|
||||||
m_Ifconfig.connection[2].dns1[2] = 8;
|
m_Ifconfig.connection[2].dns1[2] = 8;
|
||||||
m_Ifconfig.connection[2].dns1[3] = 8;
|
m_Ifconfig.connection[2].dns1[3] = 8;
|
||||||
|
|
||||||
|
|
||||||
|
File::IOFile outConfig(filename, "wb");
|
||||||
|
outConfig.WriteBytes(&m_Ifconfig, sizeof(m_Ifconfig));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -266,7 +271,7 @@ CWII_IPC_HLE_Device_net_ncd_manage::~CWII_IPC_HLE_Device_net_ncd_manage()
|
||||||
|
|
||||||
bool CWII_IPC_HLE_Device_net_ncd_manage::Open(u32 _CommandAddress, u32 _Mode)
|
bool CWII_IPC_HLE_Device_net_ncd_manage::Open(u32 _CommandAddress, u32 _Mode)
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: Open");
|
WARN_LOG(WII_IPC_NET, "NET_NCD_MANAGE: Open");
|
||||||
Memory::Write_U32(GetDeviceID(), _CommandAddress+4);
|
Memory::Write_U32(GetDeviceID(), _CommandAddress+4);
|
||||||
m_Active = true;
|
m_Active = true;
|
||||||
return true;
|
return true;
|
||||||
|
@ -274,7 +279,7 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::Open(u32 _CommandAddress, u32 _Mode)
|
||||||
|
|
||||||
bool CWII_IPC_HLE_Device_net_ncd_manage::Close(u32 _CommandAddress, bool _bForce)
|
bool CWII_IPC_HLE_Device_net_ncd_manage::Close(u32 _CommandAddress, bool _bForce)
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: Close");
|
WARN_LOG(WII_IPC_NET, "NET_NCD_MANAGE: Close");
|
||||||
if (!_bForce)
|
if (!_bForce)
|
||||||
Memory::Write_U32(0, _CommandAddress + 4);
|
Memory::Write_U32(0, _CommandAddress + 4);
|
||||||
m_Active = false;
|
m_Active = false;
|
||||||
|
@ -288,17 +293,19 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::IOCtlV(u32 _CommandAddress)
|
||||||
|
|
||||||
switch (CommandBuffer.Parameter)
|
switch (CommandBuffer.Parameter)
|
||||||
{
|
{
|
||||||
|
case IOCTLV_NCD_GETCONFIG: // 7004 out, 32 out
|
||||||
|
WARN_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETCONFIG");
|
||||||
|
ReturnValue = -1;
|
||||||
|
break;
|
||||||
case IOCTLV_NCD_READCONFIG: // 7004 Out, 32 Out. 2nd, 3rd
|
case IOCTLV_NCD_READCONFIG: // 7004 Out, 32 Out. 2nd, 3rd
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_READCONFIG");
|
WARN_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_READCONFIG");
|
||||||
//break;
|
//break;
|
||||||
|
|
||||||
case IOCTLV_NCD_GETCONFIG: // 7004 out, 32 out
|
|
||||||
// first out buffer gets filled with contents of /shared2/sys/net/02/config.dat
|
// first out buffer gets filled with contents of /shared2/sys/net/02/config.dat
|
||||||
// TODO: What's the second output buffer for?
|
// TODO: What's the second output buffer for?
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETCONFIG");
|
|
||||||
|
|
||||||
// fill output buffer, taking care of endianness
|
// fill output buffer, taking care of endianness, every day, every way
|
||||||
u32 addr = CommandBuffer.PayloadBuffer.at(0).m_Address;
|
u32 addr = CommandBuffer.PayloadBuffer.at(0).m_Address;
|
||||||
u32 _BufferOut2 = CommandBuffer.PayloadBuffer.at(1).m_Address;
|
u32 _BufferOut2 = CommandBuffer.PayloadBuffer.at(1).m_Address;
|
||||||
|
|
||||||
|
@ -337,12 +344,12 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::IOCtlV(u32 _CommandAddress)
|
||||||
status = 5;
|
status = 5;
|
||||||
if (param1[4] == 0)
|
if (param1[4] == 0)
|
||||||
status = 2;*/
|
status = 2;*/
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_SETCONFIG");
|
WARN_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_SETCONFIG");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTLV_NCD_GETLINKSTATUS: // 32 Out. 5th
|
case IOCTLV_NCD_GETLINKSTATUS: // 32 Out. 5th
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETLINKSTATUS");
|
WARN_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETLINKSTATUS");
|
||||||
Memory::Write_U32(0x00000000, CommandBuffer.PayloadBuffer[0].m_Address);
|
Memory::Write_U32(0x00000000, CommandBuffer.PayloadBuffer[0].m_Address);
|
||||||
Memory::Write_U32(status, CommandBuffer.PayloadBuffer[0].m_Address+4);
|
Memory::Write_U32(status, CommandBuffer.PayloadBuffer[0].m_Address+4);
|
||||||
break;
|
break;
|
||||||
|
@ -350,14 +357,14 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::IOCtlV(u32 _CommandAddress)
|
||||||
|
|
||||||
case IOCTLV_NCD_GETWIRELESSMACADDRESS: // 32 Out, 6 Out. 1st
|
case IOCTLV_NCD_GETWIRELESSMACADDRESS: // 32 Out, 6 Out. 1st
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETWIRELESSMACADDRESS");
|
WARN_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETWIRELESSMACADDRESS");
|
||||||
Memory::Write_U32(0, CommandBuffer.PayloadBuffer.at(0).m_Address);
|
Memory::Write_U32(0, CommandBuffer.PayloadBuffer.at(0).m_Address);
|
||||||
Memory::WriteBigEData(default_address, CommandBuffer.PayloadBuffer.at(1).m_Address, 6);
|
Memory::WriteBigEData(default_address, CommandBuffer.PayloadBuffer.at(1).m_Address, 6);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE IOCtlV: %#x", CommandBuffer.Parameter);
|
WARN_LOG(WII_IPC_NET, "NET_NCD_MANAGE IOCtlV: %#x", CommandBuffer.Parameter);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,7 +379,7 @@ CWII_IPC_HLE_Device_net_ip_top::CWII_IPC_HLE_Device_net_ip_top(u32 _DeviceID, co
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int ret = WSAStartup(MAKEWORD(2,2), &InitData);
|
int ret = WSAStartup(MAKEWORD(2,2), &InitData);
|
||||||
INFO_LOG(WII_IPC_NET, "WSAStartup: %d", ret);
|
WARN_LOG(WII_IPC_NET, "WSAStartup: %d", ret);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -385,7 +392,7 @@ CWII_IPC_HLE_Device_net_ip_top::~CWII_IPC_HLE_Device_net_ip_top()
|
||||||
|
|
||||||
bool CWII_IPC_HLE_Device_net_ip_top::Open(u32 _CommandAddress, u32 _Mode)
|
bool CWII_IPC_HLE_Device_net_ip_top::Open(u32 _CommandAddress, u32 _Mode)
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_IP_TOP: Open");
|
WARN_LOG(WII_IPC_NET, "NET_IP_TOP: Open");
|
||||||
Memory::Write_U32(GetDeviceID(), _CommandAddress+4);
|
Memory::Write_U32(GetDeviceID(), _CommandAddress+4);
|
||||||
m_Active = true;
|
m_Active = true;
|
||||||
return true;
|
return true;
|
||||||
|
@ -393,7 +400,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::Open(u32 _CommandAddress, u32 _Mode)
|
||||||
|
|
||||||
bool CWII_IPC_HLE_Device_net_ip_top::Close(u32 _CommandAddress, bool _bForce)
|
bool CWII_IPC_HLE_Device_net_ip_top::Close(u32 _CommandAddress, bool _bForce)
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "NET_IP_TOP: Close");
|
WARN_LOG(WII_IPC_NET, "NET_IP_TOP: Close");
|
||||||
if (!_bForce)
|
if (!_bForce)
|
||||||
Memory::Write_U32(0, _CommandAddress + 4);
|
Memory::Write_U32(0, _CommandAddress + 4);
|
||||||
m_Active = false;
|
m_Active = false;
|
||||||
|
@ -491,7 +498,7 @@ static int getNetErrorCode(int ret, std::string caller, bool isRW)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
INFO_LOG(WII_IPC_NET, "%s failed with error %d: %s, ret= %d\n",
|
WARN_LOG(WII_IPC_NET, "%s failed with error %d: %s, ret= %d\n",
|
||||||
caller.c_str(), 0x1337, "hmm", ret);
|
caller.c_str(), 0x1337, "hmm", ret);
|
||||||
return ret;
|
return ret;
|
||||||
#endif
|
#endif
|
||||||
|
@ -553,7 +560,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
switch (_Command)
|
switch (_Command)
|
||||||
{
|
{
|
||||||
case IOCTL_SO_STARTUP:
|
case IOCTL_SO_STARTUP:
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_STARTUP "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_STARTUP "
|
||||||
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
break;
|
break;
|
||||||
|
@ -582,7 +589,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
|
|
||||||
int ret = connect(Common::swap32(params.socket), (struct sockaddr *) &serverAddr, sizeof(serverAddr));
|
int ret = connect(Common::swap32(params.socket), (struct sockaddr *) &serverAddr, sizeof(serverAddr));
|
||||||
ret = getNetErrorCode(ret, "SO_CONNECT", false);
|
ret = getNetErrorCode(ret, "SO_CONNECT", false);
|
||||||
INFO_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtl request IOCTL_SO_CONNECT (%08x, %s:%d)",
|
WARN_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtl request IOCTL_SO_CONNECT (%08x, %s:%d)",
|
||||||
Common::swap32(params.socket), inet_ntoa(serverAddr.sin_addr), Common::swap16(serverAddr.sin_port));
|
Common::swap32(params.socket), inet_ntoa(serverAddr.sin_addr), Common::swap16(serverAddr.sin_port));
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -591,7 +598,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
|
|
||||||
case IOCTL_SO_SHUTDOWN:
|
case IOCTL_SO_SHUTDOWN:
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_SHUTDOWN "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_SHUTDOWN "
|
||||||
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
|
|
||||||
|
@ -605,7 +612,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
case IOCTL_SO_CLOSE:
|
case IOCTL_SO_CLOSE:
|
||||||
{
|
{
|
||||||
u32 sock = Memory::Read_U32(_BufferIn);
|
u32 sock = Memory::Read_U32(_BufferIn);
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_CLOSE (%08x)", sock);
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_CLOSE (%08x)", sock);
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
u32 ret = closesocket(sock);
|
u32 ret = closesocket(sock);
|
||||||
|
@ -623,7 +630,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
u32 TYPE = Memory::Read_U32(_BufferIn + 0x04);
|
u32 TYPE = Memory::Read_U32(_BufferIn + 0x04);
|
||||||
u32 PROT = Memory::Read_U32(_BufferIn + 0x08);
|
u32 PROT = Memory::Read_U32(_BufferIn + 0x08);
|
||||||
u32 s = (u32)socket(AF, TYPE, PROT);
|
u32 s = (u32)socket(AF, TYPE, PROT);
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_SOCKET "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_SOCKET "
|
||||||
"Socket: %08x (%d,%d,%d), BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"Socket: %08x (%d,%d,%d), BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
s, AF, TYPE, PROT, _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
s, AF, TYPE, PROT, _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
return getNetErrorCode(s, "SO_SOCKET", false);
|
return getNetErrorCode(s, "SO_SOCKET", false);
|
||||||
|
@ -641,9 +648,9 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
address.sin_port = addrPC.sin_port;
|
address.sin_port = addrPC.sin_port;
|
||||||
int ret = bind(Common::swap32(addr->socket), (sockaddr*)&address, sizeof(address));
|
int ret = bind(Common::swap32(addr->socket), (sockaddr*)&address, sizeof(address));
|
||||||
|
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_BIND (%s:%d) "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_BIND (%s:%d) = %d "
|
||||||
"Socket: %08X, BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"Socket: %08X, BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
inet_ntoa(address.sin_addr), Common::swap16(address.sin_port),
|
inet_ntoa(address.sin_addr), Common::swap16(address.sin_port), ret,
|
||||||
Common::swap32(addr->socket), _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
Common::swap32(addr->socket), _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
|
|
||||||
return getNetErrorCode(ret, "SO_BIND", false);
|
return getNetErrorCode(ret, "SO_BIND", false);
|
||||||
|
@ -652,7 +659,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
|
|
||||||
case IOCTL_SO_LISTEN:
|
case IOCTL_SO_LISTEN:
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_LISTEN "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_LISTEN "
|
||||||
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
|
|
||||||
|
@ -665,7 +672,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
|
|
||||||
case IOCTL_SO_ACCEPT:
|
case IOCTL_SO_ACCEPT:
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_ACCEPT "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_ACCEPT "
|
||||||
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
|
|
||||||
|
@ -683,7 +690,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
u32 level = Memory::Read_U32(_BufferOut + 4);
|
u32 level = Memory::Read_U32(_BufferOut + 4);
|
||||||
u32 optname = Memory::Read_U32(_BufferOut + 8);
|
u32 optname = Memory::Read_U32(_BufferOut + 8);
|
||||||
|
|
||||||
INFO_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtl request IOCTL_SO_GETSOCKOPT(%08x, %08x, %08x)"
|
WARN_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtl request IOCTL_SO_GETSOCKOPT(%08x, %08x, %08x)"
|
||||||
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
sock, level, optname,
|
sock, level, optname,
|
||||||
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
|
@ -703,7 +710,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
|
|
||||||
if(optname == 0x1007){
|
if(optname == 0x1007){
|
||||||
s32 errorcode = Memory::Read_U32(_BufferOut + 0x10);
|
s32 errorcode = Memory::Read_U32(_BufferOut + 0x10);
|
||||||
INFO_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtl request IOCTL_SO_GETSOCKOPT error code = %i", errorcode);
|
WARN_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtl request IOCTL_SO_GETSOCKOPT error code = %i", errorcode);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -721,7 +728,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
if (level == 6 && (optname == 0x2005 || optname == 0x2001)){
|
if (level == 6 && (optname == 0x2005 || optname == 0x2001)){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_SETSOCKOPT(%08x, %08x, %08x, %08x) "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_SETSOCKOPT(%08x, %08x, %08x, %08x) "
|
||||||
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)"
|
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)"
|
||||||
"%02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx",
|
"%02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx",
|
||||||
S, level, optname, optlen, _BufferIn, BufferInSize, _BufferOut, BufferOutSize, optval[0], optval[1], optval[2], optval[3], optval[4], optval[5], optval[6], optval[7], optval[8], optval[9], optval[10], optval[11], optval[12], optval[13], optval[14], optval[15], optval[16], optval[17], optval[18], optval[19]);
|
S, level, optname, optlen, _BufferIn, BufferInSize, _BufferOut, BufferOutSize, optval[0], optval[1], optval[2], optval[3], optval[4], optval[5], optval[6], optval[7], optval[8], optval[9], optval[10], optval[11], optval[12], optval[13], optval[14], optval[15], optval[16], optval[17], optval[18], optval[19]);
|
||||||
|
@ -739,7 +746,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
u32 cmd = Memory::Read_U32(_BufferIn + 4);
|
u32 cmd = Memory::Read_U32(_BufferIn + 4);
|
||||||
u32 arg = Memory::Read_U32(_BufferIn + 8);
|
u32 arg = Memory::Read_U32(_BufferIn + 8);
|
||||||
|
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_FCNTL(%08X, %08X) "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_FCNTL(%08X, %08X) "
|
||||||
"Socket: %08x, BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"Socket: %08x, BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
cmd, arg,
|
cmd, arg,
|
||||||
sock, _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
sock, _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
|
@ -749,19 +756,19 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
#define F_NONBLOCK 4
|
#define F_NONBLOCK 4
|
||||||
if (cmd == F_GETFL)
|
if (cmd == F_GETFL)
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "F_GETFL WTF?");
|
WARN_LOG(WII_IPC_NET, "F_GETFL WTF?");
|
||||||
}
|
}
|
||||||
else if (cmd == F_SETFL)
|
else if (cmd == F_SETFL)
|
||||||
{
|
{
|
||||||
u_long iMode = 0;
|
u_long iMode = 0;
|
||||||
if (arg & F_NONBLOCK)
|
//if (arg & F_NONBLOCK)
|
||||||
iMode = 1;
|
iMode = 1;
|
||||||
int ioctlret = ioctlsocket(sock, FIONBIO, &iMode);
|
int ioctlret = ioctlsocket(sock, FIONBIO, &iMode);
|
||||||
return getNetErrorCode(ioctlret, "SO_FCNTL", false);
|
return getNetErrorCode(ioctlret, "SO_FCNTL", false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "UNKNOWN WTF?");
|
WARN_LOG(WII_IPC_NET, "UNKNOWN WTF?");
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
|
@ -773,7 +780,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
{
|
{
|
||||||
u32 sock = Memory::Read_U32(_BufferIn);
|
u32 sock = Memory::Read_U32(_BufferIn);
|
||||||
|
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_GETSOCKNAME "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_GETSOCKNAME "
|
||||||
"Socket: %08X, BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"Socket: %08X, BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
sock, _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
sock, _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
|
|
||||||
|
@ -789,23 +796,24 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
}
|
}
|
||||||
|
|
||||||
case IOCTL_SO_GETHOSTID:
|
case IOCTL_SO_GETHOSTID:
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_GETHOSTID "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_GETHOSTID "
|
||||||
"(BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"(BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
return 192 << 24 | 168 << 16 | 1 << 8 | 150;
|
return 192 << 24 | 168 << 16 | 1 << 8 | 150;
|
||||||
|
|
||||||
case IOCTL_SO_INETATON:
|
case IOCTL_SO_INETATON:
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_INETATON "
|
|
||||||
"%s, BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
|
||||||
(char*)Memory::GetPointer(_BufferIn), _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
|
||||||
struct hostent *remoteHost = gethostbyname((char*)Memory::GetPointer(_BufferIn));
|
struct hostent *remoteHost = gethostbyname((char*)Memory::GetPointer(_BufferIn));
|
||||||
Memory::Write_U32(Common::swap32(*(u_long *)remoteHost->h_addr_list[0]), _BufferOut);
|
|
||||||
|
Memory::Write_U32(Common::swap32(*(u32 *)remoteHost->h_addr_list[0]), _BufferOut);
|
||||||
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_INETATON = %d "
|
||||||
|
"%s, BufferIn: (%08x, %i), BufferOut: (%08x, %i), IP Found: %08X",remoteHost->h_addr_list[0] == 0 ? -1 : 0,
|
||||||
|
(char*)Memory::GetPointer(_BufferIn), _BufferIn, BufferInSize, _BufferOut, BufferOutSize, Common::swap32(*(u32 *)remoteHost->h_addr_list[0]));
|
||||||
return remoteHost->h_addr_list[0] == 0 ? -1 : 0;
|
return remoteHost->h_addr_list[0] == 0 ? -1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
case IOCTL_SO_INETPTON:
|
case IOCTL_SO_INETPTON:
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_INETPTON "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_INETPTON "
|
||||||
"(Translating: %s)", Memory::GetPointer(_BufferIn));
|
"(Translating: %s)", Memory::GetPointer(_BufferIn));
|
||||||
return inet_pton((char*)Memory::GetPointer(_BufferIn), Memory::GetPointer(_BufferOut+4));
|
return inet_pton((char*)Memory::GetPointer(_BufferIn), Memory::GetPointer(_BufferOut+4));
|
||||||
break;
|
break;
|
||||||
|
@ -827,11 +835,11 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
ufds[i].fd = Memory::Read_U32(_BufferOut + 0xc*i);
|
ufds[i].fd = Memory::Read_U32(_BufferOut + 0xc*i);
|
||||||
ufds[i].events = Memory::Read_U32(_BufferOut + 0xc*i + 4);
|
ufds[i].events = Memory::Read_U32(_BufferOut + 0xc*i + 4);
|
||||||
ufds[i].revents = Memory::Read_U32(_BufferOut + 0xc*i + 8);
|
ufds[i].revents = Memory::Read_U32(_BufferOut + 0xc*i + 8);
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_POLL(%d) "
|
//WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_POLL(%d) "
|
||||||
"Sock: %08x, Unknown: %08x, Events: %08x, "
|
// "Sock: %08x, Unknown: %08x, Events: %08x, "
|
||||||
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
// "BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
i, ufds[i].fd, unknown, ufds[i].events,
|
// i, ufds[i].fd, unknown, ufds[i].events,
|
||||||
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
// _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
}
|
}
|
||||||
int ret = poll(ufds, nfds, timeout);
|
int ret = poll(ufds, nfds, timeout);
|
||||||
|
|
||||||
|
@ -841,7 +849,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
{
|
{
|
||||||
Memory::Write_U32(ufds[i].fd, _BufferOut + 0xc*i);
|
Memory::Write_U32(ufds[i].fd, _BufferOut + 0xc*i);
|
||||||
Memory::Write_U32(ufds[i].events, _BufferOut + 0xc*i + 4);
|
Memory::Write_U32(ufds[i].events, _BufferOut + 0xc*i + 4);
|
||||||
Memory::Write_U32(ufds[i].revents, _BufferOut + 0xc*i + 8);
|
Memory::Write_U32(ufds[i].revents|0x10, _BufferOut + 0xc*i + 8);
|
||||||
}
|
}
|
||||||
free(ufds);
|
free(ufds);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -856,7 +864,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
int i;
|
int i;
|
||||||
struct hostent *remoteHost = gethostbyname((char*)Memory::GetPointer(_BufferIn));
|
struct hostent *remoteHost = gethostbyname((char*)Memory::GetPointer(_BufferIn));
|
||||||
|
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_GETHOSTBYNAME "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtl request IOCTL_SO_GETHOSTBYNAME "
|
||||||
"Address: %s, BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"Address: %s, BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
(char*)Memory::GetPointer(_BufferIn), _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
(char*)Memory::GetPointer(_BufferIn), _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
|
|
||||||
|
@ -891,7 +899,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command,
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
INFO_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtl request 0x%x "
|
WARN_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtl request 0x%x "
|
||||||
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
_Command, _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
_Command, _BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
break;
|
break;
|
||||||
|
@ -971,7 +979,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffe
|
||||||
param5 = Memory::Read_U32(_BufferOut+4);
|
param5 = Memory::Read_U32(_BufferOut+4);
|
||||||
}
|
}
|
||||||
|
|
||||||
INFO_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtlV request IOCTLV_SO_GETINTERFACEOPT(%08X, %08X) "
|
WARN_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtlV request IOCTLV_SO_GETINTERFACEOPT(%08X, %08X) "
|
||||||
"BufferIn: (%08x, %i), BufferIn2: (%08x, %i)",
|
"BufferIn: (%08x, %i), BufferIn2: (%08x, %i)",
|
||||||
param, param2,
|
param, param2,
|
||||||
_BufferIn, BufferInSize, _BufferIn2, BufferInSize2);
|
_BufferIn, BufferInSize, _BufferIn2, BufferInSize2);
|
||||||
|
@ -1024,8 +1032,8 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffe
|
||||||
AdapterList->FirstDnsServerAddress &&
|
AdapterList->FirstDnsServerAddress &&
|
||||||
AdapterList->OperStatus == IfOperStatusUp)
|
AdapterList->OperStatus == IfOperStatusUp)
|
||||||
{
|
{
|
||||||
INFO_LOG(WII_IPC_NET, "Name of valid interface: %S", AdapterList->FriendlyName);
|
WARN_LOG(WII_IPC_NET, "Name of valid interface: %S", AdapterList->FriendlyName);
|
||||||
INFO_LOG(WII_IPC_NET, "DNS: %u.%u.%u.%u",
|
WARN_LOG(WII_IPC_NET, "DNS: %u.%u.%u.%u",
|
||||||
(unsigned char)AdapterList->FirstDnsServerAddress->Address.lpSockaddr->sa_data[2],
|
(unsigned char)AdapterList->FirstDnsServerAddress->Address.lpSockaddr->sa_data[2],
|
||||||
(unsigned char)AdapterList->FirstDnsServerAddress->Address.lpSockaddr->sa_data[3],
|
(unsigned char)AdapterList->FirstDnsServerAddress->Address.lpSockaddr->sa_data[3],
|
||||||
(unsigned char)AdapterList->FirstDnsServerAddress->Address.lpSockaddr->sa_data[4],
|
(unsigned char)AdapterList->FirstDnsServerAddress->Address.lpSockaddr->sa_data[4],
|
||||||
|
@ -1092,23 +1100,28 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffe
|
||||||
};
|
};
|
||||||
struct sendto_params params;
|
struct sendto_params params;
|
||||||
Memory::ReadBigEData((u8*)¶ms, _BufferIn2, BufferInSize2);
|
Memory::ReadBigEData((u8*)¶ms, _BufferIn2, BufferInSize2);
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtlV request IOCTLV_SO_SENDTO "
|
char * data = (char*)Memory::GetPointer(_BufferIn);
|
||||||
"Socket: %08x, BufferIn: (%08x, %i), BufferIn2: (%08x, %i)",
|
|
||||||
Common::swap32(params.socket), _BufferIn, BufferInSize, _BufferIn2, BufferInSize2);
|
|
||||||
|
|
||||||
if (params.has_destaddr)
|
if (params.has_destaddr)
|
||||||
{
|
{
|
||||||
struct sockaddr_in* addr = (struct sockaddr_in*)¶ms.destaddr;
|
struct sockaddr_in* addr = (struct sockaddr_in*)¶ms.destaddr;
|
||||||
u8 len = sizeof(sockaddr); //addr->sin_family & 0xFF;
|
u8 len = sizeof(sockaddr); //addr->sin_family & 0xFF;
|
||||||
addr->sin_family = addr->sin_family >> 8;
|
addr->sin_family = (addr->sin_family >> 8);
|
||||||
int ret = sendto(Common::swap32(params.socket), (char*)Memory::GetPointer(_BufferIn),
|
int ret = sendto(Common::swap32(params.socket), data,
|
||||||
BufferInSize, Common::swap32(params.flags), (struct sockaddr*)addr, len);
|
BufferInSize, Common::swap32(params.flags), (struct sockaddr*)addr, len);
|
||||||
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtlV request IOCTLV_SO_SENDTO = %d"
|
||||||
|
"Socket: %08x, BufferIn: (%08x, %i), BufferIn2: (%08x, %i), %u.%u.%u.%u", ret,
|
||||||
|
Common::swap32(params.socket), _BufferIn, BufferInSize, _BufferIn2, BufferInSize2, addr->sin_addr.S_un.S_un_b.s_b1, addr->sin_addr.S_un.S_un_b.s_b2, addr->sin_addr.S_un.S_un_b.s_b3, addr->sin_addr.S_un.S_un_b.s_b4);
|
||||||
|
|
||||||
return getNetErrorCode(ret, "SO_SENDTO", true);
|
return getNetErrorCode(ret, "SO_SENDTO", true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int ret = send(Common::swap32(params.socket), (char*)Memory::GetPointer(_BufferIn),
|
int ret = send(Common::swap32(params.socket), data,
|
||||||
BufferInSize, Common::swap32(params.flags));
|
BufferInSize, Common::swap32(params.flags));
|
||||||
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtlV request IOCTLV_SO_SEND = %d"
|
||||||
|
"Socket: %08x, BufferIn: (%08x, %i), BufferIn2: (%08x, %i)", ret,
|
||||||
|
Common::swap32(params.socket), _BufferIn, BufferInSize, _BufferIn2, BufferInSize2);
|
||||||
|
|
||||||
return getNetErrorCode(ret, "SO_SEND", true);
|
return getNetErrorCode(ret, "SO_SEND", true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1118,14 +1131,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffe
|
||||||
{
|
{
|
||||||
u32 sock = Memory::Read_U32(_BufferIn);
|
u32 sock = Memory::Read_U32(_BufferIn);
|
||||||
u32 flags = Memory::Read_U32(_BufferIn + 4);
|
u32 flags = Memory::Read_U32(_BufferIn + 4);
|
||||||
|
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtlV request IOCTLV_SO_RECVFROM "
|
|
||||||
"Socket: %08X, Flags: %08X, "
|
|
||||||
"BufferIn: (%08x, %i), BufferIn2: (%08x, %i), "
|
|
||||||
"BufferOut: (%08x, %i), BufferOut2: (%08x, %i)",
|
|
||||||
sock, flags,
|
|
||||||
_BufferIn, BufferInSize, _BufferIn2, BufferInSize2,
|
|
||||||
_BufferOut, BufferOutSize, _BufferOut2, BufferOutSize2);
|
|
||||||
|
|
||||||
char *buf = (char *)Memory::GetPointer(_BufferOut);
|
char *buf = (char *)Memory::GetPointer(_BufferOut);
|
||||||
int len = BufferOutSize;
|
int len = BufferOutSize;
|
||||||
|
@ -1137,6 +1143,8 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffe
|
||||||
fromlen = BufferOutSize2 >= sizeof(struct sockaddr) ? BufferOutSize2 : sizeof(struct sockaddr);
|
fromlen = BufferOutSize2 >= sizeof(struct sockaddr) ? BufferOutSize2 : sizeof(struct sockaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (flags != 2)
|
if (flags != 2)
|
||||||
flags = 0;
|
flags = 0;
|
||||||
else
|
else
|
||||||
|
@ -1148,7 +1156,7 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffe
|
||||||
unsigned long totallen = 0;
|
unsigned long totallen = 0;
|
||||||
ioctlsocket(sock, FIONREAD, &totallen);
|
ioctlsocket(sock, FIONREAD, &totallen);
|
||||||
return totallen;
|
return totallen;
|
||||||
}else
|
}
|
||||||
#endif
|
#endif
|
||||||
ret = recvfrom(sock, buf, len, flags,
|
ret = recvfrom(sock, buf, len, flags,
|
||||||
fromlen ? (struct sockaddr*) &addr : NULL, fromlen ? &fromlen : 0);
|
fromlen ? (struct sockaddr*) &addr : NULL, fromlen ? &fromlen : 0);
|
||||||
|
@ -1157,7 +1165,26 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffe
|
||||||
addr.sin_family = (addr.sin_family << 8) | (BufferOutSize2&0xFF);
|
addr.sin_family = (addr.sin_family << 8) | (BufferOutSize2&0xFF);
|
||||||
Memory::WriteBigEData((u8*)&addr, _BufferOut2, BufferOutSize2);
|
Memory::WriteBigEData((u8*)&addr, _BufferOut2, BufferOutSize2);
|
||||||
}
|
}
|
||||||
return getNetErrorCode(ret, "SO_RECVFROM", true);
|
|
||||||
|
if(fromlen){
|
||||||
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtlV request IOCTLV_SO_RECVFROM = %d "
|
||||||
|
"Socket: %08X, Flags: %08X, "
|
||||||
|
"BufferIn: (%08x, %i), BufferIn2: (%08x, %i), "
|
||||||
|
"BufferOut: (%08x, %i), BufferOut2: (%08x, %i)",
|
||||||
|
ret, sock, flags,
|
||||||
|
_BufferIn, BufferInSize, _BufferIn2, BufferInSize2,
|
||||||
|
_BufferOut, BufferOutSize, _BufferOut2, BufferOutSize2);
|
||||||
|
}else{
|
||||||
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtlV request IOCTLV_SO_RECV = %d "
|
||||||
|
"Socket: %08X, Flags: %08X, "
|
||||||
|
"BufferIn: (%08x, %i), BufferIn2: (%08x, %i), "
|
||||||
|
"BufferOut: (%08x, %i), BufferOut2: (%08x, %i)",
|
||||||
|
ret, sock, flags,
|
||||||
|
_BufferIn, BufferInSize, _BufferIn2, BufferInSize2,
|
||||||
|
_BufferOut, BufferOutSize, _BufferOut2, BufferOutSize2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return getNetErrorCode(ret, fromlen ? "SO_RECVFROM" : "SO_RECV", true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1227,15 +1254,15 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
INFO_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtlV request IOCTLV_SO_GETADDRINFO "
|
WARN_LOG(WII_IPC_NET, "/dev/net/ip/top::IOCtlV request IOCTLV_SO_GETADDRINFO "
|
||||||
"(BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
"(BufferIn: (%08x, %i), BufferOut: (%08x, %i)",
|
||||||
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
_BufferIn, BufferInSize, _BufferOut, BufferOutSize);
|
||||||
INFO_LOG(WII_IPC_NET, "IOCTLV_SO_GETADDRINFO: %s", Memory::GetPointer(_BufferIn));
|
WARN_LOG(WII_IPC_NET, "IOCTLV_SO_GETADDRINFO: %s", Memory::GetPointer(_BufferIn));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
INFO_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtlV request 0x%x (BufferIn: (%08x, %i), BufferIn2: (%08x, %i)",
|
WARN_LOG(WII_IPC_NET,"/dev/net/ip/top::IOCtlV request 0x%x (BufferIn: (%08x, %i), BufferIn2: (%08x, %i)",
|
||||||
_Parameter, _BufferIn, BufferInSize, _BufferIn2, BufferInSize2);
|
_Parameter, _BufferIn, BufferInSize, _BufferIn2, BufferInSize2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,7 +134,7 @@ private:
|
||||||
IOCTL_NWC24_EXEC_TRY_SUSPEND_SCHEDULAR = 0x02,
|
IOCTL_NWC24_EXEC_TRY_SUSPEND_SCHEDULAR = 0x02,
|
||||||
IOCTL_NWC24_EXEC_RESUME_SCHEDULAR = 0x03,
|
IOCTL_NWC24_EXEC_RESUME_SCHEDULAR = 0x03,
|
||||||
IOCTL_NWC24_KD_GET_TIME_TRIGGERS = 0x04,
|
IOCTL_NWC24_KD_GET_TIME_TRIGGERS = 0x04,
|
||||||
IOCTL_NWC24_UNK_5 = 0x05,
|
IOCTL_NWC24_SET_SCHEDULE_SPAN = 0x05,
|
||||||
IOCTL_NWC24_STARTUP_SOCKET = 0x06,
|
IOCTL_NWC24_STARTUP_SOCKET = 0x06,
|
||||||
IOCTL_NWC24_CLEANUP_SOCKET = 0x07,
|
IOCTL_NWC24_CLEANUP_SOCKET = 0x07,
|
||||||
IOCTL_NWC24_LOCK_SOCKET = 0x08,
|
IOCTL_NWC24_LOCK_SOCKET = 0x08,
|
||||||
|
@ -333,7 +333,7 @@ private:
|
||||||
IOCTLV_NCD_GETLINKSTATUS = 0x7, // NCDGetLinkStatus
|
IOCTLV_NCD_GETLINKSTATUS = 0x7, // NCDGetLinkStatus
|
||||||
IOCTLV_NCD_GETWIRELESSMACADDRESS = 0x8, // NCDGetWirelessMacAddress
|
IOCTLV_NCD_GETWIRELESSMACADDRESS = 0x8, // NCDGetWirelessMacAddress
|
||||||
};
|
};
|
||||||
|
bool isSet;
|
||||||
network_config_t m_Ifconfig;
|
network_config_t m_Ifconfig;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -31,15 +31,15 @@
|
||||||
|
|
||||||
typedef struct pollfd {
|
typedef struct pollfd {
|
||||||
int fd; /* file desc to poll */
|
int fd; /* file desc to poll */
|
||||||
short events; /* events of interest on fd */
|
int events; /* events of interest on fd */
|
||||||
short revents; /* events that occurred on fd */
|
int revents; /* events that occurred on fd */
|
||||||
} pollfd_t;
|
} pollfd_t;
|
||||||
|
|
||||||
#define EINVAL 22
|
#define EINVAL 22
|
||||||
// poll flags
|
// poll flags
|
||||||
#define POLLIN 0x0001
|
#define POLLIN 0x0001
|
||||||
#define POLLOUT 0x0008
|
#define POLLOUT 0x0008
|
||||||
#define POLLERR 0x0040
|
#define POLLERR 0x0020
|
||||||
|
|
||||||
// synonyms
|
// synonyms
|
||||||
#define POLLNORM POLLIN
|
#define POLLNORM POLLIN
|
||||||
|
@ -50,8 +50,8 @@ typedef struct pollfd {
|
||||||
#define POLLWRBAND POLLOUT
|
#define POLLWRBAND POLLOUT
|
||||||
|
|
||||||
// ignored
|
// ignored
|
||||||
#define POLLHUP 0x0010
|
#define POLLHUP 0x0040
|
||||||
#define POLLNVAL 0x0020
|
#define POLLNVAL 0x0080
|
||||||
|
|
||||||
inline int poll(struct pollfd *pollSet, int pollCount, int pollTimeout)
|
inline int poll(struct pollfd *pollSet, int pollCount, int pollTimeout)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue