diff options
| author | Matthew Parlane <parlane@gmail.com> | 2012-02-17 20:50:15 +1300 |
|---|---|---|
| committer | Matthew Parlane <parlane@gmail.com> | 2012-02-17 20:50:15 +1300 |
| commit | 7fa0ffa6d5dcf1949cebb06b6ff514f7853f5a45 (patch) | |
| tree | e8f6a2945f2f906d20ab588a387e9b5e55bb1ac3 /Source | |
| parent | 5176335546fa1e6bb62a70349370f3cb4eed5123 (diff) | |
Added getpeername
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp index 9fcd0ff5ca..202ebc8191 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp @@ -827,13 +827,31 @@ u32 CWII_IPC_HLE_Device_net_ip_top::ExecuteCommand(u32 _Command, Memory::WriteBigEData((u8*)&sa.sa_data, _BufferOut+2, BufferOutSize-2); return ret; } + case IOCTL_SO_GETPEERNAME: + { + u32 sock = Memory::Read_U32(_BufferIn); - case IOCTL_SO_GETHOSTID: - WARN_LOG(WII_IPC_NET, "IOCTL_SO_GETHOSTID " - "(BufferIn: (%08x, %i), BufferOut: (%08x, %i)", - _BufferIn, BufferInSize, _BufferOut, BufferOutSize); - return 192 << 24 | 168 << 16 | 1 << 8 | 150; + WARN_LOG(WII_IPC_NET, "IOCTL_SO_GETPEERNAME " + "Socket: %08X, BufferIn: (%08x, %i), BufferOut: (%08x, %i)", + sock, _BufferIn, BufferInSize, _BufferOut, BufferOutSize); + struct sockaddr sa; + socklen_t sa_len; + sa_len = sizeof(sa); + int ret = getpeername(sock, &sa, &sa_len); + + Memory::Write_U8(BufferOutSize, _BufferOut); + Memory::Write_U8(sa.sa_family & 0xFF, _BufferOut+1); + Memory::WriteBigEData((u8*)&sa.sa_data, _BufferOut+2, BufferOutSize-2); + return ret; + } + case IOCTL_SO_GETHOSTID: + { + WARN_LOG(WII_IPC_NET, "IOCTL_SO_GETHOSTID " + "(BufferIn: (%08x, %i), BufferOut: (%08x, %i)", + _BufferIn, BufferInSize, _BufferOut, BufferOutSize); + return 192 << 24 | 168 << 16 | 1 << 8 | 150; + } case IOCTL_SO_INETATON: { struct hostent *remoteHost = gethostbyname((char*)Memory::GetPointer(_BufferIn)); |
