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