xref: /minix3/external/bsd/bind/include/lwres/netdb.h (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek /*
2*00b67f09SDavid van Moolenbroek  * Copyright (C) 2004, 2005, 2007, 2009, 2014  Internet Systems Consortium, Inc. ("ISC")
3*00b67f09SDavid van Moolenbroek  * Copyright (C) 2000, 2001  Internet Software Consortium.
4*00b67f09SDavid van Moolenbroek  *
5*00b67f09SDavid van Moolenbroek  * Permission to use, copy, modify, and/or distribute this software for any
6*00b67f09SDavid van Moolenbroek  * purpose with or without fee is hereby granted, provided that the above
7*00b67f09SDavid van Moolenbroek  * copyright notice and this permission notice appear in all copies.
8*00b67f09SDavid van Moolenbroek  *
9*00b67f09SDavid van Moolenbroek  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10*00b67f09SDavid van Moolenbroek  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11*00b67f09SDavid van Moolenbroek  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12*00b67f09SDavid van Moolenbroek  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13*00b67f09SDavid van Moolenbroek  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14*00b67f09SDavid van Moolenbroek  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15*00b67f09SDavid van Moolenbroek  * PERFORMANCE OF THIS SOFTWARE.
16*00b67f09SDavid van Moolenbroek  */
17*00b67f09SDavid van Moolenbroek 
18*00b67f09SDavid van Moolenbroek /* Id: netdb.h.in,v 1.41 2009/01/18 23:48:14 tbox Exp  */
19*00b67f09SDavid van Moolenbroek 
20*00b67f09SDavid van Moolenbroek /*! \file */
21*00b67f09SDavid van Moolenbroek 
22*00b67f09SDavid van Moolenbroek #ifndef LWRES_NETDB_H
23*00b67f09SDavid van Moolenbroek #define LWRES_NETDB_H 1
24*00b67f09SDavid van Moolenbroek 
25*00b67f09SDavid van Moolenbroek #include <stddef.h>	/* Required on FreeBSD (and  others?) for size_t. */
26*00b67f09SDavid van Moolenbroek #include <netdb.h>	/* Contractual provision. */
27*00b67f09SDavid van Moolenbroek 
28*00b67f09SDavid van Moolenbroek #include <lwres/lang.h>
29*00b67f09SDavid van Moolenbroek 
30*00b67f09SDavid van Moolenbroek /*
31*00b67f09SDavid van Moolenbroek  * Define if <netdb.h> does not declare struct addrinfo.
32*00b67f09SDavid van Moolenbroek  */
33*00b67f09SDavid van Moolenbroek #undef ISC_LWRES_NEEDADDRINFO
34*00b67f09SDavid van Moolenbroek 
35*00b67f09SDavid van Moolenbroek #ifdef ISC_LWRES_NEEDADDRINFO
36*00b67f09SDavid van Moolenbroek struct addrinfo {
37*00b67f09SDavid van Moolenbroek 	int		ai_flags;      /* AI_PASSIVE, AI_CANONNAME */
38*00b67f09SDavid van Moolenbroek 	int		ai_family;     /* PF_xxx */
39*00b67f09SDavid van Moolenbroek 	int		ai_socktype;   /* SOCK_xxx */
40*00b67f09SDavid van Moolenbroek 	int		ai_protocol;   /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
41*00b67f09SDavid van Moolenbroek 	size_t		ai_addrlen;    /* Length of ai_addr */
42*00b67f09SDavid van Moolenbroek 	char		*ai_canonname; /* Canonical name for hostname */
43*00b67f09SDavid van Moolenbroek 	struct sockaddr	*ai_addr;      /* Binary address */
44*00b67f09SDavid van Moolenbroek 	struct addrinfo	*ai_next;      /* Next structure in linked list */
45*00b67f09SDavid van Moolenbroek };
46*00b67f09SDavid van Moolenbroek #endif
47*00b67f09SDavid van Moolenbroek 
48*00b67f09SDavid van Moolenbroek /*
49*00b67f09SDavid van Moolenbroek  * Undefine all #defines we are interested in as <netdb.h> may or may not have
50*00b67f09SDavid van Moolenbroek  * defined them.
51*00b67f09SDavid van Moolenbroek  */
52*00b67f09SDavid van Moolenbroek 
53*00b67f09SDavid van Moolenbroek /*
54*00b67f09SDavid van Moolenbroek  * Error return codes from gethostbyname() and gethostbyaddr()
55*00b67f09SDavid van Moolenbroek  * (left in extern int h_errno).
56*00b67f09SDavid van Moolenbroek  */
57*00b67f09SDavid van Moolenbroek 
58*00b67f09SDavid van Moolenbroek #undef	NETDB_INTERNAL
59*00b67f09SDavid van Moolenbroek #undef	NETDB_SUCCESS
60*00b67f09SDavid van Moolenbroek #undef	HOST_NOT_FOUND
61*00b67f09SDavid van Moolenbroek #undef	TRY_AGAIN
62*00b67f09SDavid van Moolenbroek #undef	NO_RECOVERY
63*00b67f09SDavid van Moolenbroek #undef	NO_DATA
64*00b67f09SDavid van Moolenbroek #undef	NO_ADDRESS
65*00b67f09SDavid van Moolenbroek 
66*00b67f09SDavid van Moolenbroek #define	NETDB_INTERNAL	-1	/* see errno */
67*00b67f09SDavid van Moolenbroek #define	NETDB_SUCCESS	0	/* no problem */
68*00b67f09SDavid van Moolenbroek #define	HOST_NOT_FOUND	1 /* Authoritative Answer Host not found */
69*00b67f09SDavid van Moolenbroek #define	TRY_AGAIN	2 /* Non-Authoritative Host not found, or SERVERFAIL */
70*00b67f09SDavid van Moolenbroek #define	NO_RECOVERY	3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
71*00b67f09SDavid van Moolenbroek #define	NO_DATA		4 /* Valid name, no data record of requested type */
72*00b67f09SDavid van Moolenbroek #define	NO_ADDRESS	NO_DATA		/* no address, look for MX record */
73*00b67f09SDavid van Moolenbroek 
74*00b67f09SDavid van Moolenbroek /*
75*00b67f09SDavid van Moolenbroek  * Error return codes from getaddrinfo()
76*00b67f09SDavid van Moolenbroek  */
77*00b67f09SDavid van Moolenbroek 
78*00b67f09SDavid van Moolenbroek #undef	EAI_ADDRFAMILY
79*00b67f09SDavid van Moolenbroek #undef	EAI_AGAIN
80*00b67f09SDavid van Moolenbroek #undef	EAI_BADFLAGS
81*00b67f09SDavid van Moolenbroek #undef	EAI_FAIL
82*00b67f09SDavid van Moolenbroek #undef	EAI_FAMILY
83*00b67f09SDavid van Moolenbroek #undef	EAI_MEMORY
84*00b67f09SDavid van Moolenbroek #undef	EAI_NODATA
85*00b67f09SDavid van Moolenbroek #undef	EAI_NONAME
86*00b67f09SDavid van Moolenbroek #undef	EAI_SERVICE
87*00b67f09SDavid van Moolenbroek #undef	EAI_SOCKTYPE
88*00b67f09SDavid van Moolenbroek #undef	EAI_SYSTEM
89*00b67f09SDavid van Moolenbroek #undef	EAI_BADHINTS
90*00b67f09SDavid van Moolenbroek #undef	EAI_PROTOCOL
91*00b67f09SDavid van Moolenbroek #undef	EAI_OVERFLOW
92*00b67f09SDavid van Moolenbroek #undef	EAI_MAX
93*00b67f09SDavid van Moolenbroek 
94*00b67f09SDavid van Moolenbroek #define	EAI_ADDRFAMILY	 1	/* address family for hostname not supported */
95*00b67f09SDavid van Moolenbroek #define	EAI_AGAIN	 2	/* temporary failure in name resolution */
96*00b67f09SDavid van Moolenbroek #define	EAI_BADFLAGS	 3	/* invalid value for ai_flags */
97*00b67f09SDavid van Moolenbroek #define	EAI_FAIL	 4	/* non-recoverable failure in name resolution */
98*00b67f09SDavid van Moolenbroek #define	EAI_FAMILY	 5	/* ai_family not supported */
99*00b67f09SDavid van Moolenbroek #define	EAI_MEMORY	 6	/* memory allocation failure */
100*00b67f09SDavid van Moolenbroek #define	EAI_NODATA	 7	/* no address associated with hostname */
101*00b67f09SDavid van Moolenbroek #define	EAI_NONAME	 8	/* hostname nor servname provided, or not known */
102*00b67f09SDavid van Moolenbroek #define	EAI_SERVICE	 9	/* servname not supported for ai_socktype */
103*00b67f09SDavid van Moolenbroek #define	EAI_SOCKTYPE	10	/* ai_socktype not supported */
104*00b67f09SDavid van Moolenbroek #define	EAI_SYSTEM	11	/* system error returned in errno */
105*00b67f09SDavid van Moolenbroek #define EAI_BADHINTS	12
106*00b67f09SDavid van Moolenbroek #define EAI_PROTOCOL	13
107*00b67f09SDavid van Moolenbroek #define EAI_OVERFLOW	14
108*00b67f09SDavid van Moolenbroek #define EAI_MAX		15
109*00b67f09SDavid van Moolenbroek 
110*00b67f09SDavid van Moolenbroek /*
111*00b67f09SDavid van Moolenbroek  * Flag values for getaddrinfo()
112*00b67f09SDavid van Moolenbroek  */
113*00b67f09SDavid van Moolenbroek #undef	AI_PASSIVE
114*00b67f09SDavid van Moolenbroek #undef	AI_CANONNAME
115*00b67f09SDavid van Moolenbroek #undef	AI_NUMERICHOST
116*00b67f09SDavid van Moolenbroek 
117*00b67f09SDavid van Moolenbroek #define	AI_PASSIVE	0x00000001
118*00b67f09SDavid van Moolenbroek #define	AI_CANONNAME	0x00000002
119*00b67f09SDavid van Moolenbroek #define AI_NUMERICHOST	0x00000004
120*00b67f09SDavid van Moolenbroek 
121*00b67f09SDavid van Moolenbroek /*
122*00b67f09SDavid van Moolenbroek  * Flag values for getipnodebyname()
123*00b67f09SDavid van Moolenbroek  */
124*00b67f09SDavid van Moolenbroek #undef AI_V4MAPPED
125*00b67f09SDavid van Moolenbroek #undef AI_ALL
126*00b67f09SDavid van Moolenbroek #undef AI_ADDRCONFIG
127*00b67f09SDavid van Moolenbroek #undef AI_DEFAULT
128*00b67f09SDavid van Moolenbroek 
129*00b67f09SDavid van Moolenbroek #define AI_V4MAPPED	0x00000008
130*00b67f09SDavid van Moolenbroek #define AI_ALL		0x00000010
131*00b67f09SDavid van Moolenbroek #define AI_ADDRCONFIG	0x00000020
132*00b67f09SDavid van Moolenbroek #define AI_DEFAULT	(AI_V4MAPPED|AI_ADDRCONFIG)
133*00b67f09SDavid van Moolenbroek 
134*00b67f09SDavid van Moolenbroek /*
135*00b67f09SDavid van Moolenbroek  * Constants for lwres_getnameinfo()
136*00b67f09SDavid van Moolenbroek  */
137*00b67f09SDavid van Moolenbroek #undef	NI_MAXHOST
138*00b67f09SDavid van Moolenbroek #undef	NI_MAXSERV
139*00b67f09SDavid van Moolenbroek 
140*00b67f09SDavid van Moolenbroek #define	NI_MAXHOST	1025
141*00b67f09SDavid van Moolenbroek #define	NI_MAXSERV	32
142*00b67f09SDavid van Moolenbroek 
143*00b67f09SDavid van Moolenbroek /*
144*00b67f09SDavid van Moolenbroek  * Flag values for lwres_getnameinfo()
145*00b67f09SDavid van Moolenbroek  */
146*00b67f09SDavid van Moolenbroek #undef	NI_NOFQDN
147*00b67f09SDavid van Moolenbroek #undef	NI_NUMERICHOST
148*00b67f09SDavid van Moolenbroek #undef	NI_NAMEREQD
149*00b67f09SDavid van Moolenbroek #undef	NI_NUMERICSERV
150*00b67f09SDavid van Moolenbroek #undef	NI_DGRAM
151*00b67f09SDavid van Moolenbroek #undef	NI_NUMERICSCOPE
152*00b67f09SDavid van Moolenbroek 
153*00b67f09SDavid van Moolenbroek #define	NI_NOFQDN	0x00000001
154*00b67f09SDavid van Moolenbroek #define	NI_NUMERICHOST	0x00000002
155*00b67f09SDavid van Moolenbroek #define	NI_NAMEREQD	0x00000004
156*00b67f09SDavid van Moolenbroek #define	NI_NUMERICSERV	0x00000008
157*00b67f09SDavid van Moolenbroek #define	NI_DGRAM	0x00000010
158*00b67f09SDavid van Moolenbroek #define	NI_NUMERICSCOPE	0x00000020	/*2553bis-00*/
159*00b67f09SDavid van Moolenbroek 
160*00b67f09SDavid van Moolenbroek /*
161*00b67f09SDavid van Moolenbroek  * Define if <netdb.h> does not declare struct rrsetinfo.
162*00b67f09SDavid van Moolenbroek  */
163*00b67f09SDavid van Moolenbroek #define ISC_LWRES_NEEDRRSETINFO 1
164*00b67f09SDavid van Moolenbroek 
165*00b67f09SDavid van Moolenbroek #ifdef ISC_LWRES_NEEDRRSETINFO
166*00b67f09SDavid van Moolenbroek /*
167*00b67f09SDavid van Moolenbroek  * Structures for getrrsetbyname()
168*00b67f09SDavid van Moolenbroek  */
169*00b67f09SDavid van Moolenbroek struct rdatainfo {
170*00b67f09SDavid van Moolenbroek 	unsigned int		rdi_length;
171*00b67f09SDavid van Moolenbroek 	unsigned char		*rdi_data;
172*00b67f09SDavid van Moolenbroek };
173*00b67f09SDavid van Moolenbroek 
174*00b67f09SDavid van Moolenbroek struct rrsetinfo {
175*00b67f09SDavid van Moolenbroek 	unsigned int		rri_flags;
176*00b67f09SDavid van Moolenbroek 	int			rri_rdclass;
177*00b67f09SDavid van Moolenbroek 	int			rri_rdtype;
178*00b67f09SDavid van Moolenbroek 	unsigned int		rri_ttl;
179*00b67f09SDavid van Moolenbroek 	unsigned int		rri_nrdatas;
180*00b67f09SDavid van Moolenbroek 	unsigned int		rri_nsigs;
181*00b67f09SDavid van Moolenbroek 	char			*rri_name;
182*00b67f09SDavid van Moolenbroek 	struct rdatainfo	*rri_rdatas;
183*00b67f09SDavid van Moolenbroek 	struct rdatainfo	*rri_sigs;
184*00b67f09SDavid van Moolenbroek };
185*00b67f09SDavid van Moolenbroek 
186*00b67f09SDavid van Moolenbroek /*
187*00b67f09SDavid van Moolenbroek  * Flags for getrrsetbyname()
188*00b67f09SDavid van Moolenbroek  */
189*00b67f09SDavid van Moolenbroek #define RRSET_VALIDATED		0x00000001
190*00b67f09SDavid van Moolenbroek 	/* Set was dnssec validated */
191*00b67f09SDavid van Moolenbroek 
192*00b67f09SDavid van Moolenbroek /*
193*00b67f09SDavid van Moolenbroek  * Return codes for getrrsetbyname()
194*00b67f09SDavid van Moolenbroek  */
195*00b67f09SDavid van Moolenbroek #define ERRSET_SUCCESS		0
196*00b67f09SDavid van Moolenbroek #define ERRSET_NOMEMORY		1
197*00b67f09SDavid van Moolenbroek #define ERRSET_FAIL		2
198*00b67f09SDavid van Moolenbroek #define ERRSET_INVAL		3
199*00b67f09SDavid van Moolenbroek #define	ERRSET_NONAME	 	4
200*00b67f09SDavid van Moolenbroek #define	ERRSET_NODATA	 	5
201*00b67f09SDavid van Moolenbroek #endif
202*00b67f09SDavid van Moolenbroek 
203*00b67f09SDavid van Moolenbroek /*
204*00b67f09SDavid van Moolenbroek  * Define to map into lwres_ namespace.
205*00b67f09SDavid van Moolenbroek  */
206*00b67f09SDavid van Moolenbroek 
207*00b67f09SDavid van Moolenbroek #define LWRES_NAMESPACE
208*00b67f09SDavid van Moolenbroek 
209*00b67f09SDavid van Moolenbroek #ifdef LWRES_NAMESPACE
210*00b67f09SDavid van Moolenbroek 
211*00b67f09SDavid van Moolenbroek /*
212*00b67f09SDavid van Moolenbroek  * Use our versions not the ones from the C library.
213*00b67f09SDavid van Moolenbroek  */
214*00b67f09SDavid van Moolenbroek 
215*00b67f09SDavid van Moolenbroek #ifdef getnameinfo
216*00b67f09SDavid van Moolenbroek #undef getnameinfo
217*00b67f09SDavid van Moolenbroek #endif
218*00b67f09SDavid van Moolenbroek #define getnameinfo lwres_getnameinfo
219*00b67f09SDavid van Moolenbroek 
220*00b67f09SDavid van Moolenbroek #ifdef getaddrinfo
221*00b67f09SDavid van Moolenbroek #undef getaddrinfo
222*00b67f09SDavid van Moolenbroek #endif
223*00b67f09SDavid van Moolenbroek #define getaddrinfo lwres_getaddrinfo
224*00b67f09SDavid van Moolenbroek 
225*00b67f09SDavid van Moolenbroek #ifdef freeaddrinfo
226*00b67f09SDavid van Moolenbroek #undef freeaddrinfo
227*00b67f09SDavid van Moolenbroek #endif
228*00b67f09SDavid van Moolenbroek #define freeaddrinfo lwres_freeaddrinfo
229*00b67f09SDavid van Moolenbroek 
230*00b67f09SDavid van Moolenbroek #ifdef gai_strerror
231*00b67f09SDavid van Moolenbroek #undef gai_strerror
232*00b67f09SDavid van Moolenbroek #endif
233*00b67f09SDavid van Moolenbroek #define gai_strerror lwres_gai_strerror
234*00b67f09SDavid van Moolenbroek 
235*00b67f09SDavid van Moolenbroek #ifdef herror
236*00b67f09SDavid van Moolenbroek #undef herror
237*00b67f09SDavid van Moolenbroek #endif
238*00b67f09SDavid van Moolenbroek #define herror lwres_herror
239*00b67f09SDavid van Moolenbroek 
240*00b67f09SDavid van Moolenbroek #ifdef hstrerror
241*00b67f09SDavid van Moolenbroek #undef hstrerror
242*00b67f09SDavid van Moolenbroek #endif
243*00b67f09SDavid van Moolenbroek #define hstrerror lwres_hstrerror
244*00b67f09SDavid van Moolenbroek 
245*00b67f09SDavid van Moolenbroek #ifdef getipnodebyname
246*00b67f09SDavid van Moolenbroek #undef getipnodebyname
247*00b67f09SDavid van Moolenbroek #endif
248*00b67f09SDavid van Moolenbroek #define getipnodebyname lwres_getipnodebyname
249*00b67f09SDavid van Moolenbroek 
250*00b67f09SDavid van Moolenbroek #ifdef getipnodebyaddr
251*00b67f09SDavid van Moolenbroek #undef getipnodebyaddr
252*00b67f09SDavid van Moolenbroek #endif
253*00b67f09SDavid van Moolenbroek #define getipnodebyaddr lwres_getipnodebyaddr
254*00b67f09SDavid van Moolenbroek 
255*00b67f09SDavid van Moolenbroek #ifdef freehostent
256*00b67f09SDavid van Moolenbroek #undef freehostent
257*00b67f09SDavid van Moolenbroek #endif
258*00b67f09SDavid van Moolenbroek #define freehostent lwres_freehostent
259*00b67f09SDavid van Moolenbroek 
260*00b67f09SDavid van Moolenbroek #ifdef gethostbyname
261*00b67f09SDavid van Moolenbroek #undef gethostbyname
262*00b67f09SDavid van Moolenbroek #endif
263*00b67f09SDavid van Moolenbroek #define gethostbyname lwres_gethostbyname
264*00b67f09SDavid van Moolenbroek 
265*00b67f09SDavid van Moolenbroek #ifdef gethostbyname2
266*00b67f09SDavid van Moolenbroek #undef gethostbyname2
267*00b67f09SDavid van Moolenbroek #endif
268*00b67f09SDavid van Moolenbroek #define gethostbyname2 lwres_gethostbyname2
269*00b67f09SDavid van Moolenbroek 
270*00b67f09SDavid van Moolenbroek #ifdef gethostbyaddr
271*00b67f09SDavid van Moolenbroek #undef gethostbyaddr
272*00b67f09SDavid van Moolenbroek #endif
273*00b67f09SDavid van Moolenbroek #define gethostbyaddr lwres_gethostbyaddr
274*00b67f09SDavid van Moolenbroek 
275*00b67f09SDavid van Moolenbroek #ifdef gethostent
276*00b67f09SDavid van Moolenbroek #undef gethostent
277*00b67f09SDavid van Moolenbroek #endif
278*00b67f09SDavid van Moolenbroek #define gethostent lwres_gethostent
279*00b67f09SDavid van Moolenbroek 
280*00b67f09SDavid van Moolenbroek #ifdef sethostent
281*00b67f09SDavid van Moolenbroek #undef sethostent
282*00b67f09SDavid van Moolenbroek #endif
283*00b67f09SDavid van Moolenbroek #define sethostent lwres_sethostent
284*00b67f09SDavid van Moolenbroek 
285*00b67f09SDavid van Moolenbroek #ifdef endhostent
286*00b67f09SDavid van Moolenbroek #undef endhostent
287*00b67f09SDavid van Moolenbroek #endif
288*00b67f09SDavid van Moolenbroek #define endhostent lwres_endhostent
289*00b67f09SDavid van Moolenbroek 
290*00b67f09SDavid van Moolenbroek /* #define sethostfile lwres_sethostfile */
291*00b67f09SDavid van Moolenbroek 
292*00b67f09SDavid van Moolenbroek #ifdef gethostbyname_r
293*00b67f09SDavid van Moolenbroek #undef gethostbyname_r
294*00b67f09SDavid van Moolenbroek #endif
295*00b67f09SDavid van Moolenbroek #define gethostbyname_r lwres_gethostbyname_r
296*00b67f09SDavid van Moolenbroek 
297*00b67f09SDavid van Moolenbroek #ifdef gethostbyaddr_r
298*00b67f09SDavid van Moolenbroek #undef gethostbyaddr_r
299*00b67f09SDavid van Moolenbroek #endif
300*00b67f09SDavid van Moolenbroek #define gethostbyaddr_r lwres_gethostbyaddr_r
301*00b67f09SDavid van Moolenbroek 
302*00b67f09SDavid van Moolenbroek #ifdef gethostent_r
303*00b67f09SDavid van Moolenbroek #undef gethostent_r
304*00b67f09SDavid van Moolenbroek #endif
305*00b67f09SDavid van Moolenbroek #define gethostent_r lwres_gethostent_r
306*00b67f09SDavid van Moolenbroek 
307*00b67f09SDavid van Moolenbroek #ifdef sethostent_r
308*00b67f09SDavid van Moolenbroek #undef sethostent_r
309*00b67f09SDavid van Moolenbroek #endif
310*00b67f09SDavid van Moolenbroek #define sethostent_r lwres_sethostent_r
311*00b67f09SDavid van Moolenbroek 
312*00b67f09SDavid van Moolenbroek #ifdef endhostent_r
313*00b67f09SDavid van Moolenbroek #undef endhostent_r
314*00b67f09SDavid van Moolenbroek #endif
315*00b67f09SDavid van Moolenbroek #define endhostent_r lwres_endhostent_r
316*00b67f09SDavid van Moolenbroek 
317*00b67f09SDavid van Moolenbroek #ifdef getrrsetbyname
318*00b67f09SDavid van Moolenbroek #undef getrrsetbyname
319*00b67f09SDavid van Moolenbroek #endif
320*00b67f09SDavid van Moolenbroek #define getrrsetbyname lwres_getrrsetbyname
321*00b67f09SDavid van Moolenbroek 
322*00b67f09SDavid van Moolenbroek #ifdef freerrset
323*00b67f09SDavid van Moolenbroek #undef freerrset
324*00b67f09SDavid van Moolenbroek #endif
325*00b67f09SDavid van Moolenbroek #define freerrset lwres_freerrset
326*00b67f09SDavid van Moolenbroek 
327*00b67f09SDavid van Moolenbroek #ifdef notyet
328*00b67f09SDavid van Moolenbroek #define getservbyname lwres_getservbyname
329*00b67f09SDavid van Moolenbroek #define getservbyport lwres_getservbyport
330*00b67f09SDavid van Moolenbroek #define getservent lwres_getservent
331*00b67f09SDavid van Moolenbroek #define setservent lwres_setservent
332*00b67f09SDavid van Moolenbroek #define endservent lwres_endservent
333*00b67f09SDavid van Moolenbroek 
334*00b67f09SDavid van Moolenbroek #define getservbyname_r lwres_getservbyname_r
335*00b67f09SDavid van Moolenbroek #define getservbyport_r lwres_getservbyport_r
336*00b67f09SDavid van Moolenbroek #define getservent_r lwres_getservent_r
337*00b67f09SDavid van Moolenbroek #define setservent_r lwres_setservent_r
338*00b67f09SDavid van Moolenbroek #define endservent_r lwres_endservent_r
339*00b67f09SDavid van Moolenbroek 
340*00b67f09SDavid van Moolenbroek #define getprotobyname lwres_getprotobyname
341*00b67f09SDavid van Moolenbroek #define getprotobynumber lwres_getprotobynumber
342*00b67f09SDavid van Moolenbroek #define getprotoent lwres_getprotoent
343*00b67f09SDavid van Moolenbroek #define setprotoent lwres_setprotoent
344*00b67f09SDavid van Moolenbroek #define endprotoent lwres_endprotoent
345*00b67f09SDavid van Moolenbroek 
346*00b67f09SDavid van Moolenbroek #define getprotobyname_r lwres_getprotobyname_r
347*00b67f09SDavid van Moolenbroek #define getprotobynumber_r lwres_getprotobynumber_r
348*00b67f09SDavid van Moolenbroek #define getprotoent_r lwres_getprotoent_r
349*00b67f09SDavid van Moolenbroek #define setprotoent_r lwres_setprotoent_r
350*00b67f09SDavid van Moolenbroek #define endprotoent_r lwres_endprotoent_r
351*00b67f09SDavid van Moolenbroek 
352*00b67f09SDavid van Moolenbroek #ifdef getnetbyname
353*00b67f09SDavid van Moolenbroek #undef getnetbyname
354*00b67f09SDavid van Moolenbroek #endif
355*00b67f09SDavid van Moolenbroek #define getnetbyname lwres_getnetbyname
356*00b67f09SDavid van Moolenbroek 
357*00b67f09SDavid van Moolenbroek #ifdef getnetbyaddr
358*00b67f09SDavid van Moolenbroek #undef getnetbyaddr
359*00b67f09SDavid van Moolenbroek #endif
360*00b67f09SDavid van Moolenbroek #define getnetbyaddr lwres_getnetbyaddr
361*00b67f09SDavid van Moolenbroek 
362*00b67f09SDavid van Moolenbroek #ifdef getnetent
363*00b67f09SDavid van Moolenbroek #undef getnetent
364*00b67f09SDavid van Moolenbroek #endif
365*00b67f09SDavid van Moolenbroek #define getnetent lwres_getnetent
366*00b67f09SDavid van Moolenbroek 
367*00b67f09SDavid van Moolenbroek #ifdef setnetent
368*00b67f09SDavid van Moolenbroek #undef setnetent
369*00b67f09SDavid van Moolenbroek #endif
370*00b67f09SDavid van Moolenbroek #define setnetent lwres_setnetent
371*00b67f09SDavid van Moolenbroek 
372*00b67f09SDavid van Moolenbroek #ifdef endnetent
373*00b67f09SDavid van Moolenbroek #undef endnetent
374*00b67f09SDavid van Moolenbroek #endif
375*00b67f09SDavid van Moolenbroek #define endnetent lwres_endnetent
376*00b67f09SDavid van Moolenbroek 
377*00b67f09SDavid van Moolenbroek 
378*00b67f09SDavid van Moolenbroek #ifdef getnetbyname_r
379*00b67f09SDavid van Moolenbroek #undef getnetbyname_r
380*00b67f09SDavid van Moolenbroek #endif
381*00b67f09SDavid van Moolenbroek #define getnetbyname_r lwres_getnetbyname_r
382*00b67f09SDavid van Moolenbroek 
383*00b67f09SDavid van Moolenbroek #ifdef getnetbyaddr_r
384*00b67f09SDavid van Moolenbroek #undef getnetbyaddr_r
385*00b67f09SDavid van Moolenbroek #endif
386*00b67f09SDavid van Moolenbroek #define getnetbyaddr_r lwres_getnetbyaddr_r
387*00b67f09SDavid van Moolenbroek 
388*00b67f09SDavid van Moolenbroek #ifdef getnetent_r
389*00b67f09SDavid van Moolenbroek #undef getnetent_r
390*00b67f09SDavid van Moolenbroek #endif
391*00b67f09SDavid van Moolenbroek #define getnetent_r lwres_getnetent_r
392*00b67f09SDavid van Moolenbroek 
393*00b67f09SDavid van Moolenbroek #ifdef setnetent_r
394*00b67f09SDavid van Moolenbroek #undef setnetent_r
395*00b67f09SDavid van Moolenbroek #endif
396*00b67f09SDavid van Moolenbroek #define setnetent_r lwres_setnetent_r
397*00b67f09SDavid van Moolenbroek 
398*00b67f09SDavid van Moolenbroek #ifdef endnetent_r
399*00b67f09SDavid van Moolenbroek #undef endnetent_r
400*00b67f09SDavid van Moolenbroek #endif
401*00b67f09SDavid van Moolenbroek #define endnetent_r lwres_endnetent_r
402*00b67f09SDavid van Moolenbroek #endif	/* notyet */
403*00b67f09SDavid van Moolenbroek 
404*00b67f09SDavid van Moolenbroek #ifdef h_errno
405*00b67f09SDavid van Moolenbroek #undef h_errno
406*00b67f09SDavid van Moolenbroek #endif
407*00b67f09SDavid van Moolenbroek #define h_errno lwres_h_errno
408*00b67f09SDavid van Moolenbroek 
409*00b67f09SDavid van Moolenbroek #endif	/* LWRES_NAMESPACE */
410*00b67f09SDavid van Moolenbroek 
411*00b67f09SDavid van Moolenbroek LWRES_LANG_BEGINDECLS
412*00b67f09SDavid van Moolenbroek 
413*00b67f09SDavid van Moolenbroek extern int lwres_h_errno;
414*00b67f09SDavid van Moolenbroek 
415*00b67f09SDavid van Moolenbroek int		lwres_getaddrinfo(const char *, const char *,
416*00b67f09SDavid van Moolenbroek 				 const struct addrinfo *, struct addrinfo **);
417*00b67f09SDavid van Moolenbroek int		lwres_getnameinfo(const struct sockaddr *, size_t, char *,
418*00b67f09SDavid van Moolenbroek 				 size_t, char *, size_t, int);
419*00b67f09SDavid van Moolenbroek void		lwres_freeaddrinfo(struct addrinfo *);
420*00b67f09SDavid van Moolenbroek char		*lwres_gai_strerror(int);
421*00b67f09SDavid van Moolenbroek 
422*00b67f09SDavid van Moolenbroek struct hostent	*lwres_gethostbyaddr(const char *, int, int);
423*00b67f09SDavid van Moolenbroek struct hostent	*lwres_gethostbyname(const char *);
424*00b67f09SDavid van Moolenbroek struct hostent	*lwres_gethostbyname2(const char *, int);
425*00b67f09SDavid van Moolenbroek struct hostent	*lwres_gethostent(void);
426*00b67f09SDavid van Moolenbroek struct hostent	*lwres_getipnodebyname(const char *, int, int, int *);
427*00b67f09SDavid van Moolenbroek struct hostent	*lwres_getipnodebyaddr(const void *, size_t, int, int *);
428*00b67f09SDavid van Moolenbroek void		lwres_endhostent(void);
429*00b67f09SDavid van Moolenbroek void		lwres_sethostent(int);
430*00b67f09SDavid van Moolenbroek /* void		lwres_sethostfile(const char *); */
431*00b67f09SDavid van Moolenbroek void		lwres_freehostent(struct hostent *);
432*00b67f09SDavid van Moolenbroek 
433*00b67f09SDavid van Moolenbroek int		lwres_getrrsetbyname(const char *, unsigned int, unsigned int,
434*00b67f09SDavid van Moolenbroek 				     unsigned int, struct rrsetinfo **);
435*00b67f09SDavid van Moolenbroek void		lwres_freerrset(struct rrsetinfo *);
436*00b67f09SDavid van Moolenbroek 
437*00b67f09SDavid van Moolenbroek #ifdef notyet
438*00b67f09SDavid van Moolenbroek struct netent	*lwres_getnetbyaddr(unsigned long, int);
439*00b67f09SDavid van Moolenbroek struct netent	*lwres_getnetbyname(const char *);
440*00b67f09SDavid van Moolenbroek struct netent	*lwres_getnetent(void);
441*00b67f09SDavid van Moolenbroek void		lwres_endnetent(void);
442*00b67f09SDavid van Moolenbroek void		lwres_setnetent(int);
443*00b67f09SDavid van Moolenbroek 
444*00b67f09SDavid van Moolenbroek struct protoent	*lwres_getprotobyname(const char *);
445*00b67f09SDavid van Moolenbroek struct protoent	*lwres_getprotobynumber(int);
446*00b67f09SDavid van Moolenbroek struct protoent	*lwres_getprotoent(void);
447*00b67f09SDavid van Moolenbroek void		lwres_endprotoent(void);
448*00b67f09SDavid van Moolenbroek void		lwres_setprotoent(int);
449*00b67f09SDavid van Moolenbroek 
450*00b67f09SDavid van Moolenbroek struct servent	*lwres_getservbyname(const char *, const char *);
451*00b67f09SDavid van Moolenbroek struct servent	*lwres_getservbyport(int, const char *);
452*00b67f09SDavid van Moolenbroek struct servent	*lwres_getservent(void);
453*00b67f09SDavid van Moolenbroek void		lwres_endservent(void);
454*00b67f09SDavid van Moolenbroek void		lwres_setservent(int);
455*00b67f09SDavid van Moolenbroek #endif /* notyet */
456*00b67f09SDavid van Moolenbroek 
457*00b67f09SDavid van Moolenbroek void		lwres_herror(const char *);
458*00b67f09SDavid van Moolenbroek const char	*lwres_hstrerror(int);
459*00b67f09SDavid van Moolenbroek 
460*00b67f09SDavid van Moolenbroek 
461*00b67f09SDavid van Moolenbroek struct hostent	*lwres_gethostbyaddr_r(const char *, int, int, struct hostent *,
462*00b67f09SDavid van Moolenbroek 					char *, int, int *);
463*00b67f09SDavid van Moolenbroek struct hostent	*lwres_gethostbyname_r(const char *, struct hostent *,
464*00b67f09SDavid van Moolenbroek 					char *, int, int *);
465*00b67f09SDavid van Moolenbroek struct hostent	*lwres_gethostent_r(struct hostent *, char *, int, int *);
466*00b67f09SDavid van Moolenbroek void		lwres_sethostent_r(int);
467*00b67f09SDavid van Moolenbroek void		lwres_endhostent_r(void);
468*00b67f09SDavid van Moolenbroek 
469*00b67f09SDavid van Moolenbroek #ifdef notyet
470*00b67f09SDavid van Moolenbroek struct netent	*lwres_getnetbyname_r(const char *, struct netent *,
471*00b67f09SDavid van Moolenbroek 					char *, int);
472*00b67f09SDavid van Moolenbroek struct netent	*lwres_getnetbyaddr_r(long, int, struct netent *,
473*00b67f09SDavid van Moolenbroek 					char *, int);
474*00b67f09SDavid van Moolenbroek struct netent	*lwres_getnetent_r(struct netent *, char *, int);
475*00b67f09SDavid van Moolenbroek void		lwres_setnetent_r(int);
476*00b67f09SDavid van Moolenbroek void		lwres_endnetent_r(void);
477*00b67f09SDavid van Moolenbroek 
478*00b67f09SDavid van Moolenbroek struct protoent	*lwres_getprotobyname_r(const char *,
479*00b67f09SDavid van Moolenbroek 				struct protoent *, char *, int);
480*00b67f09SDavid van Moolenbroek struct protoent	*lwres_getprotobynumber_r(int,
481*00b67f09SDavid van Moolenbroek 				struct protoent *, char *, int);
482*00b67f09SDavid van Moolenbroek struct protoent	*lwres_getprotoent_r(struct protoent *, char *, int);
483*00b67f09SDavid van Moolenbroek void		lwres_setprotoent_r(int);
484*00b67f09SDavid van Moolenbroek void		lwres_endprotoent_r(void);
485*00b67f09SDavid van Moolenbroek 
486*00b67f09SDavid van Moolenbroek struct servent	*lwres_getservbyname_r(const char *name, const char *,
487*00b67f09SDavid van Moolenbroek 					struct servent *, char *, int);
488*00b67f09SDavid van Moolenbroek struct servent	*lwres_getservbyport_r(int port, const char *,
489*00b67f09SDavid van Moolenbroek 					struct servent *, char *, int);
490*00b67f09SDavid van Moolenbroek struct servent	*lwres_getservent_r(struct servent *, char *, int);
491*00b67f09SDavid van Moolenbroek void		lwres_setservent_r(int);
492*00b67f09SDavid van Moolenbroek void		lwres_endservent_r(void);
493*00b67f09SDavid van Moolenbroek #endif	/* notyet */
494*00b67f09SDavid van Moolenbroek 
495*00b67f09SDavid van Moolenbroek LWRES_LANG_ENDDECLS
496*00b67f09SDavid van Moolenbroek 
497*00b67f09SDavid van Moolenbroek #ifdef notyet
498*00b67f09SDavid van Moolenbroek /* This is nec'y to make this include file properly replace the sun version. */
499*00b67f09SDavid van Moolenbroek #ifdef sun
500*00b67f09SDavid van Moolenbroek #ifdef __GNU_LIBRARY__
501*00b67f09SDavid van Moolenbroek #include <rpc/netdb.h>		/* Required. */
502*00b67f09SDavid van Moolenbroek #else /* !__GNU_LIBRARY__ */
503*00b67f09SDavid van Moolenbroek struct rpcent {
504*00b67f09SDavid van Moolenbroek 	char	*r_name;	/* name of server for this rpc program */
505*00b67f09SDavid van Moolenbroek 	char	**r_aliases;	/* alias list */
506*00b67f09SDavid van Moolenbroek 	int	r_number;	/* rpc program number */
507*00b67f09SDavid van Moolenbroek };
508*00b67f09SDavid van Moolenbroek struct rpcent	*lwres_getrpcbyname();
509*00b67f09SDavid van Moolenbroek struct rpcent	*lwres_getrpcbynumber(),
510*00b67f09SDavid van Moolenbroek struct rpcent	*lwres_getrpcent();
511*00b67f09SDavid van Moolenbroek #endif /* __GNU_LIBRARY__ */
512*00b67f09SDavid van Moolenbroek #endif /* sun */
513*00b67f09SDavid van Moolenbroek #endif /* notyet */
514*00b67f09SDavid van Moolenbroek 
515*00b67f09SDavid van Moolenbroek /*
516*00b67f09SDavid van Moolenbroek  * Tell Emacs to use C mode on this file.
517*00b67f09SDavid van Moolenbroek  * Local variables:
518*00b67f09SDavid van Moolenbroek  * mode: c
519*00b67f09SDavid van Moolenbroek  * End:
520*00b67f09SDavid van Moolenbroek  */
521*00b67f09SDavid van Moolenbroek 
522*00b67f09SDavid van Moolenbroek #endif /* LWRES_NETDB_H */
523