Annotation of embedaddon/rsync/lib/addrinfo.h, revision 1.1.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>