summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorMatthew Parlane <parlane@gmail.com>2012-02-17 20:50:15 +1300
committerMatthew Parlane <parlane@gmail.com>2012-02-17 20:50:15 +1300
commit7fa0ffa6d5dcf1949cebb06b6ff514f7853f5a45 (patch)
treee8f6a2945f2f906d20ab588a387e9b5e55bb1ac3 /Source
parent5176335546fa1e6bb62a70349370f3cb4eed5123 (diff)
Added getpeername
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp28
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));