]> git.proxmox.com Git - wasi-libc.git/blob - libc-top-half/musl/include/netdb.h
threads: enable `PTHREAD_{MUTEX,RWLOCK,COND}_INITIALIZER`. (#397)
[wasi-libc.git] / libc-top-half / musl / include / netdb.h
1 #ifndef _NETDB_H
2 #define _NETDB_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #include <features.h>
9 #include <netinet/in.h>
10
11 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
12 #define __NEED_size_t
13 #include <bits/alltypes.h>
14 #endif
15
16 struct addrinfo {
17 int ai_flags;
18 int ai_family;
19 int ai_socktype;
20 int ai_protocol;
21 socklen_t ai_addrlen;
22 struct sockaddr *ai_addr;
23 char *ai_canonname;
24 struct addrinfo *ai_next;
25 };
26
27 #define AI_PASSIVE 0x01
28 #define AI_CANONNAME 0x02
29 #define AI_NUMERICHOST 0x04
30 #define AI_V4MAPPED 0x08
31 #define AI_ALL 0x10
32 #define AI_ADDRCONFIG 0x20
33 #define AI_NUMERICSERV 0x400
34
35
36 #define NI_NUMERICHOST 0x01
37 #define NI_NUMERICSERV 0x02
38 #define NI_NOFQDN 0x04
39 #define NI_NAMEREQD 0x08
40 #define NI_DGRAM 0x10
41 #define NI_NUMERICSCOPE 0x100
42
43 #define EAI_BADFLAGS -1
44 #define EAI_NONAME -2
45 #define EAI_AGAIN -3
46 #define EAI_FAIL -4
47 #define EAI_FAMILY -6
48 #define EAI_SOCKTYPE -7
49 #define EAI_SERVICE -8
50 #define EAI_MEMORY -10
51 #define EAI_SYSTEM -11
52 #define EAI_OVERFLOW -12
53
54 int getaddrinfo (const char *__restrict, const char *__restrict, const struct addrinfo *__restrict, struct addrinfo **__restrict);
55 void freeaddrinfo (struct addrinfo *);
56 int getnameinfo (const struct sockaddr *__restrict, socklen_t, char *__restrict, socklen_t, char *__restrict, socklen_t, int);
57 const char *gai_strerror(int);
58
59
60 /* Legacy functions follow (marked OBsolete in SUS) */
61
62 struct netent {
63 char *n_name;
64 char **n_aliases;
65 int n_addrtype;
66 uint32_t n_net;
67 };
68
69 struct hostent {
70 char *h_name;
71 char **h_aliases;
72 int h_addrtype;
73 int h_length;
74 char **h_addr_list;
75 };
76 #define h_addr h_addr_list[0]
77
78 struct servent {
79 char *s_name;
80 char **s_aliases;
81 int s_port;
82 char *s_proto;
83 };
84
85 struct protoent {
86 char *p_name;
87 char **p_aliases;
88 int p_proto;
89 };
90
91 void sethostent (int);
92 void endhostent (void);
93 struct hostent *gethostent (void);
94
95 void setnetent (int);
96 void endnetent (void);
97 struct netent *getnetent (void);
98 struct netent *getnetbyaddr (uint32_t, int);
99 struct netent *getnetbyname (const char *);
100
101 void setservent (int);
102 void endservent (void);
103 struct servent *getservent (void);
104 struct servent *getservbyname (const char *, const char *);
105 struct servent *getservbyport (int, const char *);
106
107 void setprotoent (int);
108 void endprotoent (void);
109 struct protoent *getprotoent (void);
110 struct protoent *getprotobyname (const char *);
111 struct protoent *getprotobynumber (int);
112
113 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
114 || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \
115 || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
116 struct hostent *gethostbyname (const char *);
117 struct hostent *gethostbyaddr (const void *, socklen_t, int);
118 #ifdef __GNUC__
119 __attribute__((const))
120 #endif
121 int *__h_errno_location(void);
122 #define h_errno (*__h_errno_location())
123 #define HOST_NOT_FOUND 1
124 #define TRY_AGAIN 2
125 #define NO_RECOVERY 3
126 #define NO_DATA 4
127 #define NO_ADDRESS NO_DATA
128 #endif
129
130 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
131 void herror(const char *);
132 const char *hstrerror(int);
133 int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
134 int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
135 struct hostent *gethostbyname2(const char *, int);
136 int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *);
137 int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **);
138 int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **);
139 #define EAI_NODATA -5
140 #define EAI_ADDRFAMILY -9
141 #define EAI_INPROGRESS -100
142 #define EAI_CANCELED -101
143 #define EAI_NOTCANCELED -102
144 #define EAI_ALLDONE -103
145 #define EAI_INTR -104
146 #define EAI_IDN_ENCODE -105
147 #define NI_MAXHOST 255
148 #define NI_MAXSERV 32
149 #endif
150
151
152 #ifdef __cplusplus
153 }
154 #endif
155
156 #endif