00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef GETADDRINFO_H
00030 #define GETADDRINFO_H
00031
00032 #ifdef HAVE_CONFIG_H
00033 #include "config.h"
00034 #endif
00035
00036 #include <sys/types.h>
00037 #include <sys/socket.h>
00038 #include <netdb.h>
00039
00040
00041
00042
00043
00044
00045 #ifdef EAI_ADDRFAMILY
00046 #undef EAI_ADDRFAMILY
00047 #endif
00048 #ifdef EAI_AGAIN
00049 #undef EAI_AGAIN
00050 #endif
00051 #ifdef EAI_BADFLAGS
00052 #undef EAI_BADFLAGS
00053 #endif
00054 #ifdef EAI_FAIL
00055 #undef EAI_FAIL
00056 #endif
00057 #ifdef EAI_FAMILY
00058 #undef EAI_FAMILY
00059 #endif
00060 #ifdef EAI_MEMORY
00061 #undef EAI_MEMORY
00062 #endif
00063 #ifdef EAI_NONAME
00064 #undef EAI_NONAME
00065 #endif
00066 #ifdef EAI_OVERFLOW
00067 #undef EAI_OVERFLOW
00068 #endif
00069 #ifdef EAI_SERVICE
00070 #undef EAI_SERVICE
00071 #endif
00072 #ifdef EAI_SOCKTYPE
00073 #undef EAI_SOCKTYPE
00074 #endif
00075 #ifdef EAI_SYSTEM
00076 #undef EAI_SYSTEM
00077 #endif
00078
00079 #ifdef AI_PASSIVE
00080 #undef AI_PASSIVE
00081 #endif
00082 #ifdef AI_CANONNAME
00083 #undef AI_CANONNAME
00084 #endif
00085 #ifdef AI_NUMERICHOST
00086 #undef AI_NUMERICHOST
00087 #endif
00088 #ifdef AI_NUMERICSERV
00089 #undef AI_NUMERICSERV
00090 #endif
00091 #ifdef AI_V4MAPPED
00092 #undef AI_V4MAPPED
00093 #endif
00094 #ifdef AI_ALL
00095 #undef AI_ALL
00096 #endif
00097 #ifdef AI_ADDRCONFIG
00098 #undef AI_ADDRCONFIG
00099 #endif
00100 #ifdef AI_DEFAULT
00101 #undef AI_DEFAULT
00102 #endif
00103
00104 #ifdef NI_NOFQDN
00105 #undef NI_NOFQDN
00106 #endif
00107 #ifdef NI_NUMERICHOST
00108 #undef NI_NUMERICHOST
00109 #endif
00110 #ifdef NI_NAMEREQD
00111 #undef NI_NAMEREQD
00112 #endif
00113 #ifdef NI_NUMERICSERV
00114 #undef NI_NUMERICSERV
00115 #endif
00116 #ifdef NI_NUMERICSCOPE
00117 #undef NI_NUMERICSCOPE
00118 #endif
00119
00120 #ifdef NI_DGRAM
00121 #undef NI_DGRAM
00122 #endif
00123 #ifdef NI_MAXHOST
00124 #undef NI_MAXHOST
00125 #endif
00126 #ifdef NI_MAXSERV
00127 #undef NI_MAXSERV
00128 #endif
00129
00130
00131
00132
00133
00134 #if defined(HAVE_GETADDRINFO) || defined(HAVE_GETNAMEINFO)
00135 #define addrinfo my_addrinfo
00136 #define gai_strerror my_gai_strerror
00137 #define freeaddrinfo my_freeaddrinfo
00138 #define getaddrinfo my_getaddrinfo
00139 #define getnameinfo my_getnameinfo
00140 #endif
00141
00142
00143
00144
00145
00146 #define EAI_ADDRFAMILY 1
00147 #define EAI_AGAIN 2
00148 #define EAI_BADFLAGS 3
00149 #define EAI_FAIL 4
00150 #define EAI_FAMILY 5
00151 #define EAI_MEMORY 6
00152 #define EAI_NONAME 7
00153 #define EAI_OVERFLOW 8
00154 #define EAI_SERVICE 9
00155 #define EAI_SOCKTYPE 10
00156 #define EAI_SYSTEM 11
00157
00158
00159
00160
00161 #define AI_ADDRCONFIG 0x0001
00162 #define AI_ALL 0x0002
00163 #define AI_CANONNAME 0x0004
00164 #define AI_NUMERICHOST 0x0008
00165 #define AI_NUMERICSERV 0x0010
00166 #define AI_PASSIVE 0x0020
00167 #define AI_V4MAPPED 0x0040
00168 #define AI_DEFAULT (AI_V4MAPPED | AI_ADDRCONFIG)
00169
00170
00171
00172
00173 #define NI_DGRAM 0x0001
00174 #define NI_NAMEREQD 0x0002
00175 #define NI_NOFQDN 0x0004
00176 #define NI_NUMERICHOST 0x0008
00177 #define NI_NUMERICSCOPE 0x0010
00178 #define NI_NUMERICSERV 0x0020
00179
00180
00181
00182
00183 #define NI_MAXHOST 1025
00184 #define NI_MAXSERV 32
00185
00186
00187
00188
00189 #ifndef AF_UNSPEC
00190 #define AF_UNSPEC AF_INET
00191 #endif
00192 #ifndef PF_UNSPEC
00193 #define PF_UNSPEC PF_INET
00194 #endif
00195
00196
00197
00198
00199 struct addrinfo {
00200 int ai_flags;
00201 int ai_family;
00202 int ai_socktype;
00203 int ai_protocol;
00204 socklen_t ai_addrlen;
00205 char *ai_canonname;
00206 struct sockaddr *ai_addr;
00207 struct addrinfo *ai_next;
00208 };
00209
00210
00211
00212
00213 #ifdef __STDC__
00214 const char *gai_strerror(int);
00215 void freeaddrinfo(struct addrinfo *);
00216 int getaddrinfo(const char *, const char *, const struct addrinfo *,
00217 struct addrinfo **);
00218 int getnameinfo(const struct sockaddr *, socklen_t, char *,
00219 socklen_t, char *, socklen_t, int);
00220 #else
00221 const char *gai_strerror();
00222 void freeaddrinfo();
00223 int getaddrinfo();
00224 int getnameinfo();
00225 #endif
00226
00227 #endif