|
1 /* NETDB.H |
|
2 * Copyright (c) 1980, 1983, 1988, 1993 |
|
3 * The Regents of the University of California. All rights reserved. |
|
4 * |
|
5 * Redistribution and use in source and binary forms, with or without |
|
6 * modification, are permitted provided that the following conditions |
|
7 * are met: |
|
8 * 1. Redistributions of source code must retain the above copyright |
|
9 * notice, this list of conditions and the following disclaimer. |
|
10 * 2. Redistributions in binary form must reproduce the above copyright |
|
11 * notice, this list of conditions and the following disclaimer in the |
|
12 * documentation and/or other materials provided with the distribution. |
|
13 * 4. Neither the name of the University nor the names of its contributors |
|
14 * may be used to endorse or promote products derived from this software |
|
15 * without specific prior written permission. |
|
16 * |
|
17 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
|
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
|
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
|
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|
27 * SUCH DAMAGE. |
|
28 * |
|
29 * - |
|
30 * Portions Copyright (c) 1993 by Digital Equipment Corporation. |
|
31 * |
|
32 * Permission to use, copy, modify, and distribute this software for any |
|
33 * purpose with or without fee is hereby granted, provided that the above |
|
34 * copyright notice and this permission notice appear in all copies, and that |
|
35 * the name of Digital Equipment Corporation not be used in advertising or |
|
36 * publicity pertaining to distribution of the document or software without |
|
37 * specific, written prior permission. |
|
38 * |
|
39 * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL |
|
40 * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES |
|
41 * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT |
|
42 * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
|
43 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
|
44 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS |
|
45 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS |
|
46 * SOFTWARE. |
|
47 * - |
|
48 * Portions Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. |
|
49 * --Copyright-- |
|
50 */ |
|
51 |
|
52 /* |
|
53 * @(#)netdb.h 8.1 (Berkeley) 6/2/93 |
|
54 * From: Id: netdb.h,v 8.9 1996/11/19 08:39:29 vixie Exp $ |
|
55 * $FreeBSD: src/include/netdb.h,v 1.38.2.1 2005/07/22 20:17:30 ume Exp $ |
|
56 */ |
|
57 |
|
58 #ifndef _NETDB_H_ |
|
59 #define _NETDB_H_ |
|
60 |
|
61 #ifdef __SYMBIAN32__ |
|
62 #ifdef __cplusplus |
|
63 extern "C" { |
|
64 #endif |
|
65 #include <_ansi.h> |
|
66 |
|
67 #include <sys/cdefs.h> |
|
68 #endif |
|
69 #include <sys/_types.h> |
|
70 #include <sys/cdefs.h> |
|
71 #ifdef __SYMBIAN32__ |
|
72 #include <arpa/inet.h> |
|
73 #include <sys/errno.h> |
|
74 #endif |
|
75 |
|
76 #ifndef _SIZE_T_DECLARED |
|
77 typedef __size_t size_t; |
|
78 #define _SIZE_T_DECLARED |
|
79 #endif |
|
80 |
|
81 #ifndef _SOCKLEN_T_DECLARED |
|
82 typedef __socklen_t socklen_t; |
|
83 #define _SOCKLEN_T_DECLARED |
|
84 #endif |
|
85 |
|
86 #ifndef _UINT32_T_DECLARED |
|
87 typedef __uint32_t uint32_t; |
|
88 #define _UINT32_T_DECLARED |
|
89 #endif |
|
90 |
|
91 #ifndef _PATH_HEQUIV |
|
92 # define _PATH_HEQUIV "/etc/hosts.equiv" |
|
93 #endif |
|
94 #ifndef __SYMBIAN32__ |
|
95 #define _PATH_HOSTS "/etc/hosts" |
|
96 #define _PATH_NETWORKS "/etc/networks" |
|
97 #define _PATH_PROTOCOLS "/etc/protocols" |
|
98 #define _PATH_SERVICES "/etc/services" |
|
99 #define h_errno (*__h_error()) |
|
100 #else |
|
101 #define _PATH_SERVICES "\\resource\\openc\\services" |
|
102 #define h_errno errno |
|
103 #endif |
|
104 |
|
105 |
|
106 /* |
|
107 * Structures returned by network data base library. All addresses are |
|
108 * supplied in host order, and returned in network order (suitable for |
|
109 * use in system calls). |
|
110 */ |
|
111 struct hostent { |
|
112 char *h_name; /* official name of host */ |
|
113 char **h_aliases; /* alias list */ |
|
114 int h_addrtype; /* host address type */ |
|
115 int h_length; /* length of address */ |
|
116 char **h_addr_list; /* list of addresses from name server */ |
|
117 #define h_addr h_addr_list[0] /* address, for backward compatibility */ |
|
118 }; |
|
119 |
|
120 struct netent { |
|
121 char *n_name; /* official name of net */ |
|
122 char **n_aliases; /* alias list */ |
|
123 int n_addrtype; /* net address type */ |
|
124 #ifdef __SYMBIAN32__ |
|
125 unsigned long n_net; |
|
126 #else |
|
127 uint32_t n_net; /* network # */ |
|
128 #endif |
|
129 }; |
|
130 |
|
131 struct servent { |
|
132 char *s_name; /* official service name */ |
|
133 char **s_aliases; /* alias list */ |
|
134 int s_port; /* port # */ |
|
135 char *s_proto; /* protocol to use */ |
|
136 }; |
|
137 |
|
138 struct protoent { |
|
139 char *p_name; /* official protocol name */ |
|
140 char **p_aliases; /* alias list */ |
|
141 int p_proto; /* protocol # */ |
|
142 }; |
|
143 |
|
144 struct addrinfo { |
|
145 int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ |
|
146 int ai_family; /* PF_xxx */ |
|
147 int ai_socktype; /* SOCK_xxx */ |
|
148 int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ |
|
149 socklen_t ai_addrlen; /* length of ai_addr */ |
|
150 char *ai_canonname; /* canonical name for hostname */ |
|
151 struct sockaddr *ai_addr; /* binary address */ |
|
152 struct addrinfo *ai_next; /* next structure in linked list */ |
|
153 }; |
|
154 |
|
155 /* |
|
156 * Error return codes from gethostbyname() and gethostbyaddr() |
|
157 * (left in h_errno). |
|
158 */ |
|
159 |
|
160 #define NETDB_INTERNAL -1 /* see errno */ |
|
161 #define NETDB_SUCCESS 0 /* no problem */ |
|
162 #ifndef __SYMBIAN32__ |
|
163 #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */ |
|
164 #define TRY_AGAIN 2 /* Non-Authoritative Host not found, or SERVERFAIL */ |
|
165 #define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */ |
|
166 #else |
|
167 #define HOST_NOT_FOUND ENOENT /* Authoritative Answer Host not found */ |
|
168 #define TRY_AGAIN ETIMEDOUT /* Non-Authoritative Host not found, or SERVERFAIL */ |
|
169 #define NO_RECOVERY ECOMM /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */ |
|
170 #endif |
|
171 #define NO_DATA 4 /* Valid name, no data record of requested type */ |
|
172 #define NO_ADDRESS NO_DATA /* no address, look for MX record */ |
|
173 |
|
174 /* |
|
175 * Error return codes from getaddrinfo() |
|
176 */ |
|
177 #if 0 |
|
178 /* obsoleted */ |
|
179 #define EAI_ADDRFAMILY 1 /* address family for hostname not supported */ |
|
180 #endif |
|
181 #define EAI_AGAIN 2 /* temporary failure in name resolution */ |
|
182 #define EAI_BADFLAGS 3 /* invalid value for ai_flags */ |
|
183 #define EAI_FAIL 4 /* non-recoverable failure in name resolution */ |
|
184 #define EAI_FAMILY 5 /* ai_family not supported */ |
|
185 #define EAI_MEMORY 6 /* memory allocation failure */ |
|
186 #if 0 |
|
187 /* obsoleted */ |
|
188 #define EAI_NODATA 7 /* no address associated with hostname */ |
|
189 #endif |
|
190 #define EAI_NONAME 8 /* hostname nor servname provided, or not known */ |
|
191 #define EAI_SERVICE 9 /* servname not supported for ai_socktype */ |
|
192 #define EAI_SOCKTYPE 10 /* ai_socktype not supported */ |
|
193 #define EAI_SYSTEM 11 /* system error returned in errno */ |
|
194 #define EAI_BADHINTS 12 |
|
195 #define EAI_PROTOCOL 13 |
|
196 #define EAI_MAX 14 |
|
197 |
|
198 /* |
|
199 * Flag values for getaddrinfo() |
|
200 */ |
|
201 #define AI_PASSIVE 0x00000001 /* get address to use bind() */ |
|
202 #define AI_CANONNAME 0x00000002 /* fill ai_canonname */ |
|
203 #define AI_NUMERICHOST 0x00000004 /* prevent host name resolution */ |
|
204 #define AI_NUMERICSERV 0x00000008 /* prevent service name resolution */ |
|
205 /* valid flags for addrinfo (not a standard def, apps should not use it) */ |
|
206 #define AI_MASK \ |
|
207 (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_NUMERICSERV | \ |
|
208 AI_ADDRCONFIG) |
|
209 |
|
210 #define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */ |
|
211 #define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */ |
|
212 #define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */ |
|
213 #define AI_V4MAPPED 0x00000800 /* accept IPv4-mapped IPv6 address */ |
|
214 /* special recommended flags for getipnodebyname */ |
|
215 #define AI_DEFAULT (AI_V4MAPPED_CFG | AI_ADDRCONFIG) |
|
216 |
|
217 /* |
|
218 * Constants for getnameinfo() |
|
219 */ |
|
220 #define NI_MAXHOST 1025 |
|
221 #define NI_MAXSERV 32 |
|
222 |
|
223 /* |
|
224 * Flag values for getnameinfo() |
|
225 */ |
|
226 #define NI_NOFQDN 0x00000001 |
|
227 #define NI_NUMERICHOST 0x00000002 |
|
228 #define NI_NAMEREQD 0x00000004 |
|
229 #define NI_NUMERICSERV 0x00000008 |
|
230 #define NI_DGRAM 0x00000010 |
|
231 #if 0 /* obsolete */ |
|
232 #define NI_WITHSCOPEID 0x00000020 |
|
233 #endif |
|
234 |
|
235 /* |
|
236 * Scope delimit character |
|
237 */ |
|
238 #define SCOPE_DELIMITER '%' |
|
239 |
|
240 __BEGIN_DECLS |
|
241 #ifndef __SYMBIAN32__ |
|
242 void endhostent(void); |
|
243 void endnetent(void); |
|
244 void endnetgrent(void); |
|
245 void endprotoent(void); |
|
246 #endif//__SYMBIAN32__ |
|
247 IMPORT_C void endservent(void); |
|
248 #ifndef __SYMBIAN32__ |
|
249 void freehostent(struct hostent *); |
|
250 #endif//__SYMBIAN32__ |
|
251 IMPORT_C struct hostent *gethostbyaddr(const char *, int, int); |
|
252 IMPORT_C struct hostent *gethostbyname(const char *); |
|
253 #ifndef __SYMBIAN32__ |
|
254 struct hostent *gethostbyname2(const char *, int); |
|
255 struct hostent *gethostent(void); |
|
256 struct hostent *getipnodebyaddr(const void *, size_t, int, int *); |
|
257 struct hostent *getipnodebyname(const char *, int, int, int *); |
|
258 struct netent *getnetbyaddr(uint32_t, int); |
|
259 struct netent *getnetbyname(const char *); |
|
260 struct netent *getnetent(void); |
|
261 int getnetgrent(char **, char **, char **); |
|
262 #endif//__SYMBIAN32__ |
|
263 IMPORT_C struct protoent *getprotobyname(const char *); |
|
264 IMPORT_C struct protoent *getprotobynumber(int); |
|
265 #ifndef __SYMBIAN32__ |
|
266 struct protoent *getprotoent(void); |
|
267 #endif//__SYMBIAN32__ |
|
268 IMPORT_C struct servent *getservbyname(const char *, const char *); |
|
269 IMPORT_C struct servent *getservbyport(int, const char *); |
|
270 IMPORT_C struct servent *getservent(void); |
|
271 #ifndef __SYMBIAN32__ |
|
272 void herror(const char *); |
|
273 __const char *hstrerror(int); |
|
274 int innetgr(const char *, const char *, const char *, const char *); |
|
275 void sethostent(int); |
|
276 /* void sethostfile(const char *); */ |
|
277 void setnetent(int); |
|
278 void setprotoent(int); |
|
279 #endif//__SYMBIAN32__ |
|
280 IMPORT_C int getaddrinfo(const char *, const char *, |
|
281 const struct addrinfo *, struct addrinfo **); |
|
282 IMPORT_C int getnameinfo(const struct sockaddr *, socklen_t, char *, |
|
283 size_t, char *, size_t, int); |
|
284 IMPORT_C void freeaddrinfo(struct addrinfo *); |
|
285 IMPORT_C const char *gai_strerror(int); |
|
286 void setnetgrent(const char *); |
|
287 IMPORT_C void setservent(int); |
|
288 #ifdef __SYMBIAN32__ |
|
289 |
|
290 #ifdef __SYMBIAN_COMPILE_UNUSED__ |
|
291 int *__h_errno_location(void); |
|
292 #endif |
|
293 |
|
294 #endif |
|
295 |
|
296 /* |
|
297 * PRIVATE functions specific to the FreeBSD implementation |
|
298 */ |
|
299 |
|
300 /* DO NOT USE THESE, THEY ARE SUBJECT TO CHANGE AND ARE NOT PORTABLE!!! */ |
|
301 int * __h_error(void); |
|
302 __END_DECLS |
|
303 #ifdef __SYMBIAN32__ |
|
304 #ifdef __cplusplus |
|
305 } |
|
306 #endif |
|
307 #endif |
|
308 |
|
309 #endif /* !_NETDB_H_ */ |