1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     socket_Types.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_TYPES_H_
17 #define NN_SOCKET_SOCKET_TYPES_H_
18 
19 #include <nn/types.h>
20 #include <nn/config.h>
21 
22 #pragma push
23 #pragma diag_suppress 1301,2530
24 #include <nn/socket/socket_User.autogen.h>
25 #include <nn/socket/socket_Entry.autogen.h>
26 #pragma diag_default 1301,2530 // Not needed originally
27 #pragma pop
28 
29 namespace nn {
30 namespace socket {
31     typedef s32             Bool;
32     typedef s64             Tick;
33 
34     namespace detail {
35         /* Please see man pages for details
36 
37 
38          */
39         typedef In6Addr     InAddrStorage;
40 
41         /* Please see man pages for details
42 
43          */
44         struct HostEntExCarrier
45         {
46             s16      addrType;             /* Please see man pages for details */
47             s16      length;               /* Please see man pages for details */
48             s16      addrNum;              /* Please see man pages for details */
49             s16      aliasNum;             /* Please see man pages for details */
50             char8    name[NN_SOCKET_MAXDNAME];  /* Please see man pages for details */
51             char8    aliases[NN_SOCKET_DNS_RESOLV_ALIASNAME_MAX][NN_SOCKET_MAXDNAME]; /* Please see man pages for details */
52             InAddrStorage   addrList[NN_SOCKET_DNS_RESOLV_ADDRESS_MAX];      /* Please see man pages for details */
53         };
54 
55 
56         /* Please see man pages for details
57 
58          */
59         struct AddrInfoCarrier
60         {
61             s32             flags;                /* Please see man pages for details */
62             s32             family;               /* Please see man pages for details */
63             s32             sockType;             /* Please see man pages for details */
64             s32             protocol;             /* Please see man pages for details */
65             s32             addrLen;              /* Please see man pages for details */
66             char8           canonName[NN_SOCKET_MAXDNAME];  /**< Canonical host name  */
67             SockAddr        addr;                 /* Please see man pages for details */
68         };
69 
70     } // end of namespace detail
71 
72     /* Please see man pages for details
73 
74     */
75     struct Config
76     {
77         // HOST
78         InAddr      address;
79         InAddr      netmask;
80         InAddr      defaultRouter;
81         InAddr      nameServer[2];
82         // DHCP
83         bool        useDhcp;
84         bool        useDhcpForDns;
85         s8          dhcpRetryCount;
86         bool        sendDhcpRelease;
87 
88         // PHY
89         s16         mtu;
90         NN_PADDING2;
91 
92         // TCP
93         s32         rwin;               /* Please see man pages for details */
94         s32         r2;                 /* Please see man pages for details */
95         // UDP
96         s32         udpRecvBuff;        /* Please see man pages for details */
97     };
98 
99 } // end of namespace socket
100 } // end of namespace nn
101 
102 #endif  // ifndef NN_SOCKET_SOCKET_TYPES_H_
103