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