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