Annotation of embedaddon/rsync/lib/addrinfo.h, revision 1.1

1.1     ! misho       1: /*
        !             2: PostgreSQL Database Management System
        !             3: (formerly known as Postgres, then as Postgres95)
        !             4: 
        !             5: Portions Copyright (c) 1996-2005, The PostgreSQL Global Development Group
        !             6: 
        !             7: Portions Copyright (c) 1994, The Regents of the University of California
        !             8: 
        !             9: Permission to use, copy, modify, and distribute this software and its
        !            10: documentation for any purpose, without fee, and without a written agreement
        !            11: is hereby granted, provided that the above copyright notice and this paragraph
        !            12: and the following two paragraphs appear in all copies.
        !            13: 
        !            14: IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
        !            15: DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
        !            16: LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION,
        !            17: EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
        !            18: SUCH DAMAGE.
        !            19: 
        !            20: THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
        !            21: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
        !            22: AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
        !            23: ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS
        !            24: TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
        !            25: 
        !            26: */
        !            27: 
        !            28: /*-------------------------------------------------------------------------
        !            29:  *
        !            30:  * getaddrinfo.h
        !            31:  *       Support getaddrinfo() on platforms that don't have it.
        !            32:  *
        !            33:  * Note: we use our own routines on platforms that don't HAVE_STRUCT_ADDRINFO,
        !            34:  * whether or not the library routine getaddrinfo() can be found.  This
        !            35:  * policy is needed because on some platforms a manually installed libbind.a
        !            36:  * may provide getaddrinfo(), yet the system headers may not provide the
        !            37:  * struct definitions needed to call it.  To avoid conflict with the libbind
        !            38:  * definition in such cases, we rename our routines to pg_xxx() via macros.
        !            39:  *
        !            40:  * This code will also work on platforms where struct addrinfo is defined
        !            41:  * in the system headers but no getaddrinfo() can be located.
        !            42:  *
        !            43:  * Copyright (c) 2003-2007, PostgreSQL Global Development Group
        !            44:  *
        !            45:  *-------------------------------------------------------------------------
        !            46:  */
        !            47: #ifndef ADDRINFO_H
        !            48: #define ADDRINFO_H
        !            49: 
        !            50: 
        !            51: /* Various macros that ought to be in <netdb.h>, but might not be */
        !            52: 
        !            53: #ifndef EAI_FAIL
        !            54: #define EAI_BADFLAGS   (-1)
        !            55: #define EAI_NONAME             (-2)
        !            56: #define EAI_AGAIN              (-3)
        !            57: #define EAI_FAIL               (-4)
        !            58: #define EAI_FAMILY             (-6)
        !            59: #define EAI_SOCKTYPE   (-7)
        !            60: #define EAI_SERVICE            (-8)
        !            61: #define EAI_MEMORY             (-10)
        !            62: #define EAI_SYSTEM             (-11)
        !            63: #endif   /* !EAI_FAIL */
        !            64: 
        !            65: #ifndef AI_PASSIVE
        !            66: #define AI_PASSIVE             0x0001
        !            67: #endif
        !            68: 
        !            69: #ifndef AI_NUMERICHOST
        !            70: /*
        !            71:  * some platforms don't support AI_NUMERICHOST; define as zero if using
        !            72:  * the system version of getaddrinfo...
        !            73:  */
        !            74: #if defined(HAVE_STRUCT_ADDRINFO) && defined(HAVE_GETADDRINFO)
        !            75: #define AI_NUMERICHOST 0
        !            76: #else
        !            77: #define AI_NUMERICHOST 0x0004
        !            78: #endif
        !            79: #endif
        !            80: 
        !            81: #ifndef AI_CANONNAME
        !            82: #if defined(HAVE_STRUCT_ADDRINFO) && defined(HAVE_GETADDRINFO)
        !            83: #define AI_CANONNAME 0
        !            84: #else
        !            85: #define AI_CANONNAME 0x0008
        !            86: #endif
        !            87: #endif
        !            88: 
        !            89: #ifndef AI_NUMERICSERV
        !            90: #if defined(HAVE_STRUCT_ADDRINFO) && defined(HAVE_GETADDRINFO)
        !            91: #define AI_NUMERICSERV 0
        !            92: #else
        !            93: #define AI_NUMERICSERV 0x0010
        !            94: #endif
        !            95: #endif
        !            96: 
        !            97: #ifndef NI_NUMERICHOST
        !            98: #define NI_NUMERICHOST 1
        !            99: #endif
        !           100: 
        !           101: #ifndef NI_NUMERICSERV
        !           102: #define NI_NUMERICSERV 2
        !           103: #endif
        !           104: 
        !           105: #ifndef NI_NOFQDN
        !           106: #define NI_NOFQDN      4
        !           107: #endif
        !           108: 
        !           109: #ifndef NI_NAMEREQD
        !           110: #define NI_NAMEREQD    8
        !           111: #endif
        !           112: 
        !           113: #ifndef NI_DGRAM
        !           114: #define NI_DGRAM       16
        !           115: #endif
        !           116: 
        !           117: 
        !           118: #ifndef NI_MAXHOST
        !           119: #define NI_MAXHOST     1025
        !           120: #endif
        !           121: 
        !           122: #ifndef NI_MAXSERV
        !           123: #define NI_MAXSERV     32
        !           124: #endif
        !           125: 
        !           126: #ifndef HAVE_STRUCT_ADDRINFO
        !           127: struct addrinfo
        !           128: {
        !           129:        int                     ai_flags;
        !           130:        int                     ai_family;
        !           131:        int                     ai_socktype;
        !           132:        int                     ai_protocol;
        !           133:        size_t          ai_addrlen;
        !           134:        struct sockaddr *ai_addr;
        !           135:        char       *ai_canonname;
        !           136:        struct addrinfo *ai_next;
        !           137: };
        !           138: #endif   /* !HAVE_STRUCT_ADDRINFO */
        !           139: 
        !           140: #ifndef HAVE_STRUCT_SOCKADDR_STORAGE
        !           141: struct sockaddr_storage {
        !           142:        unsigned short ss_family;
        !           143:        unsigned long ss_align;
        !           144:        char ss_padding[128 - sizeof (unsigned long)];
        !           145: };
        !           146: #endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */
        !           147: 
        !           148: #ifndef HAVE_GETADDRINFO
        !           149: 
        !           150: /* Rename private copies per comments above */
        !           151: #ifdef getaddrinfo
        !           152: #undef getaddrinfo
        !           153: #endif
        !           154: #define getaddrinfo pg_getaddrinfo
        !           155: 
        !           156: #ifdef freeaddrinfo
        !           157: #undef freeaddrinfo
        !           158: #endif
        !           159: #define freeaddrinfo pg_freeaddrinfo
        !           160: 
        !           161: #ifdef gai_strerror
        !           162: #undef gai_strerror
        !           163: #endif
        !           164: #define gai_strerror pg_gai_strerror
        !           165: 
        !           166: #ifdef getnameinfo
        !           167: #undef getnameinfo
        !           168: #endif
        !           169: #define getnameinfo pg_getnameinfo
        !           170: 
        !           171: extern int getaddrinfo(const char *node, const char *service,
        !           172:                        const struct addrinfo * hints, struct addrinfo ** res);
        !           173: extern void freeaddrinfo(struct addrinfo * res);
        !           174: extern const char *gai_strerror(int errcode);
        !           175: extern int getnameinfo(const struct sockaddr * sa, socklen_t salen,
        !           176:                        char *node, size_t nodelen,
        !           177:                        char *service, size_t servicelen, int flags);
        !           178: #endif   /* !HAVE_GETADDRINFO */
        !           179: 
        !           180: #endif   /* ADDRINFO_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>