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