Annotation of sbbs/javascript/include/mozilla/nspr/prnetdb.h, revision 1.1

1.1     ! root        1: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
        !             2: /* 
        !             3:  * The contents of this file are subject to the Mozilla Public
        !             4:  * License Version 1.1 (the "License"); you may not use this file
        !             5:  * except in compliance with the License. You may obtain a copy of
        !             6:  * the License at http://www.mozilla.org/MPL/
        !             7:  * 
        !             8:  * Software distributed under the License is distributed on an "AS
        !             9:  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
        !            10:  * implied. See the License for the specific language governing
        !            11:  * rights and limitations under the License.
        !            12:  * 
        !            13:  * The Original Code is the Netscape Portable Runtime (NSPR).
        !            14:  * 
        !            15:  * The Initial Developer of the Original Code is Netscape
        !            16:  * Communications Corporation.  Portions created by Netscape are 
        !            17:  * Copyright (C) 1998-2000 Netscape Communications Corporation.  All
        !            18:  * Rights Reserved.
        !            19:  * 
        !            20:  * Contributor(s):
        !            21:  * 
        !            22:  * Alternatively, the contents of this file may be used under the
        !            23:  * terms of the GNU General Public License Version 2 or later (the
        !            24:  * "GPL"), in which case the provisions of the GPL are applicable 
        !            25:  * instead of those above.  If you wish to allow use of your 
        !            26:  * version of this file only under the terms of the GPL and not to
        !            27:  * allow others to use your version of this file under the MPL,
        !            28:  * indicate your decision by deleting the provisions above and
        !            29:  * replace them with the notice and other provisions required by
        !            30:  * the GPL.  If you do not delete the provisions above, a recipient
        !            31:  * may use your version of this file under either the MPL or the
        !            32:  * GPL.
        !            33:  */
        !            34: 
        !            35: #ifndef prnetdb_h___
        !            36: #define prnetdb_h___
        !            37: 
        !            38: #include "prtypes.h"
        !            39: #include "prio.h"
        !            40: 
        !            41: PR_BEGIN_EXTERN_C
        !            42: 
        !            43: 
        !            44: /*
        !            45:  *********************************************************************
        !            46:  *  Translate an Internet address to/from a character string
        !            47:  *********************************************************************
        !            48:  */
        !            49: NSPR_API(PRStatus) PR_StringToNetAddr(
        !            50:     const char *string, PRNetAddr *addr);
        !            51: 
        !            52: NSPR_API(PRStatus) PR_NetAddrToString(
        !            53:     const PRNetAddr *addr, char *string, PRUint32 size);
        !            54: 
        !            55: /*
        !            56: ** Structures returned by network data base library.  All addresses are
        !            57: ** supplied in host order, and returned in network order (suitable for
        !            58: ** use in system calls).
        !            59: */
        !            60: /*
        !            61: ** Beware that WINSOCK.H defines h_addrtype and h_length as short.
        !            62: ** Client code does direct struct copies of hostent to PRHostEnt and
        !            63: ** hence the ifdef.
        !            64: */
        !            65: typedef struct PRHostEnt {
        !            66:     char *h_name;       /* official name of host */
        !            67:     char **h_aliases;   /* alias list */
        !            68: #if defined(WIN32) || defined(WIN16)
        !            69:     PRInt16 h_addrtype; /* host address type */
        !            70:     PRInt16 h_length;   /* length of address */
        !            71: #else
        !            72:     PRInt32 h_addrtype; /* host address type */
        !            73:     PRInt32 h_length;   /* length of address */
        !            74: #endif
        !            75:     char **h_addr_list; /* list of addresses from name server */
        !            76: } PRHostEnt;
        !            77: 
        !            78: /* A safe size to use that will mostly work... */
        !            79: #if (defined(AIX) && defined(_THREAD_SAFE)) || defined(OSF1)
        !            80: #define PR_NETDB_BUF_SIZE sizeof(struct protoent_data)
        !            81: #else
        !            82: #define PR_NETDB_BUF_SIZE 1024
        !            83: #endif
        !            84: 
        !            85: /***********************************************************************
        !            86: ** FUNCTION:   
        !            87: ** DESCRIPTION:    PR_GetHostByName()
        !            88: ** Lookup a host by name.
        !            89: **
        !            90: ** INPUTS:
        !            91: **  char *hostname      Character string defining the host name of interest
        !            92: **  char *buf           A scratch buffer for the runtime to return result.
        !            93: **                      This buffer is allocated by the caller.
        !            94: **  PRIntn bufsize      Number of bytes in 'buf'. A recommnded value to
        !            95: **                      use is PR_NETDB_BUF_SIZE.
        !            96: ** OUTPUTS:
        !            97: **  PRHostEnt *hostentry
        !            98: **                      This structure is filled in by the runtime if
        !            99: **                      the function returns PR_SUCCESS. This structure
        !           100: **                      is allocated by the caller.
        !           101: ** RETURN:
        !           102: **  PRStatus            PR_SUCCESS if the lookup succeeds. If it fails
        !           103: **                      the result will be PR_FAILURE and the reason
        !           104: **                      for the failure can be retrieved by PR_GetError().
        !           105: ***********************************************************************/
        !           106: NSPR_API(PRStatus) PR_GetHostByName(
        !           107:     const char *hostname, char *buf, PRIntn bufsize, PRHostEnt *hostentry);
        !           108: 
        !           109: /***********************************************************************
        !           110: ** FUNCTION:   
        !           111: ** DESCRIPTION:    PR_GetIPNodeByName()
        !           112: ** Lookup a host by name. Equivalent to getipnodebyname(AI_DEFAULT)
        !           113: ** of RFC 2553.
        !           114: **
        !           115: ** INPUTS:
        !           116: **  char *hostname      Character string defining the host name of interest
        !           117: **  PRUint16 af         Address family (either PR_AF_INET or PR_AF_INET6)
        !           118: **  PRIntn flags        Specifies the types of addresses that are searched
        !           119: **                      for and the types of addresses that are returned.
        !           120: **                      The only supported flag is PR_AI_DEFAULT.
        !           121: **  char *buf           A scratch buffer for the runtime to return result.
        !           122: **                      This buffer is allocated by the caller.
        !           123: **  PRIntn bufsize      Number of bytes in 'buf'. A recommnded value to
        !           124: **                      use is PR_NETDB_BUF_SIZE.
        !           125: ** OUTPUTS:
        !           126: **  PRHostEnt *hostentry
        !           127: **                      This structure is filled in by the runtime if
        !           128: **                      the function returns PR_SUCCESS. This structure
        !           129: **                      is allocated by the caller.
        !           130: ** RETURN:
        !           131: **  PRStatus            PR_SUCCESS if the lookup succeeds. If it fails
        !           132: **                      the result will be PR_FAILURE and the reason
        !           133: **                      for the failure can be retrieved by PR_GetError().
        !           134: ***********************************************************************/
        !           135: 
        !           136: 
        !           137: #define PR_AI_ALL        0x08
        !           138: #define PR_AI_V4MAPPED   0x10
        !           139: #define PR_AI_ADDRCONFIG 0x20
        !           140: #define PR_AI_DEFAULT    (PR_AI_V4MAPPED | PR_AI_ADDRCONFIG)
        !           141: 
        !           142: NSPR_API(PRStatus) PR_GetIPNodeByName(
        !           143:     const char *hostname,
        !           144:     PRUint16 af,
        !           145:     PRIntn flags,
        !           146:     char *buf,
        !           147:     PRIntn bufsize,
        !           148:     PRHostEnt *hostentry);
        !           149: 
        !           150: /***********************************************************************
        !           151: ** FUNCTION:   
        !           152: ** DESCRIPTION:    PR_GetHostByAddr()
        !           153: ** Lookup a host entry by its network address.
        !           154: **
        !           155: ** INPUTS:
        !           156: **  char *hostaddr      IP address of host in question
        !           157: **  char *buf           A scratch buffer for the runtime to return result.
        !           158: **                      This buffer is allocated by the caller.
        !           159: **  PRIntn bufsize      Number of bytes in 'buf'. A recommnded value to
        !           160: **                      use is PR_NETDB_BUF_SIZE.
        !           161: ** OUTPUTS:
        !           162: **  PRHostEnt *hostentry
        !           163: **                      This structure is filled in by the runtime if
        !           164: **                      the function returns PR_SUCCESS. This structure
        !           165: **                      is allocated by the caller.
        !           166: ** RETURN:
        !           167: **  PRStatus            PR_SUCCESS if the lookup succeeds. If it fails
        !           168: **                      the result will be PR_FAILURE and the reason
        !           169: **                      for the failure can be retrieved by PR_GetError().
        !           170: ***********************************************************************/
        !           171: NSPR_API(PRStatus) PR_GetHostByAddr(
        !           172:     const PRNetAddr *hostaddr, char *buf, PRIntn bufsize, PRHostEnt *hostentry);
        !           173: 
        !           174: /***********************************************************************
        !           175: ** FUNCTION:   PR_EnumerateHostEnt()   
        !           176: ** DESCRIPTION:
        !           177: **  A stateless enumerator over a PRHostEnt structure acquired from
        !           178: **  PR_GetHostByName() PR_GetHostByAddr() to evaluate the possible
        !           179: **  network addresses.
        !           180: **
        !           181: ** INPUTS:
        !           182: **  PRIntn  enumIndex   Index of the enumeration. The enumeration starts
        !           183: **                      and ends with a value of zero.
        !           184: **
        !           185: **  PRHostEnt *hostEnt  A pointer to a host entry struct that was
        !           186: **                      previously returned by PR_GetHostByName() or
        !           187: **                      PR_GetHostByAddr().
        !           188: **
        !           189: **  PRUint16 port       The port number to be assigned as part of the
        !           190: **                      PRNetAddr.
        !           191: **
        !           192: ** OUTPUTS:
        !           193: **  PRNetAddr *address  A pointer to an address structure that will be
        !           194: **                      filled in by the call to the enumeration if the
        !           195: **                      result of the call is greater than zero.
        !           196: **
        !           197: ** RETURN:
        !           198: **  PRIntn              The value that should be used for the next call
        !           199: **                      of the enumerator ('enumIndex'). The enumeration
        !           200: **                      is ended if this value is returned zero.
        !           201: **                      If a value of -1 is returned, the enumeration
        !           202: **                      has failed. The reason for the failure can be
        !           203: **                      retrieved by calling PR_GetError().
        !           204: ***********************************************************************/
        !           205: NSPR_API(PRIntn) PR_EnumerateHostEnt(
        !           206:     PRIntn enumIndex, const PRHostEnt *hostEnt, PRUint16 port, PRNetAddr *address);
        !           207: 
        !           208: /***********************************************************************
        !           209: ** FUNCTION: PR_InitializeNetAddr(), 
        !           210: ** DESCRIPTION:
        !           211: **  Initialize the fields of a PRNetAddr, assigning well known values as
        !           212: **  appropriate.
        !           213: **
        !           214: ** INPUTS
        !           215: **  PRNetAddrValue val  The value to be assigned to the IP Address portion
        !           216: **                      of the network address. This can only specify the
        !           217: **                      special well known values that are equivalent to
        !           218: **                      INADDR_ANY and INADDR_LOOPBACK.
        !           219: **
        !           220: **  PRUint16 port       The port number to be assigned in the structure.
        !           221: **
        !           222: ** OUTPUTS:
        !           223: **  PRNetAddr *addr     The address to be manipulated.
        !           224: **
        !           225: ** RETURN:
        !           226: **  PRStatus            To indicate success or failure. If the latter, the
        !           227: **                      reason for the failure can be retrieved by calling
        !           228: **                      PR_GetError();
        !           229: ***********************************************************************/
        !           230: typedef enum PRNetAddrValue
        !           231: {
        !           232:     PR_IpAddrNull,      /* do NOT overwrite the IP address */
        !           233:     PR_IpAddrAny,       /* assign logical INADDR_ANY to IP address */
        !           234:     PR_IpAddrLoopback,  /* assign logical INADDR_LOOPBACK  */
        !           235:     PR_IpAddrV4Mapped   /* IPv4 mapped address */
        !           236: } PRNetAddrValue;
        !           237: 
        !           238: NSPR_API(PRStatus) PR_InitializeNetAddr(
        !           239:     PRNetAddrValue val, PRUint16 port, PRNetAddr *addr);
        !           240: 
        !           241: /***********************************************************************
        !           242: ** FUNCTION: PR_SetNetAddr(), 
        !           243: ** DESCRIPTION:
        !           244: **  Set the fields of a PRNetAddr, assigning well known values as
        !           245: **  appropriate. This function is similar to PR_InitializeNetAddr
        !           246: **  but differs in that the address family is specified.
        !           247: **
        !           248: ** INPUTS
        !           249: **  PRNetAddrValue val  The value to be assigned to the IP Address portion
        !           250: **                      of the network address. This can only specify the
        !           251: **                      special well known values that are equivalent to
        !           252: **                      INADDR_ANY and INADDR_LOOPBACK.
        !           253: **
        !           254: **  PRUint16 af         The address family (either PR_AF_INET or PR_AF_INET6)
        !           255: **
        !           256: **  PRUint16 port       The port number to be assigned in the structure.
        !           257: **
        !           258: ** OUTPUTS:
        !           259: **  PRNetAddr *addr     The address to be manipulated.
        !           260: **
        !           261: ** RETURN:
        !           262: **  PRStatus            To indicate success or failure. If the latter, the
        !           263: **                      reason for the failure can be retrieved by calling
        !           264: **                      PR_GetError();
        !           265: ***********************************************************************/
        !           266: NSPR_API(PRStatus) PR_SetNetAddr(
        !           267:     PRNetAddrValue val, PRUint16 af, PRUint16 port, PRNetAddr *addr);
        !           268: 
        !           269: /***********************************************************************
        !           270: ** FUNCTION:   
        !           271: ** DESCRIPTION:    PR_IsNetAddrType()
        !           272: ** Determine if the network address is of the specified type.
        !           273: **
        !           274: ** INPUTS:
        !           275: **  const PRNetAddr *addr   A network address.
        !           276: **  PRNetAddrValue          The type of network address 
        !           277: **
        !           278: ** RETURN:
        !           279: **  PRBool                  PR_TRUE if the network address is of the
        !           280: **                          specified type, else PR_FALSE.
        !           281: ***********************************************************************/
        !           282: NSPR_API(PRBool) PR_IsNetAddrType(const PRNetAddr *addr, PRNetAddrValue val);
        !           283: 
        !           284: /***********************************************************************
        !           285: ** FUNCTION:   
        !           286: ** DESCRIPTION:    PR_ConvertIPv4AddrToIPv6()
        !           287: ** Convert an IPv4 addr to an (IPv4-mapped) IPv6 addr
        !           288: **
        !           289: ** INPUTS:
        !           290: **  PRUint32   v4addr      IPv4 address
        !           291: **
        !           292: ** OUTPUTS:
        !           293: **  PRIPv6Addr *v6addr      The converted IPv6 address
        !           294: **
        !           295: ** RETURN:
        !           296: **  void
        !           297: **                       
        !           298: ***********************************************************************/
        !           299: NSPR_API(void) PR_ConvertIPv4AddrToIPv6(PRUint32 v4addr, PRIPv6Addr *v6addr);
        !           300: 
        !           301: /***********************************************************************
        !           302: ** MACRO:  
        !           303: ** DESCRIPTION:    PR_NetAddrFamily()
        !           304: ** Get the 'family' field of a PRNetAddr union.
        !           305: **
        !           306: ** INPUTS:
        !           307: **  const PRNetAddr *addr   A network address.
        !           308: **
        !           309: ** RETURN:
        !           310: **  PRUint16                The 'family' field of 'addr'.
        !           311: ***********************************************************************/
        !           312: #define PR_NetAddrFamily(addr) ((addr)->raw.family)
        !           313: 
        !           314: /***********************************************************************
        !           315: ** MACRO:  
        !           316: ** DESCRIPTION:    PR_NetAddrInetPort()
        !           317: ** Get the 'port' field of a PRNetAddr union.
        !           318: **
        !           319: ** INPUTS:
        !           320: **  const PRNetAddr *addr   A network address.
        !           321: **
        !           322: ** RETURN:
        !           323: **  PRUint16                The 'port' field of 'addr'.
        !           324: ***********************************************************************/
        !           325: #define PR_NetAddrInetPort(addr) \
        !           326:     ((addr)->raw.family == PR_AF_INET6 ? (addr)->ipv6.port : (addr)->inet.port)
        !           327: 
        !           328: /***********************************************************************
        !           329: ** FUNCTION:   
        !           330: ** DESCRIPTION:    PR_GetProtoByName()
        !           331: ** Lookup a protocol entry based on protocol's name
        !           332: **
        !           333: ** INPUTS:
        !           334: **  char *protocolname  Character string of the protocol's name.
        !           335: **  char *buf           A scratch buffer for the runtime to return result.
        !           336: **                      This buffer is allocated by the caller.
        !           337: **  PRIntn bufsize      Number of bytes in 'buf'. A recommnded value to
        !           338: **                      use is PR_NETDB_BUF_SIZE.
        !           339: ** OUTPUTS:
        !           340: **  PRHostEnt *PRProtoEnt
        !           341: **                      This structure is filled in by the runtime if
        !           342: **                      the function returns PR_SUCCESS. This structure
        !           343: **                      is allocated by the caller.
        !           344: ** RETURN:
        !           345: **  PRStatus            PR_SUCCESS if the lookup succeeds. If it fails
        !           346: **                      the result will be PR_FAILURE and the reason
        !           347: **                      for the failure can be retrieved by PR_GetError().
        !           348: ***********************************************************************/
        !           349: 
        !           350: typedef struct PRProtoEnt {
        !           351:     char *p_name;       /* official protocol name */
        !           352:     char **p_aliases;   /* alias list */
        !           353: #if defined(WIN32) || defined(WIN16)
        !           354:     PRInt16 p_num;      /* protocol # */
        !           355: #else
        !           356:     PRInt32 p_num;      /* protocol # */
        !           357: #endif
        !           358: } PRProtoEnt;
        !           359: 
        !           360: NSPR_API(PRStatus) PR_GetProtoByName(
        !           361:     const char* protocolname, char* buffer, PRInt32 bufsize, PRProtoEnt* result);
        !           362: 
        !           363: /***********************************************************************
        !           364: ** FUNCTION:   
        !           365: ** DESCRIPTION:    PR_GetProtoByNumber()
        !           366: ** Lookup a protocol entry based on protocol's number
        !           367: **
        !           368: ** INPUTS:
        !           369: **  PRInt32 protocolnumber
        !           370: **                      Number assigned to the protocol.
        !           371: **  char *buf           A scratch buffer for the runtime to return result.
        !           372: **                      This buffer is allocated by the caller.
        !           373: **  PRIntn bufsize      Number of bytes in 'buf'. A recommnded value to
        !           374: **                      use is PR_NETDB_BUF_SIZE.
        !           375: ** OUTPUTS:
        !           376: **  PRHostEnt *PRProtoEnt
        !           377: **                      This structure is filled in by the runtime if
        !           378: **                      the function returns PR_SUCCESS. This structure
        !           379: **                      is allocated by the caller.
        !           380: ** RETURN:
        !           381: **  PRStatus            PR_SUCCESS if the lookup succeeds. If it fails
        !           382: **                      the result will be PR_FAILURE and the reason
        !           383: **                      for the failure can be retrieved by PR_GetError().
        !           384: ***********************************************************************/
        !           385: NSPR_API(PRStatus) PR_GetProtoByNumber(
        !           386:     PRInt32 protocolnumber, char* buffer, PRInt32 bufsize, PRProtoEnt* result);
        !           387: 
        !           388: /***********************************************************************
        !           389: ** FUNCTIONS: PR_ntohs, PR_ntohl, PR_ntohll, PR_htons, PR_htonl, PR_htonll
        !           390: **
        !           391: ** DESCRIPTION: API entries for the common byte ordering routines.
        !           392: **
        !           393: **      PR_ntohs        16 bit conversion from network to host
        !           394: **      PR_ntohl        32 bit conversion from network to host
        !           395: **      PR_ntohll       64 bit conversion from network to host
        !           396: **      PR_htons        16 bit conversion from host to network
        !           397: **      PR_htonl        32 bit conversion from host to network
        !           398: **      PR_ntonll       64 bit conversion from host to network
        !           399: **
        !           400: ***********************************************************************/
        !           401: NSPR_API(PRUint16) PR_ntohs(PRUint16);
        !           402: NSPR_API(PRUint32) PR_ntohl(PRUint32);
        !           403: NSPR_API(PRUint64) PR_ntohll(PRUint64);
        !           404: NSPR_API(PRUint16) PR_htons(PRUint16);
        !           405: NSPR_API(PRUint32) PR_htonl(PRUint32);
        !           406: NSPR_API(PRUint64) PR_htonll(PRUint64);
        !           407: 
        !           408: PR_END_EXTERN_C
        !           409: 
        !           410: #endif /* prnetdb_h___ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.