/*---------------------------------------------------------------------------* Project: Horizon File: nsoc_user.h Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev:$ *--------------------------------------------------------------------------- */ /* Please see man pages for details */ #ifndef NSOC_USER_H #define NSOC_USER_H #include /* for NOSxxxx */ #ifdef __cplusplus extern "C" { #endif //#undef NSOC_IP6_ENABLE /**< Uses IPv6 */ /* Please see man pages for details */ enum NSOCProtocolFamily { NSOC_PF_UNSPEC = 0, /* Please see man pages for details */ NSOC_PF_INET = 2, /* Please see man pages for details */ NSOC_PF_INET6 = 23 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCAddressFamily { NSOC_AF_UNSPEC = NSOC_PF_UNSPEC, /* Please see man pages for details */ NSOC_AF_INET = NSOC_PF_INET, /* Please see man pages for details */ NSOC_AF_INET6 = NSOC_PF_INET6 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCSocketType { NSOC_SOCK_STREAM = 1, /* Please see man pages for details */ NSOC_SOCK_DGRAM = 2 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCMessageFlag { NSOC_MSG_OOB = 0x01, /* Please see man pages for details */ NSOC_MSG_PEEK = 0x02, /* Please see man pages for details */ NSOC_MSG_DONTWAIT = 0x04 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCPollType { NSOC_POLLRDNORM = 0x0001, /* Please see man pages for details */ NSOC_POLLRDBAND = 0x0002, /* Please see man pages for details */ NSOC_POLLPRI = 0x0004, /* Please see man pages for details */ NSOC_POLLWRNORM = 0x0008, /* Please see man pages for details */ NSOC_POLLWRBAND = 0x0010, /* Please see man pages for details */ NSOC_POLLERR = 0x0020, /* Please see man pages for details */ NSOC_POLLHUP = 0x0040, /* Please see man pages for details */ NSOC_POLLNVAL = 0x0080, /* Please see man pages for details */ NSOC_POLLIN = (NSOC_POLLRDNORM | NSOC_POLLRDBAND), /* Please see man pages for details */ NSOC_POLLOUT = NSOC_POLLWRNORM /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCSocketLevel { NSOC_SOL_SOCKET = 0xffff, /* Please see man pages for details */ NSOC_SOL_CONFIG = 0xfffe, /* Please see man pages for details */ NSOC_SOL_IP = 0, /* Please see man pages for details */ NSOC_SOL_ICMP = 1, /* Please see man pages for details */ NSOC_SOL_TCP = 6, /* Please see man pages for details */ NSOC_SOL_UDP = 17, /* Please see man pages for details */ NSOC_SOL_IP6 = 41 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCSocketOptionType { NSOC_IP_TOS = 0x00000007, /* Please see man pages for details */ NSOC_IP_TTL = 0x00000008, /* Please see man pages for details */ NSOC_IP_MULTICAST_LOOP = 0x00000009, /* Please see man pages for details */ NSOC_IP_MULTICAST_TTL = 0x0000000a, /* Please see man pages for details */ NSOC_IP_ADD_MEMBERSHIP = 0x0000000b, /* Please see man pages for details */ NSOC_IP_DROP_MEMBERSHIP = 0x0000000c, /* Please see man pages for details */ NSOC_SO_REUSEADDR = 0x00000004, /* Please see man pages for details */ NSOC_SO_LINGER = 0x00000080, /* Please see man pages for details */ NSOC_SO_OOBINLINE = 0x00000100, /* Please see man pages for details */ NSOC_SO_SNDBUF = 0x00001001, /* Please see man pages for details */ NSOC_SO_RCVBUF = 0x00001002, /* Please see man pages for details */ NSOC_SO_SNDLOWAT = 0x00001003, /* Please see man pages for details */ NSOC_SO_RCVLOWAT = 0x00001004, /* Please see man pages for details */ NSOC_SO_TYPE = 0x00001008, /* Please see man pages for details */ NSOC_SO_ERROR = 0x00001009, /* Please see man pages for details */ NSOC_TCP_NODELAY = 0x00002001, /* Please see man pages for details */ NSOC_TCP_MAXSEG = 0x00002002, /* Please see man pages for details */ NSOC_TCP_STDURG = 0x00002003, /* Please see man pages for details */ NSOC_TCP_R2 = 0x00002004, /* Please see man pages for details */ NSOC_TCP_R2_SYN = 0x00002005 /* Please see man pages for details */ #ifdef NSOC_IP6_ENABLE , NSOC_IP6_MULTICAST_LOOP = 0x00010009, /* Please see man pages for details */ NSOC_IP6_HOPLIMIT = 0x0001000a, /* Please see man pages for details */ NSOC_IP6_ADD_MEMBERSHIP = 0x0001000b, /* Please see man pages for details */ NSOC_IP6_DROP_MEMBERSHIP= 0x0001000c /* Please see man pages for details */ #endif }; /* Please see man pages for details */ enum NSOCShutdownType { NSOC_SHUT_RD = 0, /* Please see man pages for details */ NSOC_SHUT_WR = 1, /* Please see man pages for details */ NSOC_SHUT_RDWR = 2 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCFctrlFlag { NSOC_F_GETFL = 3, /* Please see man pages for details */ NSOC_F_SETFL = 4 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCFctrlOperation { NSOC_O_NONBLOCK = 0x04 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCAddrInfoType { NSOC_AI_PASSIVE = 0x01, /* Please see man pages for details */ NSOC_AI_CANONNAME = 0x02, /* Please see man pages for details */ NSOC_AI_NUMERICHOST = 0x04, /* Please see man pages for details */ NSOC_AI_NUMERICSERV = 0x08 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCNameInfoType { NSOC_NI_NOFQDN = 0x01, /* Please see man pages for details */ NSOC_NI_NUMERICHOST = 0x02, /* Please see man pages for details */ NSOC_NI_NAMEREQD = 0x04, /* Please see man pages for details */ NSOC_NI_NUMERICSERV = 0x08, /* Please see man pages for details */ NSOC_NI_DGRAM = 0x10 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCAddrInfoError { NSOC_EAI_BADFLAGS = -301, /* Please see man pages for details */ NSOC_EAI_FAIL = -302, /* Please see man pages for details */ NSOC_EAI_FAMILY = -303, /* Please see man pages for details */ NSOC_EAI_MEMORY = -304, /* Please see man pages for details */ NSOC_EAI_NONAME = -305, /* Please see man pages for details */ NSOC_EAI_SOCKTYPE = -307, /* Please see man pages for details */ NSOC_EAI_SYSTEM = -308 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCRRsetError { NSOC_ERRSET_NONAME = -350, NSOC_ERRSET_NODATA = -351, NSOC_ERRSET_NOMEMORY= -352, /* Please see man pages for details */ NSOC_ERRSET_INVAL = -353, /* Please see man pages for details */ NSOC_ERRSET_FAIL = -354 }; /* Please see man pages for details */ enum NSOCSocketError { NSOC_E2BIG = -1, NSOC_EACCES = -2, /* Please see man pages for details */ NSOC_EADDRINUSE = -3, /* Please see man pages for details */ NSOC_EADDRNOTAVAIL = -4, /* Please see man pages for details */ NSOC_EAFNOSUPPORT = -5, /* Please see man pages for details */ NSOC_EAGAIN = -6, /* Please see man pages for details */ NSOC_EALREADY = -7, NSOC_EBADF = -8, /* Please see man pages for details */ NSOC_EBADMSG = -9, NSOC_EBUSY = -10, NSOC_ECANCELED = -11, NSOC_ECHILD = -12, NSOC_ECONNABORTED = -13, /* Please see man pages for details */ NSOC_ECONNREFUSED = -14, /* Please see man pages for details */ NSOC_ECONNRESET = -15, /* Please see man pages for details */ NSOC_EDEADLK = -16, NSOC_EDESTADDRREQ = -17, /* Please see man pages for details */ NSOC_EDOM = -18, NSOC_EDQUOT = -19, NSOC_EEXIST = -20, NSOC_EFAULT = -21, NSOC_EFBIG = -22, NSOC_EHOSTUNREACH = -23, NSOC_EIDRM = -24, NSOC_EILSEQ = -25, NSOC_EINPROGRESS = -26, /* Please see man pages for details */ NSOC_EINTR = -27, /* Please see man pages for details */ NSOC_EINVAL = -28, /* Please see man pages for details */ NSOC_EIO = -29, /* Please see man pages for details */ NSOC_EISCONN = -30, /* Please see man pages for details */ NSOC_EISDIR = -31, NSOC_ELOOP = -32, NSOC_EMFILE = -33, /* Please see man pages for details */ NSOC_EMLINK = -34, NSOC_EMSGSIZE = -35, /* Please see man pages for details */ NSOC_EMULTIHOP = -36, NSOC_ENAMETOOLONG = -37, NSOC_ENETDOWN = -38, /* Please see man pages for details */ NSOC_ENETRESET = -39, /* Please see man pages for details */ NSOC_ENETUNREACH = -40, /* Please see man pages for details */ NSOC_ENFILE = -41, NSOC_ENOBUFS = -42, /* Please see man pages for details */ NSOC_ENODATA = -43, NSOC_ENODEV = -44, NSOC_ENOENT = -45, NSOC_ENOEXEC = -46, NSOC_ENOLCK = -47, NSOC_ENOLINK = -48, NSOC_ENOMEM = -49, /* Please see man pages for details */ NSOC_ENOMSG = -50, NSOC_ENOPROTOOPT = -51, /* Please see man pages for details */ NSOC_ENOSPC = -52, NSOC_ENOSR = -53, NSOC_ENOSTR = -54, NSOC_ENOSYS = -55, NSOC_ENOTCONN = -56, /* Please see man pages for details */ NSOC_ENOTDIR = -57, NSOC_ENOTEMPTY = -58, NSOC_ENOTSOCK = -59, NSOC_ENOTSUP = -60, NSOC_ENOTTY = -61, NSOC_ENXIO = -62, NSOC_EOPNOTSUPP = -63, /* Please see man pages for details */ NSOC_EOVERFLOW = -64, NSOC_EPERM = -65, NSOC_EPIPE = -66, NSOC_EPROTO = -67, NSOC_EPROTONOSUPPORT= -68, /* Please see man pages for details */ NSOC_EPROTOTYPE = -69, /* Please see man pages for details */ NSOC_ERANGE = -70, NSOC_EROFS = -71, NSOC_ESPIPE = -72, NSOC_ESRCH = -73, NSOC_ESTALE = -74, NSOC_ETIME = -75, NSOC_ETIMEDOUT = -76, /* Please see man pages for details */ NSOC_ETXTBSY = -77, NSOC_EWOULDBLOCK = NSOC_EAGAIN, /* Please see man pages for details */ /* Posix.1g */ NSOC_EXDEV = -78 }; /* Please see man pages for details */ enum NSOCInstanceOptionType { NSOC_CONFIG_FILTER_INPUT = 0x1001, /* Please see man pages for details */ NSOC_CONFIG_FILTER_OUTPUT = 0x1002, /* Please see man pages for details */ NSOC_CONFIG_ERROR = 0x1003, /* Please see man pages for details */ NSOC_CONFIG_MAC_ADDRESS = 0x1004, /* Please see man pages for details */ NSOC_CONFIG_LINK_STATE = 0x1005, /* Please see man pages for details */ NSOC_CONFIG_INTERFACE_STATISTICS = 0x1006, /* Please see man pages for details */ NSOC_CONFIG_MUTE = 0x1007, /* Please see man pages for details */ NSOC_CONFIG_ARP_NUMBER = 0x3001, /* Please see man pages for details */ NSOC_CONFIG_ARP_TABLE = 0x3002, /* Please see man pages for details */ NSOC_CONFIG_ARP_REFRESH = 0x3003, /* Please see man pages for details */ NSOC_CONFIG_ARP_ADD = 0x3004, /* Please see man pages for details */ NSOC_CONFIG_ARP_REMOVE = 0x3005, /* Please see man pages for details */ NSOC_CONFIG_IP_STATISTICS = 0x4001, /* Please see man pages for details */ NSOC_CONFIG_IP_ADDR_NUMBER = 0x4002, /* Please see man pages for details */ NSOC_CONFIG_IP_ADDR_TABLE = 0x4003, /* Please see man pages for details */ NSOC_CONFIG_IP_MTU = 0x4004, /* Please see man pages for details */ NSOC_CONFIG_IP_ROUTING_NUMBER = 0x4005, /* Please see man pages for details */ NSOC_CONFIG_IP_ROUTING_TABLE = 0x4006, /* Please see man pages for details */ NSOC_CONFIG_IP_ADD_ROUTE = 0x4007, /* Please see man pages for details */ NSOC_CONFIG_IP_REMOVE_ROUTE = 0x4008, /* Please see man pages for details */ NSOC_CONFIG_IP_ADDR = 0x400a, /* Please see man pages for details */ NSOC_CONFIG_IP_GATEWAY = 0x400b, /* Please see man pages for details */ NSOC_CONFIG_IP_NETMASK = 0x400c, /* Please see man pages for details */ NSOC_CONFIG_IP_REFRESH_ROUTE = 0x400d, /* Please see man pages for details */ NSOC_CONFIG_ICMP_STATISTICS = 0x5001, /* Please see man pages for details */ #ifdef NSOC_IP6_ENABLE NSOC_CONFIG_IP6_STATISTICS = 0x6001, /* Please see man pages for details */ NSOC_CONFIG_IP6_MTU = 0x6002, /* Please see man pages for details */ NSOC_CONFIG_IP6_PREFIX_NUMBER = 0x6003, /* Please see man pages for details */ NSOC_CONFIG_IP6_PREFIX_TABLE = 0x6004, /* Please see man pages for details */ NSOC_CONFIG_IP6_ADD_ROUTE = 0x6005, /* Please see man pages for details */ NSOC_CONFIG_IP6_REMOVE_ROUTE = 0x6006, /* Please see man pages for details */ NSOC_CONFIG_IP6_ADD_ADDRESS = 0x6007, /* Please see man pages for details */ NSOC_CONFIG_IP6_REMOVE_ADDRESS = 0x6008, /* Please see man pages for details */ NSOC_CONFIG_IP6_HOPLIMIT = 0x6009, /* Please see man pages for details */ NSOC_CONFIG_IP6_RETRANSMIT_TIMER = 0x600a, /* Please see man pages for details */ NSOC_CONFIG_IP6_DUP_ADDR_DETECT_TRANSMITS = 0x600b, /* Please see man pages for details */ NSOC_CONFIG_IP6_INTERFACE_ID = 0x600c, /* Please see man pages for details */ NSOC_CONFIG_IP6_DESTINATION_CACHE_NUMBER = 0x600d, /* Please see man pages for details */ NSOC_CONFIG_IP6_DESTINATION_CACHE_TABLE = 0x600e, /* Please see man pages for details */ NSOC_CONFIG_IP6_ADDR_NUMBER = 0x600f, /* Please see man pages for details */ NSOC_CONFIG_IP6_ADDR_TABLE = 0x6010, /* Please see man pages for details */ NSOC_CONFIG_IP6_ROUTE_NUMBER = 0x6011, /* Please see man pages for details */ NSOC_CONFIG_IP6_ROUTE_TABLE = 0x6012, /* Please see man pages for details */ NSOC_CONFIG_IP6_NEIGHBOR_CACHE_NUMBER = 0x6013, /* Please see man pages for details */ NSOC_CONFIG_IP6_NEIGHBOR_CACHE_TABLE = 0x6014, /* Please see man pages for details */ NSOC_CONFIG_IP6_DEFAULT_ROUTER_NUMBER = 0x6015, /* Please see man pages for details */ NSOC_CONFIG_IP6_DEFAULT_ROUTER_TABLE = 0x6016, /* Please see man pages for details */ NSOC_CONFIG_IP6_ADD_PREFIX = 0x6017, /* Please see man pages for details */ NSOC_CONFIG_IP6_REMOVE_PREFIX = 0x6018, /* Please see man pages for details */ NSOC_CONFIG_ICMP6_STATISTICS = 0x7001, /* Please see man pages for details */ #endif /* NSOC_IP6_ENABLE */ NSOC_CONFIG_UDP_STATISTICS = 0x8001, /* Please see man pages for details */ NSOC_CONFIG_UDP_NUMBER = 0x8002, /* Please see man pages for details */ NSOC_CONFIG_UDP_TABLE = 0x8003, /* Please see man pages for details */ NSOC_CONFIG_TCP_STATISTICS = 0x9001, /* Please see man pages for details */ NSOC_CONFIG_TCP_NUMBER = 0x9002, /* Please see man pages for details */ NSOC_CONFIG_TCP_TABLE = 0x9003, /* Please see man pages for details */ NSOC_CONFIG_TCP_MSL = 0x9006, /* Please see man pages for details */ NSOC_CONFIG_TCP_RTO_MIN = 0x9007, /* Please see man pages for details */ NSOC_CONFIG_TCP_RTO_MAX = 0x9008, /* Please see man pages for details */ NSOC_CONFIG_TCP_RTO_DEFAULT = 0x9009, /* Please see man pages for details */ NSOC_CONFIG_IGMP_MODE = 0xA001, /* Please see man pages for details */ NSOC_CONFIG_DNS_DOMAIN_NAME = 0xB001, /* Please see man pages for details */ NSOC_CONFIG_DNS_SERVER_NUMBER = 0xB002, /* Please see man pages for details */ NSOC_CONFIG_DNS_SERVER_TABLE = 0xB003, /* Please see man pages for details */ NSOC_CONFIG_DHCP_REMAINING_LEASE_TIME = 0xC001 /* Please see man pages for details */ }; /* Please see man pages for details */ enum NSOCInstanceState { NSOC_STATE_INIT = 0, /* Please see man pages for details */ NSOC_STATE_WAIT_LINKUP, /* Please see man pages for details */ NSOC_STATE_ACTIVE, /* Please see man pages for details */ NSOC_STATE_MORIBUND /* Please see man pages for details */ }; /*---------------------------------------------------------------------------* * Types/Declarations *---------------------------------------------------------------------------*/ /* Please see man pages for details */ typedef void * NSOCInstancePtr; /* * Address length */ #define NSOC_ETH_ALEN 6 /* Please see man pages for details */ #define NSOC_IP_ALEN 4 /* Please see man pages for details */ #define NSOC_IP6_ALEN 16 /* Please see man pages for details */ /* Please see man pages for details */ #define NSOC_INET_ADDRSTRLEN 16 #define NSOC_INET6_ADDRSTRLEN 46 /* Please see man pages for details */ #define NSOC_INADDR_ANY ((u32) 0x00000000) /* */ typedef struct NSOCInAddr { u32 addr; /* Please see man pages for details */ } NSOCInAddr; /* Please see man pages for details */ typedef struct NSOCSockAddrIn { u8 len; /* Please see man pages for details */ u8 family; /* Please see man pages for details */ u16 port; /* Please see man pages for details */ NSOCInAddr addr; /* Please see man pages for details */ } NSOCSockAddrIn; /* Please see man pages for details */ typedef struct NSOCIn6Addr { u8 addr[NSOC_IP6_ALEN]; /* Please see man pages for details */ } NSOCIn6Addr; /* Please see man pages for details */ typedef struct NSOCSockAddrIn6 { u8 len; /* Please see man pages for details */ u8 family; /* Please see man pages for details */ u16 port; /* Please see man pages for details */ NSOCIn6Addr addr; /* Please see man pages for details */ u32 flowInfo; /* Please see man pages for details */ u32 scopeId; /* Please see man pages for details */ } NSOCSockAddrIn6; /* Please see man pages for details */ typedef struct NSOCSockAddr { u8 len; /* Please see man pages for details */ u8 family; /* Please see man pages for details */ u16 pad1; /* Please see man pages for details */ u32 pad2[6]; /* Please see man pages for details */ } NSOCSockAddr; /* Please see man pages for details */ typedef struct NSOCSockAddrStorage { u8 len; /* Please see man pages for details */ u8 family; /* Please see man pages for details */ u16 pad1; /* Please see man pages for details */ u32 pad2[6]; /* Please see man pages for details */ } NSOCSockAddrStorage; /* Please see man pages for details */ typedef struct NSOCLinger { int onoff; /* Please see man pages for details */ int linger; /* Please see man pages for details */ } NSOCLinger; /* Please see man pages for details */ typedef struct NSOCIPMreq { NSOCInAddr multiaddr; /* Please see man pages for details */ NSOCInAddr interface; /* Please see man pages for details */ } NSOCIPMreq; /* Please see man pages for details */ typedef struct NSOCIP6Mreq { u32 scopeId; /* Please see man pages for details */ u8 maddr[NSOC_IP6_ALEN]; /* Please see man pages for details */ u8 filterType; /* Please see man pages for details */ u32 srcNum; /* Please see man pages for details */ u8 srcList[NSOC_IP6_ALEN]; /* Please see man pages for details */ } NSOCIP6Mreq; enum NSOCIP6MreqType { NSOC_IP6MREQ_INCLUDE = 0, /* Please see man pages for details */ NSOC_IP6MREQ_EXCLUDE = 1 /* Please see man pages for details */ }; /* Please see man pages for details */ typedef struct NSOCPollFD { int fd; /* Please see man pages for details */ int events; /* Please see man pages for details */ int revents; /* Please see man pages for details */ } NSOCPollFD; typedef struct NSOCAddrInfo NSOCAddrInfo; /* Please see man pages for details */ struct NSOCAddrInfo { int flags; /* Please see man pages for details */ int family; /* Please see man pages for details */ int sockType; /* Please see man pages for details */ int protocol; /* Please see man pages for details */ unsigned addrLen; /* Please see man pages for details */ char* canonName; /* Please see man pages for details */ void* addr; /* Please see man pages for details */ NSOCAddrInfo* next; /* Please see man pages for details */ }; typedef struct NSOCRDataInfo { u32 length; u8 *data; } NSOCRDataInfo; /* Please see man pages for details */ typedef struct NSOCRRSetInfo { u16 rdClass; u16 rdType; u32 ttl; u32 nrDatas; char *name; NSOCRDataInfo *rDatas; } NSOCRRSetInfo; /* Please see man pages for details */ typedef struct NSOCHostEnt { char* name; /* Please see man pages for details */ char** aliases; /* Please see man pages for details */ s16 addrType; /* Please see man pages for details */ s16 length; /* Please see man pages for details */ u8** addrList; /* Please see man pages for details */ } NSOCHostEnt; /* Please see man pages for details */ typedef struct NSOCDNSAddr { int af; /* Please see man pages for details */ u8 addr[NSOC_IP6_ALEN]; /* Please see man pages for details */ } NSOCDNSAddr; /* Please see man pages for details */ #define NSOC_DNSSERVER_NUM_MAX 4 /* Please see man pages for details */ #define NSOC_DOMAIN_NAME_LEN_MAX 255 typedef struct NSOCDNSServerInfo { NSOCDNSAddr entry[NSOC_DNSSERVER_NUM_MAX]; /* Please see man pages for details */ char domain[NSOC_DOMAIN_NAME_LEN_MAX + 1]; /* Please see man pages for details */ } NSOCDNSServerInfo; #define NSOC_DNS_NAME_MAX 255 /* Please see man pages for details */ #define NSOC_MAXDNAME (NSOC_DNS_NAME_MAX + 1) /* Please see man pages for details */ #define NSOC_DNS_RESOLV_ADDRESS_MAX 24 /* Please see man pages for details */ #define NSOC_DNS_RESOLV_ALIASNAME_MAX 24 /* Please see man pages for details */ /* * Definitions for well-known address initialization */ #define NSOC_IN6ADDR_UNSPECIFIED_INIT {0} #define NSOC_IN6ADDR_LOOPBACK_INIT {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1} #define NSOC_IN6ADDR_LINKLOCAL_ALL_NODES_INIT {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,1} #define NSOC_IN6ADDR_LINKLOCAL_ALL_ROUTERS_INIT {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,2} #define NSOC_IN6ADDR_MULTICAST_SOLICITED_NODE_INIT {0xff,0x02,0,0,0,0,0,0,0,0,0,0x01,0xff,0,0,0} #define NSOC_IN6ADDR_LINKLOCAL_UNICAST_INIT {0xfe,0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0} #define NSOC_IN6ADDR_MULTICAST_ALL_ROUTERS_INIT {0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,16} #ifdef SWITCH_SO_ENDIAN_BIG // Big Endian environment #define NSOC_NtoHl(netlong) ((u32) (netlong)) #define NSOC_NtoHs(netshort) ((u16) (netshort)) #define NSOC_HtoNl(hostlong) ((u32) (hostlong)) #define NSOC_HtoNs(hostshort) ((u16) (hostshort)) #else // Little Endian environment /* Please see man pages for details */ #define NSOC_NtoHl(netlong) ( (u32)( (((u32)(netlong)>>24)&0x000000FF) | (((u32)(netlong)>> 8)&0x0000FF00) | (((u32)(netlong)<< 8)&0x00FF0000) | (((u32)(netlong)<<24)&0xFF000000) ) ) /* Please see man pages for details */ #define NSOC_NtoHs(netshort) ( (u16)( (((u16)(netshort)>>8)&0x00FF) | (((u16)(netshort)<<8)&0xFF00) ) ) /* Please see man pages for details */ #define NSOC_HtoNl(hostlong) ( (u32)( (((u32)(hostlong)>>24)&0x000000FF) | (((u32)(hostlong)>> 8)&0x0000FF00) | (((u32)(hostlong)<< 8)&0x00FF0000) | (((u32)(hostlong)<<24)&0xFF000000) ) ) /* Please see man pages for details */ #define NSOC_HtoNs(hostshort) ( (u16)( (((u16)(hostshort)>>8)&0x00FF) | (((u16)(hostshort)<<8)&0xFF00) ) ) #endif /* Please see man pages for details */ /* nsoc_socket.c */ extern int NSOC_Socket(int af, int type, int protocol); extern int NSOC_SocketEx(int af, int type, int protocol, void *userInfo); extern int NSOC_Listen(int s, int backlog); extern int NSOC_Accept(int s, void* sockAddr); extern int NSOC_Bind(int s, const void* sockAddr); extern int NSOC_Connect(int s, const void* sockAddr); extern int NSOC_Read(int s, void* buf, int len); extern int NSOC_Recv(int s, void* buf, int len, int flags); extern int NSOC_RecvFrom(int s, void* buf, int len, int flags, void* sockFrom); extern int NSOC_Write(int s, const void* buf, int len); extern int NSOC_Send(int s, const void* buf, int len, int flags); extern int NSOC_SendTo(int s, const void* buf, int len, int flags, const void* sockTo); extern int NSOC_Close(int s); extern int NSOC_Shutdown(int s, int how); extern int NSOC_GetSockOpt(int s, int level, int optname, void* optval, int* optlen); extern int NSOC_SetSockOpt(int s, int level, int optname, const void* optval, int optlen); extern int NSOC_Fcntl(int s, int cmd, ...); extern int NSOC_Poll(NSOCPollFD fds[], unsigned nfds, s32 timeout); extern int NSOC_SockAtMark(int s); extern u32 NSOC_GetHostID(NSOCInstancePtr insP); extern NSOCHostEnt* NSOC_GetHostByAddr(const void* addr, int len, int type); extern NSOCHostEnt* NSOC_GetHostByName(const char* name); extern int NSOC_GetSockName(int s, void* sockAddr); extern int NSOC_GetPeerName(int s, void* sockAddr); extern int NSOC_SetDNSInstance(NSOCInstancePtr insP); extern int NSOC_SetResolverIns(NSOCInstancePtr insP, NSOCDNSServerInfo *dnsServer); extern int NSOC_GetResolverIns(NSOCInstancePtr insP, NSOCDNSServerInfo *dnsServer); extern int NSOC_SetResolver(const NSOCInAddr* dns1, const NSOCInAddr* dns2); /* deprecated */ extern int NSOC_GetResolver(NSOCInAddr* dns1, NSOCInAddr* dns2); /* deprecated */ extern int NSOC_SetSuffix(const char* domainName); extern int NSOC_GetSuffix(char* domainName); extern int NSOC_SetInstanceOpt(NSOCInstancePtr insP, int level, int optname, const void* optval, int optlen); extern int NSOC_GetInstanceOpt(NSOCInstancePtr insP, int level, int optname, void* optval, int* optlen); extern void NSOC_SetLastError(int error); extern int NSOC_GetLastError(void); /* nsoc_dns.c */ extern int NSOC_GetAddrInfo(const char* nodeName, const char* servName, const NSOCAddrInfo* hints, NSOCAddrInfo** res); extern int NSOC_GetNameInfo(const void* sa, char* node, unsigned nodeLen, char* service, unsigned serviceLen, int flags); extern void NSOC_FreeAddrInfo(NSOCAddrInfo* head); extern void NSOC_FreeRRSet(NSOCRRSetInfo *rrset); extern int NSOC_GetRRSetByName(const char *hostName, u16 rdClass, u16 rdType, u32 flags, NSOCRRSetInfo **res); extern int NSOC_GetServiceLocation(const char* domainName, const char* servName, const NSOCAddrInfo* hints, NSOCAddrInfo** res); /* nsoc_inet.c */ extern char* NSOC_IPAtoN(const char* dotted, u8* addr); extern char* NSOC_IPNtoA(const u8* addr); #ifdef NSOC_IP6_ENABLE extern char *NSOC_IP6AtoN(const char *dotted, u8 *addr); extern char *NSOC_IP6NtoA(const u8 *addr, char *ascii, u32 buflen); extern char *NSOC_IP6NtoAs(const u8 *addr); #endif extern int NSOC_InetAtoN(const char* cp, NSOCInAddr* inp); extern char* NSOC_InetNtoA(NSOCInAddr in); extern int NSOC_InetPtoN(int af, const char* src, void* dst); extern const char* NSOC_InetNtoP(int af, const void* src, char* dst, unsigned len); /* nsoc_main.c */ extern u32 NSOC_IP6GetScopeIdByInstance(NSOCInstancePtr insP); /* nsoc_state.c */ extern s32 NSOC_GetStateIns(NSOCInstancePtr insP); extern void NSOC_ChangeStateIns(NSOCInstancePtr insP, s32 state); extern int NSOC_TST_GetNodeParam(int socket, NOSMutexId *mtxid, u8 *proto, u8 *flag, s32 *id); extern int NSOC_TST_UDPGetObj(int socket, void* getobj); extern int NSOC_TST_IPGetInfo(int socket, void* ipinfo); extern int NSOC_TST_TCPGetObj(int socket, void* getobj); #ifdef __cplusplus } #endif /* NSOC_USER_H */ #endif