1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     socket_Types.h
4   Copyright (C)2010 Nintendo Co., Ltd.  All rights reserved.
5   These coded instructions, statements, and computer programs contain
6   proprietary information of Nintendo of America Inc. and/or Nintendo
7   Company Ltd., and are protected by Federal copyright law. They may
8   not be disclosed to third parties or copied or duplicated in any form,
9   in whole or in part, without the prior written consent of Nintendo.
10   $Rev: 27867 $
11  *---------------------------------------------------------------------------
12 
13 
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