9 #include <netinet/in.h>
11 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
13 #include <bits/alltypes.h>
23 struct sockaddr
*ai_addr
;
25 struct addrinfo
*ai_next
;
28 #define IPPORT_RESERVED 1024
30 #define AI_PASSIVE 0x01
31 #define AI_CANONNAME 0x02
32 #define AI_NUMERICHOST 0x04
33 #define AI_V4MAPPED 0x08
35 #define AI_ADDRCONFIG 0x20
36 #define AI_NUMERICSERV 0x400
39 #define NI_NUMERICHOST 0x01
40 #define NI_NUMERICSERV 0x02
41 #define NI_NOFQDN 0x04
42 #define NI_NAMEREQD 0x08
44 /*#define NI_NUMERICSCOPE */
46 #define EAI_BADFLAGS -1
51 #define EAI_SOCKTYPE -7
52 #define EAI_SERVICE -8
53 #define EAI_MEMORY -10
54 #define EAI_SYSTEM -11
55 #define EAI_OVERFLOW -12
57 int getaddrinfo (const char *__restrict
, const char *__restrict
, const struct addrinfo
*__restrict
, struct addrinfo
**__restrict
);
58 void freeaddrinfo (struct addrinfo
*);
59 int getnameinfo (const struct sockaddr
*__restrict
, socklen_t
, char *__restrict
, socklen_t
, char *__restrict
, socklen_t
, int);
60 const char *gai_strerror(int);
63 /* Legacy functions follow (marked OBsolete in SUS) */
81 #define h_addr h_addr_list[0]
98 void sethostent (int);
99 void endhostent (void);
100 struct hostent
*gethostent (void);
102 void setnetent (int);
103 void endnetent (void);
104 struct netent
*getnetent (void);
105 struct netent
*getnetbyaddr (uint32_t, int);
106 struct netent
*getnetbyname (const char *);
108 void setservent (int);
109 void endservent (void);
110 struct servent
*getservent (void);
111 struct servent
*getservbyname (const char *, const char *);
112 struct servent
*getservbyport (int, const char *);
114 void setprotoent (int);
115 void endprotoent (void);
116 struct protoent
*getprotoent (void);
117 struct protoent
*getprotobyname (const char *);
118 struct protoent
*getprotobynumber (int);
120 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
121 || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \
122 || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
123 struct hostent
*gethostbyname (const char *);
124 struct hostent
*gethostbyaddr (const void *, socklen_t
, int);
126 __attribute__((const))
128 int *__h_errno_location(void);
129 #define h_errno (*__h_errno_location())
130 #define HOST_NOT_FOUND 1
132 #define NO_RECOVERY 3
136 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
137 const char *hstrerror(int);
138 int gethostbyname_r(const char *, struct hostent
*, char *, size_t, struct hostent
**, int *);
139 int gethostbyname2_r(const char *, int, struct hostent
*, char *, size_t, struct hostent
**, int *);
140 struct hostent
*gethostbyname2(const char *, int);
141 int gethostbyaddr_r(const void *, socklen_t
, int, struct hostent
*, char *, size_t, struct hostent
**, int *);
142 int getservbyport_r(int, const char *, struct servent
*, char *, size_t, struct servent
**);
143 int getservbyname_r(const char *, const char *, struct servent
*, char *, size_t, struct servent
**);
144 #define EAI_NODATA -5
145 #define EAI_ADDRFAMILY -9
146 #define EAI_INPROGRESS -100
147 #define EAI_CANCELED -101
148 #define EAI_NOTCANCELED -102
149 #define EAI_ALLDONE -103
150 #define EAI_INTR -104
151 #define EAI_IDN_ENCODE -105
152 #define NI_MAXHOST 255
153 #define NI_MAXSERV 32