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>