1 /*---------------------------------------------------------------------------*
2 Project: Horizon
3 File: nsoc_admin.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:$
11 *---------------------------------------------------------------------------
12
13
14 */
15
16 /* Please see man pages for details
17
18 */
19
20 #ifndef NSOC_ADMIN_H
21 #define NSOC_ADMIN_H
22
23 #ifndef NSOC_NO_DEPEND_HEADER
24 #include <nn/net/compatible/nos/nos.h> /* for NOSxxxx */
25 #include <nn/net/compatible/nnet/nnet.h> /* for NNETxxxx */
26 #include <nn/net/compatible/nsoc/nsoc_user.h> /* for NSOCInAddr, NSOCDNSServerInfo */
27 #endif
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 /*---------------------------------------------------------------------------*
34 * Definitions
35 *---------------------------------------------------------------------------*/
36
37 #define NSOC_VENDOR_NINTENDO 0x0000 /* Please see man pages for details */
38 #define NSOC_COMMON_CONF_VERSION 0x3100 /* Please see man pages for details */
39 #define NSOC_INS_CONF_VERSION 0x4100 /* Please see man pages for details */
40
41 /* Please see man pages for details
42
43 */
44 #define NSOC_ERROR_BASE 0xffff8000
45 #define NSOC_ERROR_CODE(code) ((s32)(NSOC_ERROR_BASE|(code)))
46
47 enum NSOCErrorCode {
48 NSOC_ERR_PARAM = NSOC_ERROR_CODE(1), /* Please see man pages for details */
49 NSOC_ERR_INIT = NSOC_ERROR_CODE(2), /* Please see man pages for details */
50 NSOC_ERR_FINISH = NSOC_ERROR_CODE(3), /* Please see man pages for details */
51 NSOC_ERR_CONFVER = NSOC_ERROR_CODE(4), /* Please see man pages for details */
52 NSOC_ERR_STATE = NSOC_ERROR_CODE(5), /* Please see man pages for details */
53 NSOC_ERR_EXIST = NSOC_ERROR_CODE(6), /* Please see man pages for details */
54 NSOC_ERR_NOMEM = NSOC_ERROR_CODE(7), /* Please see man pages for details */
55 NSOC_ERR_NOS = NSOC_ERROR_CODE(8), /* Please see man pages for details */
56 NSOC_ERR_LOWER = NSOC_ERROR_CODE(9), /* Please see man pages for details */
57 NSOC_ERR_TIMEOUT = NSOC_ERROR_CODE(10), /* Please see man pages for details */
58 NSOC_ERR_INS_RESOURCES = NSOC_ERROR_CODE(11), /* Please see man pages for details */
59 NSOC_ERR_MAXSOCKET = NSOC_ERROR_CODE(12), /* Please see man pages for details */
60 NSOC_ERR_ABORT = NSOC_ERROR_CODE(13), /* Please see man pages for details */
61
62 NSOC_ERR_IP_UNREACHABLE = NSOC_ERROR_CODE(21), /* Please see man pages for details */
63 NSOC_ERR_IP_DATASIZE = NSOC_ERROR_CODE(22), /* Please see man pages for details */
64 NSOC_ERR_IP_NETDOWN = NSOC_ERROR_CODE(23), /* Please see man pages for details */
65 NSOC_ERR_IP_INVALID = NSOC_ERROR_CODE(24), /* Please see man pages for details */
66 NSOC_ERR_IP_REFUSED = NSOC_ERROR_CODE(25), /* Please see man pages for details */
67 NSOC_ERR_IP_TIMEOUT = NSOC_ERROR_CODE(26), /* Please see man pages for details */
68 NSOC_ERR_IP_CANCELED = NSOC_ERROR_CODE(27), /* Please see man pages for details */
69 NSOC_ERR_IP_BUSY = NSOC_ERROR_CODE(28), /* Please see man pages for details */
70 NSOC_ERR_IP_CLOSING = NSOC_ERROR_CODE(29), /* Please see man pages for details */
71 NSOC_ERR_IP_EXIST = NSOC_ERROR_CODE(30), /* Please see man pages for details */
72 NSOC_ERR_IP_RESET = NSOC_ERROR_CODE(31), /* Please see man pages for details */
73 NSOC_ERR_IP_NOT_EXIST = NSOC_ERROR_CODE(32), /* Please see man pages for details */
74 NSOC_ERR_IP_INV_SOCKET = NSOC_ERROR_CODE(33), /* Please see man pages for details */
75 NSOC_ERR_IP_AGAIN = NSOC_ERROR_CODE(34), /* Please see man pages for details */
76 NSOC_ERR_IP_SOCKET_UNSPECIFIED = NSOC_ERROR_CODE(35), /* Please see man pages for details */
77 NSOC_ERR_IP_SOURCE_QUENCH = NSOC_ERROR_CODE(36), /* Please see man pages for details */
78 NSOC_ERR_IP_INV_OPTION = NSOC_ERROR_CODE(37), /* Please see man pages for details */
79 NSOC_ERR_IP_ADDR_COLLISION = NSOC_ERROR_CODE(38), /* Please see man pages for details */
80 NSOC_ERR_IP_SHUTDOWN = NSOC_ERROR_CODE(39), /* Please see man pages for details */
81 NSOC_ERR_IP_INV_HEADER = NSOC_ERROR_CODE(40), /* Please see man pages for details */
82 NSOC_ERR_IP_INV_ADDR = NSOC_ERROR_CODE(41), /* Please see man pages for details */
83 NSOC_ERR_IP_INV_DATA = NSOC_ERROR_CODE(42), /* Please see man pages for details */
84
85 NSOC_ERR_DHCP_EXPIRED = NSOC_ERROR_CODE(51), /* Please see man pages for details */
86 NSOC_ERR_DHCP_TIMEOUT = NSOC_ERROR_CODE(52), /* Please see man pages for details */
87 NSOC_ERR_DHCP_NAK = NSOC_ERROR_CODE(53), /* Please see man pages for details */
88
89 NSOC_ERR_IP6_ADDR_COLLISION = NSOC_ERROR_CODE(60), /* Please see man pages for details */
90
91 NSOC_ERR_NONE = 0 /* Please see man pages for details */
92 };
93
94 /*---------------------------------------------------------------------------*
95 * Types/Declarations
96 *---------------------------------------------------------------------------*/
97 /* Please see man pages for details
98
99 */
100 typedef struct NSOCCommonConfig {
101 u16 vendor; /* Please see man pages for details */
102 u16 version; /* Please see man pages for details */
103
104 s32 timeWaitBuffer; /* Please see man pages for details */
105
106 s32 reassembleMtu; /* Please see man pages for details */
107
108 // TCP
109 s32 rwin; /* Please see man pages for details */
110 s32 r2; /* Please see man pages for details */
111
112 // UDP
113 s32 udpRecvBuff; /* Please see man pages for details */
114
115 // DHCP
116 const char* hostName; /* Please see man pages for details */
117 s32 rdhcp; /* Please see man pages for details */
118
119 } NSOCCommonConfig;
120
121 /*
122 * Flag that sets NSOCInstanceConfig flag
123 */
124 enum NSOCInstanceConfigFlag {
125 NSOC_FLAG_DHCP = 0x0001, /* Please see man pages for details */
126 NSOC_FLAG_PPP = 0x0002, /* Please see man pages for details */
127 NSOC_FLAG_IP4 = 0x0004, /* Please see man pages for details */
128 NSOC_FLAG_IP6 = 0x0008, /* Please see man pages for details */
129 NSOC_FLAG_DHCP6 = 0x0010, /* Please see man pages for details */
130 NSOC_FLAG_NORA_DHCP6 = 0x0020, /* Please see man pages for details */
131 NSOC_FLAG_DHCP_REBOOT = 0x0100, /* Please see man pages for details */
132 NSOC_FLAG_DHCP_RELEASE = 0x0200, /* Please see man pages for details */
133 NSOC_FLAG_DNS_AUTO = 0x1000, /* Please see man pages for details */
134 NSOC_FLAG_ZEROCONF = 0x8000 /* Please see man pages for details */
135 };
136
137 /* Please see man pages for details
138
139 */
140 typedef struct NSOCInstanceConfig {
141 u16 vendor; /* Please see man pages for details */
142 u16 version; /* Please see man pages for details */
143
144 u32 flag; /* Please see man pages for details */
145 NSOCInAddr addr; /* Please see man pages for details */
146 NSOCInAddr netmask; /* Please see man pages for details */
147 NSOCInAddr router; /* Please see man pages for details */
148 s32 mtu; /* Please see man pages for details */
149
150 NSOCDNSServerInfo dnsserver; /* Please see man pages for details */
151
152 #ifdef NSOC_IP6_ENABLE
153 u8 curHopLimit; /* Hop limit */
154 u32 retransTimer; /* NS retransmission interval (msec) */
155 u32 dadNSTransmits; /* Number of NS transmissions for duplicate address detection */
156 u8 interfaceId[8]; /* Interface ID */
157 #endif /* NSOC_IP6_ENABLE */
158 } NSOCInstanceConfig;
159
160 /* Please see man pages for details
161
162 */
163 typedef void (* NSOCConfigErrorCallback )(NSOCInstancePtr insP, s32 err);
164
165 #ifndef NSOC_NO_DEPEND_HEADER
166 /* Please see man pages for details
167
168 */
169 typedef BOOL (* NSOCFilter)(NSOCInstancePtr insP, NOSMessageBuf *mbuf);
170 #endif
171
172 /* Please see man pages for details
173
174 */
NSOC_GetNNETInstance(NSOCInstancePtr insP)175 NN_INLINE NNETInstance *NSOC_GetNNETInstance(NSOCInstancePtr insP)
176 {
177 return (NNETInstance *)insP;
178 }
179
180 /* Please see man pages for details
181
182 */
NSOC_GetNSOCInstance(NNETInstance * ins)183 NN_INLINE NSOCInstancePtr NSOC_GetNSOCInstance(NNETInstance *ins)
184 {
185 return (NSOCInstancePtr)ins;
186 }
187
188 /*---------------------------------------------------------------------------*
189 * Function Prototypes
190 *---------------------------------------------------------------------------*/
191 /* nsoc_main.c */
192 extern s32 NSOC_Init(const NNETAllocator *allocator);
193 extern s32 NSOC_Finish(void);
194 extern s32 NSOC_SetCommonConfig(const NSOCCommonConfig *common_conf);
195 extern s32 NSOC_SetInstanceConfig(NSOCInstancePtr ins, const NSOCInstanceConfig *ins_conf);
196 extern s32 NSOC_StartupIns(NNETInstance *ins, s32 timeout);
197 extern s32 NSOC_CleanupIns(NNETInstance *ins, s32 timeout);
198 extern s32 NSOC_AbortIns(NNETInstance *ins);
199 extern s32 NSOC_CreateIns(NSOCInstancePtr *insP);
200 extern s32 NSOC_DestroyIns(NSOCInstancePtr insP);
201 extern s32 NSOC_AttachIF(NSOCInstancePtr insP, NNETEthernetAPI *low_api);
202 extern s32 NSOC_DetachIF(NSOCInstancePtr insP);
203 extern s32 NSOC_SetConfigErrorCallback(NSOCInstancePtr nsoc_insP, NSOCConfigErrorCallback callback);
204 extern s32 NSOC_SetUserInsParam(NSOCInstancePtr insP, void* param);
205 extern s32 NSOC_GetUserInsParam(NSOCInstancePtr insP, void** param);
206
207 /* nsoc_socket.c */
208 extern int NSOC_GetUserInfo(int s, void** userInfo);
209 extern void NSOC_FreeUserInfo(void* userInfo);
210 extern void* NSOC_DuplicateUserInfo(void* userInfo, int socket);
211
212
213
214 #ifdef __cplusplus
215 }
216 #endif
217
218 /* NSOC_ADMIN_H */
219 #endif
220
221
222