1/*
2 * Copyright (C) 2004-2009  Internet Systems Consortium, Inc. ("ISC")
3 * Copyright (C) 1999-2003  Internet Software Consortium.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11 * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 * PERFORMANCE OF THIS SOFTWARE.
16 */
17
18/* $Id: platform.h.in,v 1.48.84.2 2009/02/16 23:47:15 tbox Exp $ */
19
20#ifndef ISC_PLATFORM_H
21#define ISC_PLATFORM_H 1
22
23/*! \file */
24
25/*****
26 ***** Platform-dependent defines.
27 *****/
28
29/***
30 *** Network.
31 ***/
32
33/*! \brief
34 * Define if this system needs the <netinet/in6.h> header file included
35 * for full IPv6 support (pretty much only UnixWare).
36 */
37@ISC_PLATFORM_NEEDNETINETIN6H@
38
39/*! \brief
40 * Define if this system needs the <netinet6/in6.h> header file included
41 * to support in6_pkinfo (pretty much only BSD/OS).
42 */
43@ISC_PLATFORM_NEEDNETINET6IN6H@
44
45/*! \brief
46 * If sockaddrs on this system have an sa_len field, ISC_PLATFORM_HAVESALEN
47 * will be defined.
48 */
49@ISC_PLATFORM_HAVESALEN@
50
51/*! \brief
52 * If this system has the IPv6 structure definitions, ISC_PLATFORM_HAVEIPV6
53 * will be defined.
54 */
55@ISC_PLATFORM_HAVEIPV6@
56
57/*! \brief
58 * If this system is missing in6addr_any, ISC_PLATFORM_NEEDIN6ADDRANY will
59 * be defined.
60 */
61@ISC_PLATFORM_NEEDIN6ADDRANY@
62
63/*! \brief
64 * If this system is missing in6addr_loopback, ISC_PLATFORM_NEEDIN6ADDRLOOPBACK
65 * will be defined.
66 */
67@ISC_PLATFORM_NEEDIN6ADDRLOOPBACK@
68
69/*! \brief
70 * If this system has in6_pktinfo, ISC_PLATFORM_HAVEIN6PKTINFO will be
71 * defined.
72 */
73@ISC_PLATFORM_HAVEIN6PKTINFO@
74
75/*! \brief
76 * If this system has in_addr6, rather than in6_addr, ISC_PLATFORM_HAVEINADDR6
77 * will be defined.
78 */
79@ISC_PLATFORM_HAVEINADDR6@
80
81/*! \brief
82 * If this system has sin6_scope_id, ISC_PLATFORM_HAVESCOPEID will be defined.
83 */
84@ISC_PLATFORM_HAVESCOPEID@
85
86/*! \brief
87 * If this system needs inet_ntop(), ISC_PLATFORM_NEEDNTOP will be defined.
88 */
89@ISC_PLATFORM_NEEDNTOP@
90
91/*! \brief
92 * If this system needs inet_pton(), ISC_PLATFORM_NEEDPTON will be defined.
93 */
94@ISC_PLATFORM_NEEDPTON@
95
96/*! \brief
97 * If this system needs in_port_t, ISC_PLATFORM_NEEDPORTT will be defined.
98 */
99@ISC_PLATFORM_NEEDPORTT@
100
101/*! \brief
102 * Define if the system has struct lifconf which is a extended struct ifconf
103 * for IPv6.
104 */
105@ISC_PLATFORM_HAVELIFCONF@
106
107/*! \brief
108 * Define if the system has struct if_laddrconf which is a extended struct
109 * ifconf for IPv6.
110 */
111@ISC_PLATFORM_HAVEIF_LADDRCONF@
112
113/*! \brief
114 * Define if the system has struct if_laddrreq.
115 */
116@ISC_PLATFORM_HAVEIF_LADDRREQ@
117
118/*! \brief
119 * Define either ISC_PLATFORM_BSD44MSGHDR or ISC_PLATFORM_BSD43MSGHDR.
120 */
121@ISC_PLATFORM_MSGHDRFLAVOR@
122
123/*! \brief
124 * Define if the system supports if_nametoindex.
125 */
126@ISC_PLATFORM_HAVEIFNAMETOINDEX@
127
128/*! \brief
129 * Define on some UnixWare systems to fix erroneous definitions of various
130 * IN6_IS_ADDR_* macros.
131 */
132@ISC_PLATFORM_FIXIN6ISADDR@
133
134/*! \brief
135 * Define if the system supports kqueue multiplexing
136 */
137@ISC_PLATFORM_HAVEKQUEUE@
138
139/*! \brief
140 * Define if the system supports epoll multiplexing
141 */
142@ISC_PLATFORM_HAVEEPOLL@
143
144/*! \brief
145 * Define if the system supports /dev/poll multiplexing
146 */
147@ISC_PLATFORM_HAVEDEVPOLL@
148
149/*
150 *** Printing.
151 ***/
152
153/*! \brief
154 * If this system needs vsnprintf() and snprintf(), ISC_PLATFORM_NEEDVSNPRINTF
155 * will be defined.
156 */
157@ISC_PLATFORM_NEEDVSNPRINTF@
158
159/*! \brief
160 * If this system need a modern sprintf() that returns (int) not (char*).
161 */
162@ISC_PLATFORM_NEEDSPRINTF@
163
164/*! \brief
165 * The printf format string modifier to use with isc_uint64_t values.
166 */
167@ISC_PLATFORM_QUADFORMAT@
168
169/***
170 *** String functions.
171 ***/
172/*
173 * If the system needs strsep(), ISC_PLATFORM_NEEDSTRSEP will be defined.
174 */
175@ISC_PLATFORM_NEEDSTRSEP@
176
177/*
178 * If the system needs strlcpy(), ISC_PLATFORM_NEEDSTRLCPY will be defined.
179 */
180@ISC_PLATFORM_NEEDSTRLCPY@
181
182/*
183 * If the system needs strlcat(), ISC_PLATFORM_NEEDSTRLCAT will be defined.
184 */
185@ISC_PLATFORM_NEEDSTRLCAT@
186
187/*
188 * Define if this system needs strtoul.
189 */
190@ISC_PLATFORM_NEEDSTRTOUL@
191
192/*
193 * Define if this system needs memmove.
194 */
195@ISC_PLATFORM_NEEDMEMMOVE@
196
197/***
198 *** Miscellaneous.
199 ***/
200
201/*
202 * Defined if we are using threads.
203 */
204@ISC_PLATFORM_USETHREADS@
205
206/*
207 * Defined if unistd.h does not cause fd_set to be delared.
208 */
209@ISC_PLATFORM_NEEDSYSSELECTH@
210
211/*
212 * Defined to <gssapi.h> or <gssapi/gssapi.h> for how to include
213 * the GSSAPI header.
214 */
215@ISC_PLATFORM_GSSAPIHEADER@
216
217/*
218 * Type used for resource limits.
219 */
220@ISC_PLATFORM_RLIMITTYPE@
221
222/*
223 * Define if your compiler supports "long long int".
224 */
225@ISC_PLATFORM_HAVELONGLONG@
226
227/*
228 * Define if PTHREAD_ONCE_INIT should be surrounded by braces to
229 * prevent compiler warnings (such as with gcc on Solaris 2.8).
230 */
231@ISC_PLATFORM_BRACEPTHREADONCEINIT@
232
233/*
234 * Used to control how extern data is linked; needed for Win32 platforms.
235 */
236@ISC_PLATFORM_USEDECLSPEC@
237
238/*
239 * Define if the platform has <sys/un.h>.
240 */
241@ISC_PLATFORM_HAVESYSUNH@
242
243/*
244 * If the "xadd" operation is available on this architecture,
245 * ISC_PLATFORM_HAVEXADD will be defined.
246 */
247@ISC_PLATFORM_HAVEXADD@
248
249/*
250 * If the "xaddq" operation (64bit xadd) is available on this architecture,
251 * ISC_PLATFORM_HAVEXADDQ will be defined.
252 */
253@ISC_PLATFORM_HAVEXADDQ@
254
255/*
256 * If the "atomic swap" operation is available on this architecture,
257 * ISC_PLATFORM_HAVEATOMICSTORE" will be defined.
258 */
259@ISC_PLATFORM_HAVEATOMICSTORE@
260
261/*
262 * If the "compare-and-exchange" operation is available on this architecture,
263 * ISC_PLATFORM_HAVECMPXCHG will be defined.
264 */
265@ISC_PLATFORM_HAVECMPXCHG@
266
267/*
268 * Define if gcc ASM extension is available
269 */
270@ISC_PLATFORM_USEGCCASM@
271
272/*
273 * Define if Tru64 style ASM syntax must be used.
274 */
275@ISC_PLATFORM_USEOSFASM@
276
277/*
278 * Define if the standard __asm function must be used.
279 */
280@ISC_PLATFORM_USESTDASM@
281
282/*
283 * Define if the platform has <strings.h>.
284 */
285@ISC_PLATFORM_HAVESTRINGSH@
286
287/***
288 ***	Windows dll support.
289 ***/
290
291/*
292 * Define if MacOS style of PPC assembly must be used.
293 * e.g. "r6", not "6", for register six.
294 */
295@ISC_PLATFORM_USEMACASM@
296
297#ifndef ISC_PLATFORM_USEDECLSPEC
298#define LIBISC_EXTERNAL_DATA
299#define LIBDNS_EXTERNAL_DATA
300#define LIBISCCC_EXTERNAL_DATA
301#define LIBISCCFG_EXTERNAL_DATA
302#define LIBBIND9_EXTERNAL_DATA
303#else /*! \brief ISC_PLATFORM_USEDECLSPEC */
304#ifdef LIBISC_EXPORTS
305#define LIBISC_EXTERNAL_DATA __declspec(dllexport)
306#else
307#define LIBISC_EXTERNAL_DATA __declspec(dllimport)
308#endif
309#ifdef LIBDNS_EXPORTS
310#define LIBDNS_EXTERNAL_DATA __declspec(dllexport)
311#else
312#define LIBDNS_EXTERNAL_DATA __declspec(dllimport)
313#endif
314#ifdef LIBISCCC_EXPORTS
315#define LIBISCCC_EXTERNAL_DATA __declspec(dllexport)
316#else
317#define LIBISCCC_EXTERNAL_DATA __declspec(dllimport)
318#endif
319#ifdef LIBISCCFG_EXPORTS
320#define LIBISCCFG_EXTERNAL_DATA __declspec(dllexport)
321#else
322#define LIBISCCFG_EXTERNAL_DATA __declspec(dllimport)
323#endif
324#ifdef LIBBIND9_EXPORTS
325#define LIBBIND9_EXTERNAL_DATA __declspec(dllexport)
326#else
327#define LIBBIND9_EXTERNAL_DATA __declspec(dllimport)
328#endif
329#endif /*! \brief ISC_PLATFORM_USEDECLSPEC */
330
331/*
332 * Tell emacs to use C mode for this file.
333 *
334 * Local Variables:
335 * mode: c
336 * End:
337 */
338
339#endif /* ISC_PLATFORM_H */
340