📄 prnetdb.h
字号:
/************************************************************************* FUNCTION: PR_InitializeNetAddr(), ** DESCRIPTION:** Initialize the fields of a PRNetAddr, assigning well known values as** appropriate.**** INPUTS** PRNetAddrValue val The value to be assigned to the IP Address portion** of the network address. This can only specify the** special well known values that are equivalent to** INADDR_ANY and INADDR_LOOPBACK.**** PRUint16 port The port number to be assigned in the structure.**** OUTPUTS:** PRNetAddr *addr The address to be manipulated.**** RETURN:** PRStatus To indicate success or failure. If the latter, the** reason for the failure can be retrieved by calling** PR_GetError();***********************************************************************/typedef enum PRNetAddrValue{ PR_IpAddrNull, /* do NOT overwrite the IP address */ PR_IpAddrAny, /* assign logical INADDR_ANY to IP address */ PR_IpAddrLoopback, /* assign logical INADDR_LOOPBACK */ PR_IpAddrV4Mapped /* IPv4 mapped address */} PRNetAddrValue;NSPR_API(PRStatus) PR_InitializeNetAddr( PRNetAddrValue val, PRUint16 port, PRNetAddr *addr);/************************************************************************* FUNCTION: PR_SetNetAddr(), ** DESCRIPTION:** Set the fields of a PRNetAddr, assigning well known values as** appropriate. This function is similar to PR_InitializeNetAddr** but differs in that the address family is specified.**** INPUTS** PRNetAddrValue val The value to be assigned to the IP Address portion** of the network address. This can only specify the** special well known values that are equivalent to** INADDR_ANY and INADDR_LOOPBACK.**** PRUint16 af The address family (either PR_AF_INET or PR_AF_INET6)**** PRUint16 port The port number to be assigned in the structure.**** OUTPUTS:** PRNetAddr *addr The address to be manipulated.**** RETURN:** PRStatus To indicate success or failure. If the latter, the** reason for the failure can be retrieved by calling** PR_GetError();***********************************************************************/NSPR_API(PRStatus) PR_SetNetAddr( PRNetAddrValue val, PRUint16 af, PRUint16 port, PRNetAddr *addr);/************************************************************************* FUNCTION: ** DESCRIPTION: PR_IsNetAddrType()** Determine if the network address is of the specified type.**** INPUTS:** const PRNetAddr *addr A network address.** PRNetAddrValue The type of network address **** RETURN:** PRBool PR_TRUE if the network address is of the** specified type, else PR_FALSE.***********************************************************************/NSPR_API(PRBool) PR_IsNetAddrType(const PRNetAddr *addr, PRNetAddrValue val);/************************************************************************* FUNCTION: ** DESCRIPTION: PR_ConvertIPv4AddrToIPv6()** Convert an IPv4 addr to an (IPv4-mapped) IPv6 addr**** INPUTS:** PRUint32 v4addr IPv4 address**** OUTPUTS:** PRIPv6Addr *v6addr The converted IPv6 address**** RETURN:** void** ***********************************************************************/NSPR_API(void) PR_ConvertIPv4AddrToIPv6(PRUint32 v4addr, PRIPv6Addr *v6addr);/************************************************************************* MACRO: ** DESCRIPTION: PR_NetAddrFamily()** Get the 'family' field of a PRNetAddr union.**** INPUTS:** const PRNetAddr *addr A network address.**** RETURN:** PRUint16 The 'family' field of 'addr'.***********************************************************************/#define PR_NetAddrFamily(addr) ((addr)->raw.family)/************************************************************************* MACRO: ** DESCRIPTION: PR_NetAddrInetPort()** Get the 'port' field of a PRNetAddr union.**** INPUTS:** const PRNetAddr *addr A network address.**** RETURN:** PRUint16 The 'port' field of 'addr'.***********************************************************************/#define PR_NetAddrInetPort(addr) \ ((addr)->raw.family == PR_AF_INET6 ? (addr)->ipv6.port : (addr)->inet.port)/************************************************************************* FUNCTION: ** DESCRIPTION: PR_GetProtoByName()** Lookup a protocol entry based on protocol's name**** INPUTS:** char *protocolname Character string of the protocol's name.** char *buf A scratch buffer for the runtime to return result.** This buffer is allocated by the caller.** PRIntn bufsize Number of bytes in 'buf'. A recommnded value to** use is PR_NETDB_BUF_SIZE.** OUTPUTS:** PRHostEnt *PRProtoEnt** This structure is filled in by the runtime if** the function returns PR_SUCCESS. This structure** is allocated by the caller.** RETURN:** PRStatus PR_SUCCESS if the lookup succeeds. If it fails** the result will be PR_FAILURE and the reason** for the failure can be retrieved by PR_GetError().***********************************************************************/typedef struct PRProtoEnt { char *p_name; /* official protocol name */ char **p_aliases; /* alias list */#if defined(WIN32) || defined(WIN16) PRInt16 p_num; /* protocol # */#else PRInt32 p_num; /* protocol # */#endif} PRProtoEnt;NSPR_API(PRStatus) PR_GetProtoByName( const char* protocolname, char* buffer, PRInt32 bufsize, PRProtoEnt* result);/************************************************************************* FUNCTION: ** DESCRIPTION: PR_GetProtoByNumber()** Lookup a protocol entry based on protocol's number**** INPUTS:** PRInt32 protocolnumber** Number assigned to the protocol.** char *buf A scratch buffer for the runtime to return result.** This buffer is allocated by the caller.** PRIntn bufsize Number of bytes in 'buf'. A recommnded value to** use is PR_NETDB_BUF_SIZE.** OUTPUTS:** PRHostEnt *PRProtoEnt** This structure is filled in by the runtime if** the function returns PR_SUCCESS. This structure** is allocated by the caller.** RETURN:** PRStatus PR_SUCCESS if the lookup succeeds. If it fails** the result will be PR_FAILURE and the reason** for the failure can be retrieved by PR_GetError().***********************************************************************/NSPR_API(PRStatus) PR_GetProtoByNumber( PRInt32 protocolnumber, char* buffer, PRInt32 bufsize, PRProtoEnt* result);/************************************************************************* FUNCTIONS: PR_ntohs, PR_ntohl, PR_ntohll, PR_htons, PR_htonl, PR_htonll**** DESCRIPTION: API entries for the common byte ordering routines.**** PR_ntohs 16 bit conversion from network to host** PR_ntohl 32 bit conversion from network to host** PR_ntohll 64 bit conversion from network to host** PR_htons 16 bit conversion from host to network** PR_htonl 32 bit conversion from host to network** PR_ntonll 64 bit conversion from host to network*************************************************************************/NSPR_API(PRUint16) PR_ntohs(PRUint16);NSPR_API(PRUint32) PR_ntohl(PRUint32);NSPR_API(PRUint64) PR_ntohll(PRUint64);NSPR_API(PRUint16) PR_htons(PRUint16);NSPR_API(PRUint32) PR_htonl(PRUint32);NSPR_API(PRUint64) PR_htonll(PRUint64);PR_END_EXTERN_C#endif /* prnetdb_h___ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -