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
00030 #ifndef ADDR_INFO_H
00031 #define ADDR_INFO_H
00032
00033
00034 #undef EAI_ADDRFAMILY
00035 #undef EAI_AGAIN
00036 #undef EAI_BADFLAGS
00037 #undef EAI_FAIL
00038 #undef EAI_FAMILY
00039 #undef EAI_MEMORY
00040 #undef EAI_NODATA
00041 #undef EAI_NONAME
00042 #undef EAI_SERVICE
00043 #undef EAI_SOCKTYPE
00044 #undef EAI_SYSTEM
00045 #undef EAI_BADHINTS
00046 #undef EAI_PROTOCOL
00047 #undef EAI_MAX
00048
00049 #undef AI_PASSIVE
00050 #undef AI_CANONNAME
00051 #undef AI_NUMERICHOST
00052 #undef AI_NUMERICSERV
00053 #undef AI_ALL
00054 #undef AI_ADDRCONFIG
00055 #undef AI_V4MAPPED
00056 #undef AI_DEFAULT
00057
00058 #undef NI_NOFQDN
00059 #undef NI_NUMERICHOST
00060 #undef NI_NAMEREQD
00061 #undef NI_NUMERICSERV
00062 #undef NI_DGRAM
00063
00064 #ifndef __P
00065 # ifdef HAVE_PROTOTYPES
00066 # define __P(args) args
00067 # else
00068 # define __P(args) ()
00069 # endif
00070 #endif
00071
00072
00073
00074
00075
00076
00077
00078 #define EAI_ADDRFAMILY 1
00079 #define EAI_AGAIN 2
00080 #define EAI_BADFLAGS 3
00081 #define EAI_FAIL 4
00082 #define EAI_FAMILY 5
00083 #define EAI_MEMORY 6
00084 #define EAI_NODATA 7
00085 #define EAI_NONAME 8
00086 #define EAI_SERVICE 9
00087 #define EAI_SOCKTYPE 10
00088 #define EAI_SYSTEM 11
00089 #define EAI_BADHINTS 12
00090 #define EAI_PROTOCOL 13
00091 #define EAI_MAX 14
00092
00093
00094
00095
00096 #define AI_PASSIVE 0x00000001
00097 #define AI_CANONNAME 0x00000002
00098 #define AI_NUMERICHOST 0x00000004
00099 #define AI_NUMERICSERV 0x00000008
00100
00101 #ifndef __HAIKU__
00102 #undef AI_MASK
00103 #define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_NUMERICSERV)
00104 #endif
00105
00106 #define AI_ALL 0x00000100
00107 #define AI_V4MAPPED_CFG 0x00000200
00108 #define AI_ADDRCONFIG 0x00000400
00109 #define AI_V4MAPPED 0x00000800
00110
00111 #define AI_DEFAULT (AI_V4MAPPED_CFG | AI_ADDRCONFIG)
00112
00113
00114
00115
00116 #ifndef NI_MAXHOST
00117 #define NI_MAXHOST 1025
00118 #define NI_MAXSERV 32
00119 #endif
00120
00121
00122
00123
00124 #define NI_NOFQDN 0x00000001
00125 #define NI_NUMERICHOST 0x00000002
00126 #define NI_NAMEREQD 0x00000004
00127 #define NI_NUMERICSERV 0x00000008
00128 #define NI_DGRAM 0x00000010
00129
00130 #ifndef HAVE_TYPE_STRUCT_ADDRINFO
00131 struct addrinfo {
00132 int ai_flags;
00133 int ai_family;
00134 int ai_socktype;
00135 int ai_protocol;
00136 size_t ai_addrlen;
00137 char *ai_canonname;
00138 struct sockaddr *ai_addr;
00139 struct addrinfo *ai_next;
00140 };
00141 #endif
00142
00143 #ifndef HAVE_GETADDRINFO
00144 #undef getaddrinfo
00145 #define getaddrinfo getaddrinfo__compat
00146 #endif
00147 #ifndef HAVE_GETNAMEINFO
00148 #undef getnameinfo
00149 #define getnameinfo getnameinfo__compat
00150 #endif
00151 #ifndef HAVE_FREEHOSTENT
00152 #undef freehostent
00153 #define freehostent freehostent__compat
00154 #endif
00155 #ifndef HAVE_FREEADDRINFO
00156 #undef freeaddrinfo
00157 #define freeaddrinfo freeaddrinfo__compat
00158 #endif
00159
00160 extern int getaddrinfo __P((
00161 const char *hostname, const char *servname,
00162 const struct addrinfo *hints,
00163 struct addrinfo **res));
00164
00165 extern int getnameinfo __P((
00166 const struct sockaddr *sa,
00167 socklen_t salen,
00168 char *host,
00169 socklen_t hostlen,
00170 char *serv,
00171 socklen_t servlen,
00172 int flags));
00173
00174 extern void freehostent __P((struct hostent *));
00175 extern void freeaddrinfo __P((struct addrinfo *));
00176 extern
00177 #ifdef GAI_STRERROR_CONST
00178 const
00179 #endif
00180 char *gai_strerror __P((int));
00181
00182
00183
00184
00185 #ifndef offsetof
00186 #define offsetof(p_type,field) ((size_t)&(((p_type *)0)->field))
00187 #endif
00188
00189 #endif
00190