1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: nsoc_user.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 21 #ifndef NSOC_USER_H 22 #define NSOC_USER_H 23 24 #include <nn/net/compatible/nos/nos.h> /* for NOSxxxx */ 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 //#undef NSOC_IP6_ENABLE /**< Uses IPv6 */ 31 32 33 /* Please see man pages for details 34 35 */ 36 enum NSOCProtocolFamily { 37 NSOC_PF_UNSPEC = 0, /* Please see man pages for details */ 38 NSOC_PF_INET = 2, /* Please see man pages for details */ 39 NSOC_PF_INET6 = 23 /* Please see man pages for details */ 40 }; 41 42 /* Please see man pages for details 43 44 */ 45 enum NSOCAddressFamily { 46 NSOC_AF_UNSPEC = NSOC_PF_UNSPEC, /* Please see man pages for details */ 47 NSOC_AF_INET = NSOC_PF_INET, /* Please see man pages for details */ 48 NSOC_AF_INET6 = NSOC_PF_INET6 /* Please see man pages for details */ 49 }; 50 51 /* Please see man pages for details 52 53 */ 54 enum NSOCSocketType { 55 NSOC_SOCK_STREAM = 1, /* Please see man pages for details */ 56 NSOC_SOCK_DGRAM = 2 /* Please see man pages for details */ 57 }; 58 59 /* Please see man pages for details 60 61 */ 62 enum NSOCMessageFlag { 63 NSOC_MSG_OOB = 0x01, /* Please see man pages for details */ 64 NSOC_MSG_PEEK = 0x02, /* Please see man pages for details */ 65 NSOC_MSG_DONTWAIT = 0x04 /* Please see man pages for details */ 66 }; 67 68 /* Please see man pages for details 69 70 */ 71 enum NSOCPollType { 72 NSOC_POLLRDNORM = 0x0001, /* Please see man pages for details */ 73 NSOC_POLLRDBAND = 0x0002, /* Please see man pages for details */ 74 NSOC_POLLPRI = 0x0004, /* Please see man pages for details */ 75 NSOC_POLLWRNORM = 0x0008, /* Please see man pages for details */ 76 NSOC_POLLWRBAND = 0x0010, /* Please see man pages for details */ 77 NSOC_POLLERR = 0x0020, /* Please see man pages for details */ 78 NSOC_POLLHUP = 0x0040, /* Please see man pages for details */ 79 NSOC_POLLNVAL = 0x0080, /* Please see man pages for details */ 80 NSOC_POLLIN = (NSOC_POLLRDNORM | NSOC_POLLRDBAND), /* Please see man pages for details */ 81 NSOC_POLLOUT = NSOC_POLLWRNORM /* Please see man pages for details */ 82 }; 83 84 /* Please see man pages for details 85 86 */ 87 enum NSOCSocketLevel { 88 NSOC_SOL_SOCKET = 0xffff, /* Please see man pages for details */ 89 NSOC_SOL_CONFIG = 0xfffe, /* Please see man pages for details */ 90 NSOC_SOL_IP = 0, /* Please see man pages for details */ 91 NSOC_SOL_ICMP = 1, /* Please see man pages for details */ 92 NSOC_SOL_TCP = 6, /* Please see man pages for details */ 93 NSOC_SOL_UDP = 17, /* Please see man pages for details */ 94 NSOC_SOL_IP6 = 41 /* Please see man pages for details */ 95 }; 96 97 /* Please see man pages for details 98 99 */ 100 enum NSOCSocketOptionType { 101 NSOC_IP_TOS = 0x00000007, /* Please see man pages for details */ 102 NSOC_IP_TTL = 0x00000008, /* Please see man pages for details */ 103 NSOC_IP_MULTICAST_LOOP = 0x00000009, /* Please see man pages for details */ 104 NSOC_IP_MULTICAST_TTL = 0x0000000a, /* Please see man pages for details */ 105 NSOC_IP_ADD_MEMBERSHIP = 0x0000000b, /* Please see man pages for details */ 106 NSOC_IP_DROP_MEMBERSHIP = 0x0000000c, /* Please see man pages for details */ 107 NSOC_SO_REUSEADDR = 0x00000004, /* Please see man pages for details */ 108 NSOC_SO_LINGER = 0x00000080, /* Please see man pages for details */ 109 NSOC_SO_OOBINLINE = 0x00000100, /* Please see man pages for details */ 110 NSOC_SO_SNDBUF = 0x00001001, /* Please see man pages for details */ 111 NSOC_SO_RCVBUF = 0x00001002, /* Please see man pages for details */ 112 NSOC_SO_SNDLOWAT = 0x00001003, /* Please see man pages for details */ 113 NSOC_SO_RCVLOWAT = 0x00001004, /* Please see man pages for details */ 114 NSOC_SO_TYPE = 0x00001008, /* Please see man pages for details */ 115 NSOC_SO_ERROR = 0x00001009, /* Please see man pages for details */ 116 NSOC_TCP_NODELAY = 0x00002001, /* Please see man pages for details */ 117 NSOC_TCP_MAXSEG = 0x00002002, /* Please see man pages for details */ 118 NSOC_TCP_STDURG = 0x00002003, /* Please see man pages for details */ 119 NSOC_TCP_R2 = 0x00002004, /* Please see man pages for details */ 120 NSOC_TCP_R2_SYN = 0x00002005 /* Please see man pages for details */ 121 #ifdef NSOC_IP6_ENABLE 122 , 123 NSOC_IP6_MULTICAST_LOOP = 0x00010009, /* Please see man pages for details */ 124 NSOC_IP6_HOPLIMIT = 0x0001000a, /* Please see man pages for details */ 125 NSOC_IP6_ADD_MEMBERSHIP = 0x0001000b, /* Please see man pages for details */ 126 NSOC_IP6_DROP_MEMBERSHIP= 0x0001000c /* Please see man pages for details */ 127 #endif 128 }; 129 130 /* Please see man pages for details 131 132 */ 133 enum NSOCShutdownType { 134 NSOC_SHUT_RD = 0, /* Please see man pages for details */ 135 NSOC_SHUT_WR = 1, /* Please see man pages for details */ 136 NSOC_SHUT_RDWR = 2 /* Please see man pages for details */ 137 }; 138 139 /* Please see man pages for details 140 141 */ 142 enum NSOCFctrlFlag { 143 NSOC_F_GETFL = 3, /* Please see man pages for details */ 144 NSOC_F_SETFL = 4 /* Please see man pages for details */ 145 }; 146 147 /* Please see man pages for details 148 149 */ 150 enum NSOCFctrlOperation { 151 NSOC_O_NONBLOCK = 0x04 /* Please see man pages for details */ 152 }; 153 154 /* Please see man pages for details 155 156 */ 157 enum NSOCAddrInfoType { 158 NSOC_AI_PASSIVE = 0x01, /* Please see man pages for details */ 159 NSOC_AI_CANONNAME = 0x02, /* Please see man pages for details */ 160 NSOC_AI_NUMERICHOST = 0x04, /* Please see man pages for details */ 161 NSOC_AI_NUMERICSERV = 0x08 /* Please see man pages for details */ 162 }; 163 164 /* Please see man pages for details 165 166 */ 167 enum NSOCNameInfoType { 168 NSOC_NI_NOFQDN = 0x01, /* Please see man pages for details */ 169 NSOC_NI_NUMERICHOST = 0x02, /* Please see man pages for details */ 170 NSOC_NI_NAMEREQD = 0x04, /* Please see man pages for details */ 171 NSOC_NI_NUMERICSERV = 0x08, /* Please see man pages for details */ 172 NSOC_NI_DGRAM = 0x10 /* Please see man pages for details */ 173 }; 174 175 /* Please see man pages for details 176 177 */ 178 enum NSOCAddrInfoError { 179 NSOC_EAI_BADFLAGS = -301, /* Please see man pages for details */ 180 NSOC_EAI_FAIL = -302, /* Please see man pages for details */ 181 NSOC_EAI_FAMILY = -303, /* Please see man pages for details */ 182 NSOC_EAI_MEMORY = -304, /* Please see man pages for details */ 183 NSOC_EAI_NONAME = -305, /* Please see man pages for details */ 184 NSOC_EAI_SOCKTYPE = -307, /* Please see man pages for details */ 185 NSOC_EAI_SYSTEM = -308 /* Please see man pages for details */ 186 }; 187 188 /* Please see man pages for details 189 190 */ 191 enum NSOCRRsetError { 192 NSOC_ERRSET_NONAME = -350, 193 NSOC_ERRSET_NODATA = -351, 194 NSOC_ERRSET_NOMEMORY= -352, /* Please see man pages for details */ 195 NSOC_ERRSET_INVAL = -353, /* Please see man pages for details */ 196 NSOC_ERRSET_FAIL = -354 197 }; 198 199 /* Please see man pages for details 200 201 */ 202 enum NSOCSocketError { 203 NSOC_E2BIG = -1, 204 NSOC_EACCES = -2, /* Please see man pages for details */ 205 NSOC_EADDRINUSE = -3, /* Please see man pages for details */ 206 NSOC_EADDRNOTAVAIL = -4, /* Please see man pages for details */ 207 NSOC_EAFNOSUPPORT = -5, /* Please see man pages for details */ 208 NSOC_EAGAIN = -6, /* Please see man pages for details */ 209 NSOC_EALREADY = -7, 210 NSOC_EBADF = -8, /* Please see man pages for details */ 211 NSOC_EBADMSG = -9, 212 NSOC_EBUSY = -10, 213 NSOC_ECANCELED = -11, 214 NSOC_ECHILD = -12, 215 NSOC_ECONNABORTED = -13, /* Please see man pages for details */ 216 NSOC_ECONNREFUSED = -14, /* Please see man pages for details */ 217 NSOC_ECONNRESET = -15, /* Please see man pages for details */ 218 NSOC_EDEADLK = -16, 219 NSOC_EDESTADDRREQ = -17, /* Please see man pages for details */ 220 NSOC_EDOM = -18, 221 NSOC_EDQUOT = -19, 222 NSOC_EEXIST = -20, 223 NSOC_EFAULT = -21, 224 NSOC_EFBIG = -22, 225 NSOC_EHOSTUNREACH = -23, 226 NSOC_EIDRM = -24, 227 NSOC_EILSEQ = -25, 228 NSOC_EINPROGRESS = -26, /* Please see man pages for details */ 229 NSOC_EINTR = -27, /* Please see man pages for details */ 230 NSOC_EINVAL = -28, /* Please see man pages for details */ 231 NSOC_EIO = -29, /* Please see man pages for details */ 232 NSOC_EISCONN = -30, /* Please see man pages for details */ 233 NSOC_EISDIR = -31, 234 NSOC_ELOOP = -32, 235 NSOC_EMFILE = -33, /* Please see man pages for details */ 236 NSOC_EMLINK = -34, 237 NSOC_EMSGSIZE = -35, /* Please see man pages for details */ 238 NSOC_EMULTIHOP = -36, 239 NSOC_ENAMETOOLONG = -37, 240 NSOC_ENETDOWN = -38, /* Please see man pages for details */ 241 NSOC_ENETRESET = -39, /* Please see man pages for details */ 242 NSOC_ENETUNREACH = -40, /* Please see man pages for details */ 243 NSOC_ENFILE = -41, 244 NSOC_ENOBUFS = -42, /* Please see man pages for details */ 245 NSOC_ENODATA = -43, 246 NSOC_ENODEV = -44, 247 NSOC_ENOENT = -45, 248 NSOC_ENOEXEC = -46, 249 NSOC_ENOLCK = -47, 250 NSOC_ENOLINK = -48, 251 NSOC_ENOMEM = -49, /* Please see man pages for details */ 252 NSOC_ENOMSG = -50, 253 NSOC_ENOPROTOOPT = -51, /* Please see man pages for details */ 254 NSOC_ENOSPC = -52, 255 NSOC_ENOSR = -53, 256 NSOC_ENOSTR = -54, 257 NSOC_ENOSYS = -55, 258 NSOC_ENOTCONN = -56, /* Please see man pages for details */ 259 NSOC_ENOTDIR = -57, 260 NSOC_ENOTEMPTY = -58, 261 NSOC_ENOTSOCK = -59, 262 NSOC_ENOTSUP = -60, 263 NSOC_ENOTTY = -61, 264 NSOC_ENXIO = -62, 265 NSOC_EOPNOTSUPP = -63, /* Please see man pages for details */ 266 NSOC_EOVERFLOW = -64, 267 NSOC_EPERM = -65, 268 NSOC_EPIPE = -66, 269 NSOC_EPROTO = -67, 270 NSOC_EPROTONOSUPPORT= -68, /* Please see man pages for details */ 271 NSOC_EPROTOTYPE = -69, /* Please see man pages for details */ 272 NSOC_ERANGE = -70, 273 NSOC_EROFS = -71, 274 NSOC_ESPIPE = -72, 275 NSOC_ESRCH = -73, 276 NSOC_ESTALE = -74, 277 NSOC_ETIME = -75, 278 NSOC_ETIMEDOUT = -76, /* Please see man pages for details */ 279 NSOC_ETXTBSY = -77, 280 NSOC_EWOULDBLOCK = NSOC_EAGAIN, /* Please see man pages for details */ /* Posix.1g */ 281 NSOC_EXDEV = -78 282 }; 283 284 /* Please see man pages for details 285 286 */ 287 enum NSOCInstanceOptionType { 288 NSOC_CONFIG_FILTER_INPUT = 0x1001, /* Please see man pages for details */ 289 NSOC_CONFIG_FILTER_OUTPUT = 0x1002, /* Please see man pages for details */ 290 NSOC_CONFIG_ERROR = 0x1003, /* Please see man pages for details */ 291 NSOC_CONFIG_MAC_ADDRESS = 0x1004, /* Please see man pages for details */ 292 NSOC_CONFIG_LINK_STATE = 0x1005, /* Please see man pages for details */ 293 NSOC_CONFIG_INTERFACE_STATISTICS = 0x1006, /* Please see man pages for details */ 294 NSOC_CONFIG_MUTE = 0x1007, /* Please see man pages for details */ 295 NSOC_CONFIG_ARP_NUMBER = 0x3001, /* Please see man pages for details */ 296 NSOC_CONFIG_ARP_TABLE = 0x3002, /* Please see man pages for details */ 297 NSOC_CONFIG_ARP_REFRESH = 0x3003, /* Please see man pages for details */ 298 NSOC_CONFIG_ARP_ADD = 0x3004, /* Please see man pages for details */ 299 NSOC_CONFIG_ARP_REMOVE = 0x3005, /* Please see man pages for details */ 300 NSOC_CONFIG_IP_STATISTICS = 0x4001, /* Please see man pages for details */ 301 NSOC_CONFIG_IP_ADDR_NUMBER = 0x4002, /* Please see man pages for details */ 302 NSOC_CONFIG_IP_ADDR_TABLE = 0x4003, /* Please see man pages for details */ 303 NSOC_CONFIG_IP_MTU = 0x4004, /* Please see man pages for details */ 304 NSOC_CONFIG_IP_ROUTING_NUMBER = 0x4005, /* Please see man pages for details */ 305 NSOC_CONFIG_IP_ROUTING_TABLE = 0x4006, /* Please see man pages for details */ 306 NSOC_CONFIG_IP_ADD_ROUTE = 0x4007, /* Please see man pages for details */ 307 NSOC_CONFIG_IP_REMOVE_ROUTE = 0x4008, /* Please see man pages for details */ 308 NSOC_CONFIG_IP_ADDR = 0x400a, /* Please see man pages for details */ 309 NSOC_CONFIG_IP_GATEWAY = 0x400b, /* Please see man pages for details */ 310 NSOC_CONFIG_IP_NETMASK = 0x400c, /* Please see man pages for details */ 311 NSOC_CONFIG_IP_REFRESH_ROUTE = 0x400d, /* Please see man pages for details */ 312 NSOC_CONFIG_ICMP_STATISTICS = 0x5001, /* Please see man pages for details */ 313 #ifdef NSOC_IP6_ENABLE 314 NSOC_CONFIG_IP6_STATISTICS = 0x6001, /* Please see man pages for details */ 315 NSOC_CONFIG_IP6_MTU = 0x6002, /* Please see man pages for details */ 316 NSOC_CONFIG_IP6_PREFIX_NUMBER = 0x6003, /* Please see man pages for details */ 317 NSOC_CONFIG_IP6_PREFIX_TABLE = 0x6004, /* Please see man pages for details */ 318 NSOC_CONFIG_IP6_ADD_ROUTE = 0x6005, /* Please see man pages for details */ 319 NSOC_CONFIG_IP6_REMOVE_ROUTE = 0x6006, /* Please see man pages for details */ 320 NSOC_CONFIG_IP6_ADD_ADDRESS = 0x6007, /* Please see man pages for details */ 321 NSOC_CONFIG_IP6_REMOVE_ADDRESS = 0x6008, /* Please see man pages for details */ 322 NSOC_CONFIG_IP6_HOPLIMIT = 0x6009, /* Please see man pages for details */ 323 NSOC_CONFIG_IP6_RETRANSMIT_TIMER = 0x600a, /* Please see man pages for details */ 324 NSOC_CONFIG_IP6_DUP_ADDR_DETECT_TRANSMITS = 0x600b, /* Please see man pages for details */ 325 NSOC_CONFIG_IP6_INTERFACE_ID = 0x600c, /* Please see man pages for details */ 326 NSOC_CONFIG_IP6_DESTINATION_CACHE_NUMBER = 0x600d, /* Please see man pages for details */ 327 NSOC_CONFIG_IP6_DESTINATION_CACHE_TABLE = 0x600e, /* Please see man pages for details */ 328 NSOC_CONFIG_IP6_ADDR_NUMBER = 0x600f, /* Please see man pages for details */ 329 NSOC_CONFIG_IP6_ADDR_TABLE = 0x6010, /* Please see man pages for details */ 330 NSOC_CONFIG_IP6_ROUTE_NUMBER = 0x6011, /* Please see man pages for details */ 331 NSOC_CONFIG_IP6_ROUTE_TABLE = 0x6012, /* Please see man pages for details */ 332 NSOC_CONFIG_IP6_NEIGHBOR_CACHE_NUMBER = 0x6013, /* Please see man pages for details */ 333 NSOC_CONFIG_IP6_NEIGHBOR_CACHE_TABLE = 0x6014, /* Please see man pages for details */ 334 NSOC_CONFIG_IP6_DEFAULT_ROUTER_NUMBER = 0x6015, /* Please see man pages for details */ 335 NSOC_CONFIG_IP6_DEFAULT_ROUTER_TABLE = 0x6016, /* Please see man pages for details */ 336 NSOC_CONFIG_IP6_ADD_PREFIX = 0x6017, /* Please see man pages for details */ 337 NSOC_CONFIG_IP6_REMOVE_PREFIX = 0x6018, /* Please see man pages for details */ 338 NSOC_CONFIG_ICMP6_STATISTICS = 0x7001, /* Please see man pages for details */ 339 #endif /* NSOC_IP6_ENABLE */ 340 NSOC_CONFIG_UDP_STATISTICS = 0x8001, /* Please see man pages for details */ 341 NSOC_CONFIG_UDP_NUMBER = 0x8002, /* Please see man pages for details */ 342 NSOC_CONFIG_UDP_TABLE = 0x8003, /* Please see man pages for details */ 343 NSOC_CONFIG_TCP_STATISTICS = 0x9001, /* Please see man pages for details */ 344 NSOC_CONFIG_TCP_NUMBER = 0x9002, /* Please see man pages for details */ 345 NSOC_CONFIG_TCP_TABLE = 0x9003, /* Please see man pages for details */ 346 NSOC_CONFIG_TCP_MSL = 0x9006, /* Please see man pages for details */ 347 NSOC_CONFIG_TCP_RTO_MIN = 0x9007, /* Please see man pages for details */ 348 NSOC_CONFIG_TCP_RTO_MAX = 0x9008, /* Please see man pages for details */ 349 NSOC_CONFIG_TCP_RTO_DEFAULT = 0x9009, /* Please see man pages for details */ 350 NSOC_CONFIG_IGMP_MODE = 0xA001, /* Please see man pages for details */ 351 NSOC_CONFIG_DNS_DOMAIN_NAME = 0xB001, /* Please see man pages for details */ 352 NSOC_CONFIG_DNS_SERVER_NUMBER = 0xB002, /* Please see man pages for details */ 353 NSOC_CONFIG_DNS_SERVER_TABLE = 0xB003, /* Please see man pages for details */ 354 NSOC_CONFIG_DHCP_REMAINING_LEASE_TIME = 0xC001 /* Please see man pages for details */ 355 }; 356 357 /* Please see man pages for details 358 359 */ 360 enum NSOCInstanceState { 361 NSOC_STATE_INIT = 0, /* Please see man pages for details */ 362 NSOC_STATE_WAIT_LINKUP, /* Please see man pages for details */ 363 NSOC_STATE_ACTIVE, /* Please see man pages for details */ 364 NSOC_STATE_MORIBUND /* Please see man pages for details */ 365 }; 366 367 /*---------------------------------------------------------------------------* 368 * Types/Declarations 369 *---------------------------------------------------------------------------*/ 370 371 /* Please see man pages for details 372 373 */ 374 typedef void * NSOCInstancePtr; 375 376 /* 377 * Address length 378 */ 379 #define NSOC_ETH_ALEN 6 /* Please see man pages for details */ 380 #define NSOC_IP_ALEN 4 /* Please see man pages for details */ 381 #define NSOC_IP6_ALEN 16 /* Please see man pages for details */ 382 383 /* Please see man pages for details 384 385 386 387 388 389 390 */ 391 #define NSOC_INET_ADDRSTRLEN 16 392 #define NSOC_INET6_ADDRSTRLEN 46 393 394 /* Please see man pages for details 395 396 */ 397 #define NSOC_INADDR_ANY ((u32) 0x00000000) /* */ 398 399 typedef struct NSOCInAddr 400 { 401 u32 addr; /* Please see man pages for details */ 402 } NSOCInAddr; 403 404 /* Please see man pages for details 405 406 */ 407 typedef struct NSOCSockAddrIn 408 { 409 u8 len; /* Please see man pages for details */ 410 u8 family; /* Please see man pages for details */ 411 u16 port; /* Please see man pages for details */ 412 NSOCInAddr addr; /* Please see man pages for details */ 413 } NSOCSockAddrIn; 414 415 /* Please see man pages for details 416 417 */ 418 typedef struct NSOCIn6Addr 419 { 420 u8 addr[NSOC_IP6_ALEN]; /* Please see man pages for details */ 421 } NSOCIn6Addr; 422 423 /* Please see man pages for details 424 425 */ 426 typedef struct NSOCSockAddrIn6 427 { 428 u8 len; /* Please see man pages for details */ 429 u8 family; /* Please see man pages for details */ 430 u16 port; /* Please see man pages for details */ 431 NSOCIn6Addr addr; /* Please see man pages for details */ 432 u32 flowInfo; /* Please see man pages for details */ 433 u32 scopeId; /* Please see man pages for details */ 434 } NSOCSockAddrIn6; 435 436 /* Please see man pages for details 437 438 */ 439 typedef struct NSOCSockAddr 440 { 441 u8 len; /* Please see man pages for details */ 442 u8 family; /* Please see man pages for details */ 443 u16 pad1; /* Please see man pages for details */ 444 u32 pad2[6]; /* Please see man pages for details */ 445 } NSOCSockAddr; 446 447 /* Please see man pages for details 448 449 */ 450 typedef struct NSOCSockAddrStorage 451 { 452 u8 len; /* Please see man pages for details */ 453 u8 family; /* Please see man pages for details */ 454 u16 pad1; /* Please see man pages for details */ 455 u32 pad2[6]; /* Please see man pages for details */ 456 } NSOCSockAddrStorage; 457 458 /* Please see man pages for details 459 460 */ 461 typedef struct NSOCLinger 462 { 463 int onoff; /* Please see man pages for details */ 464 int linger; /* Please see man pages for details */ 465 } NSOCLinger; 466 467 /* Please see man pages for details 468 469 */ 470 typedef struct NSOCIPMreq 471 { 472 NSOCInAddr multiaddr; /* Please see man pages for details */ 473 NSOCInAddr interface; /* Please see man pages for details */ 474 } NSOCIPMreq; 475 476 /* Please see man pages for details 477 478 */ 479 typedef struct NSOCIP6Mreq 480 { 481 u32 scopeId; /* Please see man pages for details */ 482 u8 maddr[NSOC_IP6_ALEN]; /* Please see man pages for details */ 483 u8 filterType; /* Please see man pages for details */ 484 u32 srcNum; /* Please see man pages for details */ 485 u8 srcList[NSOC_IP6_ALEN]; /* Please see man pages for details */ 486 } NSOCIP6Mreq; 487 488 enum NSOCIP6MreqType { 489 NSOC_IP6MREQ_INCLUDE = 0, /* Please see man pages for details */ 490 NSOC_IP6MREQ_EXCLUDE = 1 /* Please see man pages for details */ 491 }; 492 493 /* Please see man pages for details 494 495 */ 496 typedef struct NSOCPollFD 497 { 498 int fd; /* Please see man pages for details */ 499 int events; /* Please see man pages for details */ 500 int revents; /* Please see man pages for details */ 501 } NSOCPollFD; 502 503 504 typedef struct NSOCAddrInfo NSOCAddrInfo; 505 506 /* Please see man pages for details 507 508 */ 509 struct NSOCAddrInfo 510 { 511 int flags; /* Please see man pages for details */ 512 int family; /* Please see man pages for details */ 513 int sockType; /* Please see man pages for details */ 514 int protocol; /* Please see man pages for details */ 515 unsigned addrLen; /* Please see man pages for details */ 516 char* canonName; /* Please see man pages for details */ 517 void* addr; /* Please see man pages for details */ 518 NSOCAddrInfo* next; /* Please see man pages for details */ 519 }; 520 521 typedef struct NSOCRDataInfo { 522 u32 length; 523 u8 *data; 524 } NSOCRDataInfo; 525 526 /* Please see man pages for details 527 528 */ 529 typedef struct NSOCRRSetInfo { 530 u16 rdClass; 531 u16 rdType; 532 u32 ttl; 533 u32 nrDatas; 534 char *name; 535 NSOCRDataInfo *rDatas; 536 } NSOCRRSetInfo; 537 538 /* Please see man pages for details 539 540 */ 541 typedef struct NSOCHostEnt 542 { 543 char* name; /* Please see man pages for details */ 544 char** aliases; /* Please see man pages for details */ 545 s16 addrType; /* Please see man pages for details */ 546 s16 length; /* Please see man pages for details */ 547 u8** addrList; /* Please see man pages for details */ 548 } NSOCHostEnt; 549 550 551 /* Please see man pages for details 552 553 */ 554 typedef struct NSOCDNSAddr { 555 int af; /* Please see man pages for details */ 556 u8 addr[NSOC_IP6_ALEN]; /* Please see man pages for details */ 557 } NSOCDNSAddr; 558 559 /* Please see man pages for details 560 561 */ 562 #define NSOC_DNSSERVER_NUM_MAX 4 /* Please see man pages for details */ 563 #define NSOC_DOMAIN_NAME_LEN_MAX 255 564 typedef struct NSOCDNSServerInfo { 565 NSOCDNSAddr entry[NSOC_DNSSERVER_NUM_MAX]; /* Please see man pages for details */ 566 567 char domain[NSOC_DOMAIN_NAME_LEN_MAX + 1]; /* Please see man pages for details */ 568 569 } NSOCDNSServerInfo; 570 571 #define NSOC_DNS_NAME_MAX 255 /* Please see man pages for details */ 572 #define NSOC_MAXDNAME (NSOC_DNS_NAME_MAX + 1) /* Please see man pages for details */ 573 #define NSOC_DNS_RESOLV_ADDRESS_MAX 24 /* Please see man pages for details */ 574 #define NSOC_DNS_RESOLV_ALIASNAME_MAX 24 /* Please see man pages for details */ 575 576 /* 577 * Definitions for well-known address initialization 578 */ 579 #define NSOC_IN6ADDR_UNSPECIFIED_INIT {0} 580 #define NSOC_IN6ADDR_LOOPBACK_INIT {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1} 581 #define NSOC_IN6ADDR_LINKLOCAL_ALL_NODES_INIT {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,1} 582 #define NSOC_IN6ADDR_LINKLOCAL_ALL_ROUTERS_INIT {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,2} 583 #define NSOC_IN6ADDR_MULTICAST_SOLICITED_NODE_INIT {0xff,0x02,0,0,0,0,0,0,0,0,0,0x01,0xff,0,0,0} 584 #define NSOC_IN6ADDR_LINKLOCAL_UNICAST_INIT {0xfe,0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0} 585 #define NSOC_IN6ADDR_MULTICAST_ALL_ROUTERS_INIT {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,16} 586 587 #ifdef SWITCH_SO_ENDIAN_BIG 588 // Big Endian environment 589 #define NSOC_NtoHl(netlong) ((u32) (netlong)) 590 #define NSOC_NtoHs(netshort) ((u16) (netshort)) 591 #define NSOC_HtoNl(hostlong) ((u32) (hostlong)) 592 #define NSOC_HtoNs(hostshort) ((u16) (hostshort)) 593 594 #else 595 // Little Endian environment 596 /* Please see man pages for details 597 598 */ 599 #define NSOC_NtoHl(netlong) ( (u32)( (((u32)(netlong)>>24)&0x000000FF) | (((u32)(netlong)>> 8)&0x0000FF00) | (((u32)(netlong)<< 8)&0x00FF0000) | (((u32)(netlong)<<24)&0xFF000000) ) ) 600 601 /* Please see man pages for details 602 603 */ 604 #define NSOC_NtoHs(netshort) ( (u16)( (((u16)(netshort)>>8)&0x00FF) | (((u16)(netshort)<<8)&0xFF00) ) ) 605 606 /* Please see man pages for details 607 608 */ 609 #define NSOC_HtoNl(hostlong) ( (u32)( (((u32)(hostlong)>>24)&0x000000FF) | (((u32)(hostlong)>> 8)&0x0000FF00) | (((u32)(hostlong)<< 8)&0x00FF0000) | (((u32)(hostlong)<<24)&0xFF000000) ) ) 610 611 /* Please see man pages for details 612 613 */ 614 #define NSOC_HtoNs(hostshort) ( (u16)( (((u16)(hostshort)>>8)&0x00FF) | (((u16)(hostshort)<<8)&0xFF00) ) ) 615 616 #endif 617 618 /* Please see man pages for details 619 620 */ 621 /* nsoc_socket.c */ 622 extern int NSOC_Socket(int af, int type, int protocol); 623 extern int NSOC_SocketEx(int af, int type, int protocol, void *userInfo); 624 extern int NSOC_Listen(int s, int backlog); 625 extern int NSOC_Accept(int s, void* sockAddr); 626 extern int NSOC_Bind(int s, const void* sockAddr); 627 extern int NSOC_Connect(int s, const void* sockAddr); 628 extern int NSOC_Read(int s, void* buf, int len); 629 extern int NSOC_Recv(int s, void* buf, int len, int flags); 630 extern int NSOC_RecvFrom(int s, void* buf, int len, int flags, void* sockFrom); 631 extern int NSOC_Write(int s, const void* buf, int len); 632 extern int NSOC_Send(int s, const void* buf, int len, int flags); 633 extern int NSOC_SendTo(int s, const void* buf, int len, int flags, const void* sockTo); 634 extern int NSOC_Close(int s); 635 extern int NSOC_Shutdown(int s, int how); 636 extern int NSOC_GetSockOpt(int s, int level, int optname, void* optval, int* optlen); 637 extern int NSOC_SetSockOpt(int s, int level, int optname, const void* optval, int optlen); 638 extern int NSOC_Fcntl(int s, int cmd, ...); 639 extern int NSOC_Poll(NSOCPollFD fds[], unsigned nfds, s32 timeout); 640 extern int NSOC_SockAtMark(int s); 641 extern u32 NSOC_GetHostID(NSOCInstancePtr insP); 642 extern NSOCHostEnt* NSOC_GetHostByAddr(const void* addr, int len, int type); 643 extern NSOCHostEnt* NSOC_GetHostByName(const char* name); 644 extern int NSOC_GetSockName(int s, void* sockAddr); 645 extern int NSOC_GetPeerName(int s, void* sockAddr); 646 extern int NSOC_SetDNSInstance(NSOCInstancePtr insP); 647 extern int NSOC_SetResolverIns(NSOCInstancePtr insP, NSOCDNSServerInfo *dnsServer); 648 extern int NSOC_GetResolverIns(NSOCInstancePtr insP, NSOCDNSServerInfo *dnsServer); 649 extern int NSOC_SetResolver(const NSOCInAddr* dns1, const NSOCInAddr* dns2); /* deprecated */ 650 extern int NSOC_GetResolver(NSOCInAddr* dns1, NSOCInAddr* dns2); /* deprecated */ 651 extern int NSOC_SetSuffix(const char* domainName); 652 extern int NSOC_GetSuffix(char* domainName); 653 extern int NSOC_SetInstanceOpt(NSOCInstancePtr insP, int level, int optname, const void* optval, int optlen); 654 extern int NSOC_GetInstanceOpt(NSOCInstancePtr insP, int level, int optname, void* optval, int* optlen); 655 extern void NSOC_SetLastError(int error); 656 extern int NSOC_GetLastError(void); 657 658 /* nsoc_dns.c */ 659 extern int NSOC_GetAddrInfo(const char* nodeName, const char* servName, const NSOCAddrInfo* hints, NSOCAddrInfo** res); 660 extern int NSOC_GetNameInfo(const void* sa, char* node, unsigned nodeLen, char* service, unsigned serviceLen, int flags); 661 extern void NSOC_FreeAddrInfo(NSOCAddrInfo* head); 662 extern void NSOC_FreeRRSet(NSOCRRSetInfo *rrset); 663 extern int NSOC_GetRRSetByName(const char *hostName, u16 rdClass, u16 rdType, u32 flags, NSOCRRSetInfo **res); 664 extern int NSOC_GetServiceLocation(const char* domainName, const char* servName, const NSOCAddrInfo* hints, NSOCAddrInfo** res); 665 666 /* nsoc_inet.c */ 667 extern char* NSOC_IPAtoN(const char* dotted, u8* addr); 668 extern char* NSOC_IPNtoA(const u8* addr); 669 #ifdef NSOC_IP6_ENABLE 670 extern char *NSOC_IP6AtoN(const char *dotted, u8 *addr); 671 extern char *NSOC_IP6NtoA(const u8 *addr, char *ascii, u32 buflen); 672 extern char *NSOC_IP6NtoAs(const u8 *addr); 673 #endif 674 extern int NSOC_InetAtoN(const char* cp, NSOCInAddr* inp); 675 extern char* NSOC_InetNtoA(NSOCInAddr in); 676 extern int NSOC_InetPtoN(int af, const char* src, void* dst); 677 extern const char* NSOC_InetNtoP(int af, const void* src, char* dst, unsigned len); 678 679 /* nsoc_main.c */ 680 extern u32 NSOC_IP6GetScopeIdByInstance(NSOCInstancePtr insP); 681 682 /* nsoc_state.c */ 683 extern s32 NSOC_GetStateIns(NSOCInstancePtr insP); 684 extern void NSOC_ChangeStateIns(NSOCInstancePtr insP, s32 state); 685 686 687 extern int NSOC_TST_GetNodeParam(int socket, NOSMutexId *mtxid, u8 *proto, u8 *flag, s32 *id); 688 extern int NSOC_TST_UDPGetObj(int socket, void* getobj); 689 extern int NSOC_TST_IPGetInfo(int socket, void* ipinfo); 690 extern int NSOC_TST_TCPGetObj(int socket, void* getobj); 691 692 #ifdef __cplusplus 693 } 694 #endif 695 696 /* NSOC_USER_H */ 697 #endif 698