1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     socket_IpcWrapper.h
4 
5   Copyright (C)2009-2012 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 46347 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_SOCKET_SOCKET_IPCWRAPPER_H_
17 #define NN_SOCKET_SOCKET_IPCWRAPPER_H_
18 
19 #include <nn/socket/socket_Types.h>
20 #include <nn/socket/socket_Const.h>
21 #include <nn/socket/socket_User.h>
22 
23 #define NN_SOCKET_RETURN_IF_FAILED(result)  \
24     do \
25     { \
26         ::nn::Result nn_util_return_if_failure_result = (result); \
27         if (nn_util_return_if_failure_result.IsFailure()) \
28         { \
29             return detail::ConvertErrorResult(nn_util_return_if_failure_result); \
30         } \
31     } while(0)
32 
33 namespace nn {
34 namespace socket {
35 namespace detail {
36     Result Socket( s32* rval, s32 af, s32 type, s32 protocol );
37     Result Listen( s32* rval, s32 s, s32 backlog );
38     Result Accept( s32* rval, s32 s, u8 sockAddr[], size_t salen );
39     Result Bind( s32* rval, s32 s, const u8 sockAddr[], size_t salen );
40     Result Connect( s32* rval, s32 s, const u8 sockAddr[], size_t salen );
41     Result RecvFrom( s32* rval, s32 s, u8 buf[], s32 len, s32 flags, u8 sockFrom[], size_t salen );
42     Result RecvFromSmall( s32* rval, s32 s, u8 buf[], s32 len, s32 flags, u8 sockFrom[], size_t salen );
43     Result SendTo( s32* rval, s32 s, const u8 buf[], s32 len, s32 flags, const u8 sockTo[], size_t salen );
44     Result SendToSmall( s32* rval, s32 s, const u8 buf[], s32 len, s32 flags, const u8 sockTo[], size_t salen );
45     Result SendToSmallMulti( s32* rval, s32 s, const u8 buf[], s32 len, s32 flags, const u8 sockTo[], size_t salen, size_t satotallen );
46     Result Close( s32* rval, s32 s );
47     Result Shutdown( s32* rval, s32 s, s32 how );
48     Result GetSockOpt( s32* rval, s32 s, s32 level, s32 optname, u8 optval[], s32* optlen );
49     Result SetSockOpt( s32* rval, s32 s, s32 level, s32 optname, const u8 optval[], s32 optlen );
50     Result Fcntl( s32* rval, s32 s, s32 cmd, s32 val );
51     Result Poll( s32* rval, PollFd fds[], u32 nfds, s32 timeout );
52     Result SockAtMark( s32* rval, s32 s );
53     Result GetHostId( u32* hostId );
54     Result GetSockName( s32* rval, s32 s, u8 sockAddr[], size_t salen );
55     Result GetPeerName( s32* rval, s32 s, u8 sockAddr[], size_t salen );
56     Result GetHostByName( s32* rval, const char8 hname[], size_t hnameLen, u8 hostCarrier[], size_t hostCarrierLen );
57     Result GetHostByAddr( s32* rval, const u8 addr[], size_t addrLen, s32 type, u8 hostCarrier[], size_t hostCarrierLen );
58     Result GetAddrInfo( s32* rval, const char8 nodeName[], size_t nodeNameLen, const char8 servName[], size_t servNameLen, const u8 hints[], s32 hintsLen, s32* resAddrNum, u8 ress[], size_t ressLen );
59     Result GetNameInfo( s32* rval, const u8 sa[], size_t saLen, char8 node[], size_t nodeLen, char8 service[], size_t serviceLen, s32 flag );
60     Result GetNetworkOpt( s32* rval, s32 level, s32 optname, u8 optval[], s32* optlen );
61     Result SetNetworkOpt( s32* rval, s32 level, s32 optname, const u8 optval[], s32 optlen );
62     Result GetResolverInfo( s32* rval, nn::socket::DnsServerInfo* pDnsServerInfo );
63 
64     Result IcmpSocket( s32* rval, s32 af );
65     Result IcmpPing( s32* rval, s32 s, const u8 data[], s32 len, u8 remote[], size_t salen, s32 timeout );
66     Result IcmpCancel( s32* rval, s32 s );
67     Result IcmpClose( s32* rval, s32 s );
68 
69 }
70 }
71 }
72 
73 #endif  // ifndef NN_SOCKET_SOCKET_IPCWRAPPER_H_
74