1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     socket_User.autogen.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_USER_AUTOGEN_H_
17 #define NN_SOCKET_SOCKET_USER_AUTOGEN_H_
18 
19 #include <nn/types.h>	/* for NOSxxxx */
20 
21 namespace nn {
22 namespace socket {
23 
24 //#undef NN_SOCKET_IP6_ENABLE     //!< Use IPv6
25 
26 
27 /* Please see man pages for details
28 
29  */
30 enum ProtocolFamily {
31 	PF_UNSPEC  = 0,           //
32 	PF_INET    = 2,           //
33 	PF_INET6   = 23           //
34 };
35 
36 /* Please see man pages for details
37 
38  */
39 enum AddressFamily {
40 	AF_UNSPEC  = PF_UNSPEC,   //
41 	AF_INET    = PF_INET,     //
42 	AF_INET6   = PF_INET6     //
43 };
44 
45 /* Please see man pages for details
46 
47  */
48 enum SocketType {
49 	SOCK_STREAM    = 1,           //
50 	SOCK_DGRAM     = 2            //
51 };
52 
53 /* Please see man pages for details
54 
55  */
56 enum MessageFlag {
57 	MSG_OOB        = 0x01,        //
58 	MSG_PEEK       = 0x02,        //
59 	MSG_DONTWAIT   = 0x04         //
60 };
61 
62 /* Please see man pages for details
63 
64  */
65 enum PollType {
66 	POLLRDNORM     = 0x0001,     //
67 	POLLRDBAND     = 0x0002,     //
68 	POLLPRI        = 0x0004,     //
69 	POLLWRNORM     = 0x0008,     //
70 	POLLWRBAND     = 0x0010,     //
71 	POLLERR        = 0x0020,     //
72 	POLLHUP        = 0x0040,     //
73 	POLLNVAL       = 0x0080,     //
74 	POLLIN         = (POLLRDNORM | POLLRDBAND), //
75 	POLLOUT        = POLLWRNORM //
76 };
77 
78 /* Please see man pages for details
79 
80  */
81 enum SocketLevel {
82 	SOL_SOCKET     = 0xffff,      //
83 	SOL_CONFIG     = 0xfffe,      //
84 	SOL_IP         = 0,           //
85 	SOL_ICMP       = 1,           //
86 	SOL_TCP        = 6,           //
87 	SOL_UDP        = 17,          //
88 	SOL_IP6        = 41           //
89 };
90 
91 /* Please see man pages for details
92 
93  */
94 enum SocketOptionType {
95 	IP_TOS             = 0x00000007, //
96 	IP_TTL             = 0x00000008, //
97 	IP_MULTICAST_LOOP  = 0x00000009, //
98 	IP_MULTICAST_TTL   = 0x0000000a, //
99 	IP_ADD_MEMBERSHIP  = 0x0000000b, //
100 	IP_DROP_MEMBERSHIP = 0x0000000c, //
101 	SO_REUSEADDR       = 0x00000004, //
102 	SO_LINGER          = 0x00000080, //
103 	SO_OOBINLINE       = 0x00000100, //
104 	SO_SNDBUF          = 0x00001001, //
105 	SO_RCVBUF          = 0x00001002, //
106 	SO_SNDLOWAT        = 0x00001003, //
107 	SO_RCVLOWAT        = 0x00001004, //
108 	SO_TYPE            = 0x00001008, //
109 	SO_ERROR           = 0x00001009, //
110 	TCP_NODELAY        = 0x00002001, //
111 	TCP_MAXSEG         = 0x00002002, //
112 	TCP_STDURG         = 0x00002003, //
113 	TCP_R2             = 0x00002004, //
114 	TCP_R2_SYN         = 0x00002005  //
115 #ifdef NN_SOCKET_IP6_ENABLE
116 	,
117 	IP6_MULTICAST_LOOP = 0x00010009, //
118 	IP6_HOPLIMIT       = 0x0001000a, //
119 	IP6_ADD_MEMBERSHIP = 0x0001000b, //
120 	IP6_DROP_MEMBERSHIP= 0x0001000c  //
121 #endif
122 };
123 
124 /* Please see man pages for details
125 
126  */
127 enum ShutdownType {
128 	SHUT_RD        = 0,           //
129 	SHUT_WR        = 1,           //
130 	SHUT_RDWR      = 2            //
131 };
132 
133 /* Please see man pages for details
134 
135  */
136 enum FcntlFlag {
137 	F_GETFL        = 3,            //
138 	F_SETFL        = 4             //
139 };
140 
141 /* Please see man pages for details
142 
143  */
144 enum FcntlOperation {
145 	O_NONBLOCK     = 0x04          //
146 };
147 
148 /* Please see man pages for details
149 
150  */
151 enum AddrInfoType {
152 	AI_PASSIVE     = 0x01,         //
153 	AI_CANONNAME   = 0x02,         //
154 	AI_NUMERICHOST = 0x04,         //
155 	AI_NUMERICSERV = 0x08          //
156 };
157 
158 /* Please see man pages for details
159 
160  */
161 enum NameInfoType {
162 	NI_NOFQDN      = 0x01,         //
163 	NI_NUMERICHOST = 0x02,         //
164 	NI_NAMEREQD    = 0x04,         //
165 	NI_NUMERICSERV = 0x08,         //
166 	NI_DGRAM       = 0x10          //
167 };
168 
169 /* Please see man pages for details
170 
171  */
172 enum AddrInfoError {
173 	EAI_BADFLAGS   = -301,         //
174 	EAI_FAIL       = -302,         //
175 	EAI_FAMILY     = -303,         //
176 	EAI_MEMORY     = -304,         //
177 	EAI_NONAME     = -305,         //
178 	EAI_SOCKTYPE   = -307,         //
179 	EAI_SYSTEM     = -308          //
180 };
181 
182 /* Please see man pages for details
183 
184  */
185 enum RRsetError {
186 	ERRSET_NONAME  = -350,
187 	ERRSET_NODATA  = -351,
188 	ERRSET_NOMEMORY= -352,         //
189 	ERRSET_INVAL   = -353,         //
190 	ERRSET_FAIL    = -354
191 };
192 
193 /* Please see man pages for details
194 
195  */
196 enum SocketError {
197 	E2BIG          = -1,
198 	EACCES         = -2,     //
199 	EADDRINUSE     = -3,     //
200 	EADDRNOTAVAIL  = -4,     //
201 	EAFNOSUPPORT   = -5,     //
202 	EAGAIN         = -6,     //
203 	EALREADY       = -7,
204 	EBADF          = -8,     //
205 	EBADMSG        = -9,
206 	EBUSY          = -10,
207 	ECANCELED      = -11,
208 	ECHILD         = -12,
209 	ECONNABORTED   = -13,    //
210 	ECONNREFUSED   = -14,    //
211 	ECONNRESET     = -15,    //
212 	EDEADLK        = -16,
213 	EDESTADDRREQ   = -17,    //
214 	EDOM           = -18,
215 	EDQUOT         = -19,
216 	EEXIST         = -20,
217 	EFAULT         = -21,
218 	EFBIG          = -22,
219 	EHOSTUNREACH   = -23,
220 	EIDRM          = -24,
221 	EILSEQ         = -25,
222 	EINPROGRESS    = -26,    //
223 	EINTR          = -27,    //
224 	EINVAL         = -28,    //
225 	EIO            = -29,    //
226 	EISCONN        = -30,    //
227 	EISDIR         = -31,
228 	ELOOP          = -32,
229 	EMFILE         = -33,    //
230 	EMLINK         = -34,
231 	EMSGSIZE       = -35,    //
232 	EMULTIHOP      = -36,
233 	ENAMETOOLONG   = -37,
234 	ENETDOWN       = -38,    //
235 	ENETRESET      = -39,    //
236 	ENETUNREACH    = -40,    //
237 	ENFILE         = -41,
238 	ENOBUFS        = -42,    //
239 	ENODATA        = -43,
240 	ENODEV         = -44,
241 	ENOENT         = -45,
242 	ENOEXEC        = -46,
243 	ENOLCK         = -47,
244 	ENOLINK        = -48,
245 	ENOMEM         = -49,    //
246 	ENOMSG         = -50,
247 	ENOPROTOOPT    = -51,    //
248 	ENOSPC         = -52,
249 	ENOSR          = -53,
250 	ENOSTR         = -54,
251 	ENOSYS         = -55,
252 	ENOTCONN       = -56,    //
253 	ENOTDIR        = -57,
254 	ENOTEMPTY      = -58,
255 	ENOTSOCK       = -59,
256 	ENOTSUP        = -60,
257 	ENOTTY         = -61,
258 	ENXIO          = -62,
259 	EOPNOTSUPP     = -63,    //
260 	EOVERFLOW      = -64,
261 	EPERM          = -65,
262 	EPIPE          = -66,
263 	EPROTO         = -67,
264 	EPROTONOSUPPORT= -68,    //
265 	EPROTOTYPE     = -69,    //
266 	ERANGE         = -70,
267 	EROFS          = -71,
268 	ESPIPE         = -72,
269 	ESRCH          = -73,
270 	ESTALE         = -74,
271 	ETIME          = -75,
272 	ETIMEDOUT      = -76,    //
273 	ETXTBSY        = -77,
274 	EWOULDBLOCK    = EAGAIN,   //
275 	EXDEV          = -78
276 };
277 
278 /* Please see man pages for details
279 
280  */
281 enum InstanceOptionType {
282 	CONFIG_FILTER_INPUT                   =  0x1001,    //
283 	CONFIG_FILTER_OUTPUT                  =  0x1002,    //
284 	CONFIG_ERROR                          =  0x1003,    //
285 	CONFIG_MAC_ADDRESS                    =  0x1004,    //
286 	CONFIG_LINK_STATE                     =  0x1005,    //
287 	CONFIG_INTERFACE_STATISTICS           =  0x1006,    //
288 	CONFIG_MUTE                           =  0x1007,    //
289 	CONFIG_ARP_NUMBER                     =  0x3001,    //
290 	CONFIG_ARP_TABLE                      =  0x3002,    //
291 	CONFIG_ARP_REFRESH                    =  0x3003,    //
292 	CONFIG_ARP_ADD                        =  0x3004,    //
293 	CONFIG_ARP_REMOVE                     =  0x3005,    //
294 	CONFIG_IP_STATISTICS                  =  0x4001,    //
295 	CONFIG_IP_ADDR_NUMBER                 =  0x4002,    //
296 	CONFIG_IP_ADDR_TABLE                  =  0x4003,    //
297 	CONFIG_IP_MTU                         =  0x4004,    //
298 	CONFIG_IP_ROUTING_NUMBER              =  0x4005,    //
299 	CONFIG_IP_ROUTING_TABLE               =  0x4006,    //
300 	CONFIG_IP_ADD_ROUTE                   =  0x4007,    //
301 	CONFIG_IP_REMOVE_ROUTE                =  0x4008,    //
302 	CONFIG_IP_ADDR                        =  0x400a,    //
303 	CONFIG_IP_GATEWAY                     =  0x400b,    //
304 	CONFIG_IP_NETMASK                     =  0x400c,    //
305 	CONFIG_IP_REFRESH_ROUTE               =  0x400d,    //
306 	CONFIG_ICMP_STATISTICS                =  0x5001,    //
307 #ifdef NN_SOCKET_IP6_ENABLE
308 	CONFIG_IP6_STATISTICS                 =  0x6001,    //
309 	CONFIG_IP6_MTU                        =  0x6002,    //
310 	CONFIG_IP6_PREFIX_NUMBER              =  0x6003,    //
311 	CONFIG_IP6_PREFIX_TABLE               =  0x6004,    //
312 	CONFIG_IP6_ADD_ROUTE                  =  0x6005,    //
313 	CONFIG_IP6_REMOVE_ROUTE               =  0x6006,    //
314 	CONFIG_IP6_ADD_ADDRESS                =  0x6007,    //
315 	CONFIG_IP6_REMOVE_ADDRESS             =  0x6008,    //
316 	CONFIG_IP6_HOPLIMIT                   =  0x6009,    //
317 	CONFIG_IP6_RETRANSMIT_TIMER           =  0x600a,    //
318 	CONFIG_IP6_DUP_ADDR_DETECT_TRANSMITS  =  0x600b,    //
319 	CONFIG_IP6_INTERFACE_ID               =  0x600c,    //
320 	CONFIG_IP6_DESTINATION_CACHE_NUMBER   =  0x600d,    //
321 	CONFIG_IP6_DESTINATION_CACHE_TABLE    =  0x600e,    //
322 	CONFIG_IP6_ADDR_NUMBER                =  0x600f,    //
323 	CONFIG_IP6_ADDR_TABLE                 =  0x6010,    //
324 	CONFIG_IP6_ROUTE_NUMBER               =  0x6011,    //
325 	CONFIG_IP6_ROUTE_TABLE                =  0x6012,    //
326 	CONFIG_IP6_NEIGHBOR_CACHE_NUMBER      =  0x6013,    //
327 	CONFIG_IP6_NEIGHBOR_CACHE_TABLE       =  0x6014,    //
328 	CONFIG_IP6_DEFAULT_ROUTER_NUMBER      =  0x6015,    //
329 	CONFIG_IP6_DEFAULT_ROUTER_TABLE       =  0x6016,    //
330 	CONFIG_IP6_ADD_PREFIX                 =  0x6017,    //
331 	CONFIG_IP6_REMOVE_PREFIX              =  0x6018,    //
332 	CONFIG_ICMP6_STATISTICS               =  0x7001,    //
333 #endif /* NN_SOCKET_IP6_ENABLE */
334 	CONFIG_UDP_STATISTICS                 =  0x8001,    //
335 	CONFIG_UDP_NUMBER                     =  0x8002,    //
336 	CONFIG_UDP_TABLE                      =  0x8003,    //
337 	CONFIG_TCP_STATISTICS                 =  0x9001,    //
338 	CONFIG_TCP_NUMBER                     =  0x9002,    //
339 	CONFIG_TCP_TABLE                      =  0x9003,    //
340 	CONFIG_TCP_MSL                        =  0x9006,    //
341 	CONFIG_TCP_RTO_MIN                    =  0x9007,    //
342 	CONFIG_TCP_RTO_MAX                    =  0x9008,    //
343 	CONFIG_TCP_RTO_DEFAULT                =  0x9009,    //
344 	CONFIG_IGMP_MODE                      =  0xA001,    //
345 	CONFIG_DNS_DOMAIN_NAME                =  0xB001,    //
346 	CONFIG_DNS_SERVER_NUMBER              =  0xB002,    //
347 	CONFIG_DNS_SERVER_TABLE               =  0xB003,    //
348 	CONFIG_DHCP_REMAINING_LEASE_TIME      =  0xC001     //
349 };
350 
351 /* Please see man pages for details
352 
353  */
354 enum InstanceState {
355     STATE_INIT = 0,        //
356     STATE_WAIT_LINKUP,     //
357     STATE_ACTIVE,          //
358     STATE_MORIBUND         //
359 };
360 
361 /*---------------------------------------------------------------------------*
362  * Types/Declarations
363  *---------------------------------------------------------------------------*/
364 
365 /* Please see man pages for details
366 
367  */
368 typedef void * InstancePtr;
369 
370 /*
371  * Address length
372  */
373 #define NN_SOCKET_ETH_ALEN           6       //
374 #define NN_SOCKET_IP_ALEN            4       //
375 #define NN_SOCKET_IP6_ALEN           16      //
376 
377 /* Please see man pages for details
378 
379 
380 
381 
382 
383 
384  */
385 #define NN_SOCKET_INET_ADDRSTRLEN    16
386 #define NN_SOCKET_INET6_ADDRSTRLEN   46
387 
388 /* Please see man pages for details
389 
390  */
391 #define NN_SOCKET_INADDR_ANY           ((u32) 0x00000000)  //
392 
393 struct InAddr
394 {
395     u32         addr;   //
396 };
397 
398 /* Please see man pages for details
399 
400  */
401 struct SockAddrIn
402 {
403     u8          len;            //
404     u8          family;         //
405     u16         port;           //
406     InAddr  addr;           //
407 };
408 
409 /* Please see man pages for details
410 
411  */
412 struct In6Addr
413 {
414     u8         addr[NN_SOCKET_IP6_ALEN];    //
415 };
416 
417 /* Please see man pages for details
418 
419  */
420 struct SockAddrIn6
421 {
422     u8          len;            //
423     u8          family;         //
424     u16         port;           //
425     In6Addr addr;           //
426     u32         flowInfo;       //
427     u32         scopeId;        //
428 };
429 
430 /* Please see man pages for details
431 
432  */
433 struct SockAddr
434 {
435     u8          len;            //
436     u8          family;         //
437     u16         pad1;           //
438     u32         pad2[6];        //
439 };
440 
441 /* Please see man pages for details
442 
443  */
444 struct SockAddrStorage
445 {
446     u8          len;            //
447     u8          family;         //
448     u16         pad1;           //
449     u32         pad2[6];        //
450 };
451 
452 /* Please see man pages for details
453 
454  */
455 struct Linger
456 {
457     int         onoff;          //
458     int         linger;         //
459 };
460 
461 /* Please see man pages for details
462 
463  */
464 struct IpMreq
465 {
466    InAddr     multiaddr;      //
467    InAddr     interface;      //
468 };
469 
470 /* Please see man pages for details
471 
472  */
473 struct Ip6Mreq
474 {
475    u32            scopeId;                  //
476    u8             maddr[NN_SOCKET_IP6_ALEN];     //
477    u8             filterType;               //
478    u32            srcNum;                   //
479    u8             srcList[NN_SOCKET_IP6_ALEN];   //
480 };
481 
482 enum IP6MreqType {
483 	IP6MREQ_INCLUDE = 0,   //
484 	IP6MREQ_EXCLUDE = 1    //
485 };
486 
487 /* Please see man pages for details
488 
489  */
490 struct PollFd
491 {
492     int         fd;             //
493     int         events;         //
494     int         revents;        //
495 };
496 
497 
498 
499 /* Please see man pages for details
500 
501  */
502 struct AddrInfo
503 {
504     int             flags;         //
505     int             family;        //
506     int             sockType;      //
507     int             protocol;      //
508     unsigned        addrLen;       //
509     char*           canonName;     //
510     void*           addr;          //
511     AddrInfo*   next;          //
512 };
513 
514 struct RDataInfo {
515     u32 length;
516     u8 *data;
517 };
518 
519 /* Please see man pages for details
520 
521  */
522 struct RRSetInfo {
523     u16 rdClass;
524     u16 rdType;
525     u32 ttl;
526     u32 nrDatas;
527     char *name;
528     RDataInfo *rDatas;
529 };
530 
531 /* Please see man pages for details
532 
533  */
534 struct HostEnt
535 {
536     char*       name;           //
537     char**      aliases;        //
538     s16         addrType;       //
539     s16         length;         //
540     u8**        addrList;       //
541 };
542 
543 
544 /* Please see man pages for details
545 
546  */
547 struct DnsAddr {
548     int af;                 //
549     u8 addr[NN_SOCKET_IP6_ALEN];  //
550 };
551 
552 /* Please see man pages for details
553 
554  */
555 #define NN_SOCKET_DNSSERVER_NUM_MAX          4      //
556 #define NN_SOCKET_DOMAIN_NAME_LEN_MAX        255
557 struct DnsServerInfo {
558     DnsAddr entry[NN_SOCKET_DNSSERVER_NUM_MAX];         //
559 
560     char domain[NN_SOCKET_DOMAIN_NAME_LEN_MAX + 1];        //
561 
562 };
563 
564 #define NN_SOCKET_DNS_NAME_MAX               255 //
565 #define NN_SOCKET_MAXDNAME                   (NN_SOCKET_DNS_NAME_MAX + 1) //
566 #define NN_SOCKET_DNS_RESOLV_ADDRESS_MAX     24  //
567 #define NN_SOCKET_DNS_RESOLV_ALIASNAME_MAX   24  //
568 
569 /*
570  * Definitions for well-known address initialization
571  */
572 #define NN_SOCKET_IN6ADDR_UNSPECIFIED_INIT               {0}
573 #define NN_SOCKET_IN6ADDR_LOOPBACK_INIT                  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}
574 #define NN_SOCKET_IN6ADDR_LINKLOCAL_ALL_NODES_INIT       {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,1}
575 #define NN_SOCKET_IN6ADDR_LINKLOCAL_ALL_ROUTERS_INIT     {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,2}
576 #define NN_SOCKET_IN6ADDR_MULTICAST_SOLICITED_NODE_INIT  {0xff,0x02,0,0,0,0,0,0,0,0,0,0x01,0xff,0,0,0}
577 #define NN_SOCKET_IN6ADDR_LINKLOCAL_UNICAST_INIT         {0xfe,0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
578 #define NN_SOCKET_IN6ADDR_MULTICAST_ALL_ROUTERS_INIT     {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,16}
579 
580 #ifdef SWITCH_SO_ENDIAN_BIG
581 // Big Endian environment
582 #define NN_SOCKET_NtoHl(netlong)        ((u32) (netlong))
583 #define NN_SOCKET_NtoHs(netshort)       ((u16) (netshort))
584 #define NN_SOCKET_HtoNl(hostlong)       ((u32) (hostlong))
585 #define NN_SOCKET_HtoNs(hostshort)      ((u16) (hostshort))
586 
587 #else
588 // Little Endian environment
589 /* Please see man pages for details
590 
591  */
592 #define NN_SOCKET_NtoHl(netlong)        ( (u32)( (((u32)(netlong)>>24)&0x000000FF) | (((u32)(netlong)>> 8)&0x0000FF00) | (((u32)(netlong)<< 8)&0x00FF0000) | (((u32)(netlong)<<24)&0xFF000000) ) )
593 
594 /* Please see man pages for details
595 
596  */
597 #define NN_SOCKET_NtoHs(netshort)       ( (u16)( (((u16)(netshort)>>8)&0x00FF) | (((u16)(netshort)<<8)&0xFF00) ) )
598 
599 /* Please see man pages for details
600 
601  */
602 #define NN_SOCKET_HtoNl(hostlong)       ( (u32)( (((u32)(hostlong)>>24)&0x000000FF) | (((u32)(hostlong)>> 8)&0x0000FF00) | (((u32)(hostlong)<< 8)&0x00FF0000) | (((u32)(hostlong)<<24)&0xFF000000) ) )
603 
604 /* Please see man pages for details
605 
606  */
607 #define NN_SOCKET_HtoNs(hostshort)      ( (u16)( (((u16)(hostshort)>>8)&0x00FF) | (((u16)(hostshort)<<8)&0xFF00) ) )
608 
609 #endif
610 
611 /* Please see man pages for details
612 
613  */
614 /* nsoc_socket.c */
615 
616 /* nsoc_dns.c */
617 
618 /* nsoc_inet.c */
619 #ifdef NN_SOCKET_IP6_ENABLE
620 #endif
621 
622 /* nsoc_main.c */
623 
624 /* nsoc_state.c */
625 
626 
627 
628 
629 } // socket
630 } // nn
631 /* NN_SOCKET_SOCKET_USER_AUTOGEN_H_ */
632 #endif
633