config.h.win32 10.6 KB
Newer Older
Danny Mayer's avatar
Danny Mayer committed
1
/*
2
 * Copyright (C) 2004, 2006-2009, 2011-2015  Internet Systems Consortium, Inc. ("ISC")
Mark Andrews's avatar
Mark Andrews committed
3
 * Copyright (C) 1999-2001  Internet Software Consortium.
Danny Mayer's avatar
Danny Mayer committed
4
 *
Automatic Updater's avatar
Automatic Updater committed
5
 * Permission to use, copy, modify, and/or distribute this software for any
Danny Mayer's avatar
Danny Mayer committed
6 7 8
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
Mark Andrews's avatar
Mark Andrews committed
9 10 11 12 13 14 15
 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
Danny Mayer's avatar
Danny Mayer committed
16 17
 */

18
/* $Id: config.h.win32,v 1.28 2011/10/30 23:39:39 marka Exp $ */
Danny Mayer's avatar
Danny Mayer committed
19 20 21 22 23 24 25

/*
 * win32 configuration file
 * All definitions, declarations, macros and includes are
 * specific to the requirements of the Windows NT and Windows 2000
 * platforms
 */
David Lawrence's avatar
David Lawrence committed
26 27 28 29 30 31 32

/* Define to empty if the keyword does not work.  */
/* #undef const */

/* Define as __inline if that's what the C compiler calls it.  */
#define inline __inline

33
/* Define to `unsigned int/__int64' if <sys/types.h> doesn't define.  */
David Lawrence's avatar
David Lawrence committed
34 35
/* #undef size_t */

Danny Mayer's avatar
Danny Mayer committed
36 37 38 39 40
/*
 * ANSI C compliance enabled
 */
#define __STDC__ 1

Mark Andrews's avatar
Mark Andrews committed
41 42 43 44 45 46 47 48
/*
 * Silence compiler warnings about using strcpy and friends.
 */
#define _CRT_SECURE_NO_DEPRECATE 1

/*
 * Use 32 bit time.
 */
49
#ifndef _WIN64
Mark Andrews's avatar
Mark Andrews committed
50
#define _USE_32BIT_TIME_T 1
51
#endif
Mark Andrews's avatar
Mark Andrews committed
52

Danny Mayer's avatar
Danny Mayer committed
53
/*
54
 * Minimum version is Windows XP
Danny Mayer's avatar
Danny Mayer committed
55
 */
56
#ifndef _WIN32_WINNT
57
#define _WIN32_WINNT 0x0501
58 59 60 61 62 63 64 65 66 67
#endif
#if _WIN32_WINNT < 0x0501
#error Minimum Target environment is Windows XP and Windows Server 2003
#endif
#ifndef NTDDI_VERSION
#define NTDDI_VERSION 0x05010100
#endif
#if NTDDI_VERSION < 0x05010100
#error Minimum Target environment is Windows XP SP1 and Windows Server 2003
#endif
68

David Lawrence's avatar
David Lawrence committed
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
/* Define if you have the ANSI C header files.  */
#define STDC_HEADERS 1

/* Define if you can safely include both <sys/time.h> and <time.h>.  */
#define TIME_WITH_SYS_TIME 1

/* define on DEC OSF to enable 4.4BSD style sa_len support */
/* #undef _SOCKADDR_LEN */

/* define if your system needs pthread_init() before using pthreads */
/* #undef NEED_PTHREAD_INIT */

/* define if your system has sigwait() */
/* #undef HAVE_SIGWAIT */

/* define on Solaris to get sigwait() to work using pthreads semantics */
/* #undef _POSIX_PTHREAD_SEMANTICS */

/* define if LinuxThreads is in use */
/* #undef HAVE_LINUXTHREADS */

/* define if catgets() is available */
/* #undef HAVE_CATGETS */

/* define if you have the NET_RT_IFLIST sysctl variable. */
#define HAVE_IFLIST_SYSCTL 1

/* define if you need to #define _XPG4_2 before including sys/socket.h */
/* #undef NEED_XPG4_2_BEFORE_SOCKET_H */

/* define if you need to #define _XOPEN_SOURCE_ENTENDED before including
 * sys/socket.h
 */
/* #undef NEED_XSE_BEFORE_SOCKET_H */

/* Define if you have the <fcntl.h> header file.  */
#define HAVE_FCNTL_H 1

/* Define if you have the <sys/sockio.h> header file.  */
#define HAVE_SYS_SOCKIO_H 1

/* Define if you have the <sys/time.h> header file.  */
#define HAVE_SYS_TIME_H 1

/* Define if you have the <unistd.h> header file.  */
#define HAVE_UNISTD_H 1

/* Define if you have the c_r library (-lc_r).  */
/* #undef HAVE_LIBC_R */

/* Define if you have the nsl library (-lnsl).  */
/* #undef HAVE_LIBNSL */

/* Define if you have the pthread library (-lpthread).  */
/* #undef HAVE_LIBPTHREAD */

/* Define if you have the socket library (-lsocket).  */
/* #undef HAVE_LIBSOCKET */

Danny Mayer's avatar
Danny Mayer committed
128 129 130
/* Define if you have h_errno */
#define HAVE_H_ERRNO

Mark Andrews's avatar
win32  
Mark Andrews committed
131 132 133 134 135 136 137 138 139
/* Define if you have RSA_generate_key(). */
#define HAVE_RSA_GENERATE_KEY

/* Define if you have DSA_generate_parameters(). */
#define HAVE_DSA_GENERATE_PARAMETERS

/* Define if you have DH_generate_parameters(). */
#define HAVE_DH_GENERATE_PARAMETERS

Evan Hunt's avatar
Evan Hunt committed
140 141 142 143 144
/* Define if you have getpassphrase in the C library. */
#define HAVE_GETPASSPHRASE

char *getpassphrase(const char *);

145 146 147 148 149 150 151
/*
 * Define to 1 if you want to use the DLZ "dlopen" driver
 * (which has the same name on windows even though it uses
 * LoadLibrary() instead of dlopen()).
 */
#define ISC_DLZ_DLOPEN 1

152
#define WANT_IPV6
153

Danny Mayer's avatar
Danny Mayer committed
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
#define S_IFMT   _S_IFMT         /* file type mask */
#define S_IFDIR  _S_IFDIR        /* directory */
#define S_IFCHR  _S_IFCHR        /* character special */
#define S_IFIFO  _S_IFIFO        /* pipe */
#define S_IFREG  _S_IFREG        /* regular */
#define S_IREAD  _S_IREAD        /* read permission, owner */
#define S_IWRITE _S_IWRITE       /* write permission, owner */
#define S_IEXEC  _S_IEXEC        /* execute/search permission, owner */

#define O_RDONLY        _O_RDONLY
#define O_WRONLY        _O_WRONLY
#define O_RDWR          _O_RDWR
#define O_APPEND        _O_APPEND
#define O_CREAT         _O_CREAT
#define O_TRUNC         _O_TRUNC
#define O_EXCL          _O_EXCL

Danny Mayer's avatar
Danny Mayer committed
171
/* open() under unix allows setting of read/write permissions
Danny Mayer's avatar
Danny Mayer committed
172
 * at the owner, group and other levels.  These don't exist in NT
Automatic Updater's avatar
Automatic Updater committed
173
 * We'll just map them all to the NT equivalent
Danny Mayer's avatar
Danny Mayer committed
174 175 176 177 178 179 180 181 182 183
 */

#define S_IRUSR _S_IREAD	/* Owner read permission */
#define S_IWUSR _S_IWRITE	/* Owner write permission */
#define S_IRGRP _S_IREAD	/* Group read permission */
#define S_IWGRP _S_IWRITE	/* Group write permission */
#define S_IROTH _S_IREAD	/* Other read permission */
#define S_IWOTH _S_IWRITE	/* Other write permission */


David Lawrence's avatar
David Lawrence committed
184 185 186
/*
 * WIN32 specials until some other way of dealing with these is decided.
 */
Danny Mayer's avatar
Danny Mayer committed
187

188
#if _MSC_VER < 1900
Danny Mayer's avatar
Danny Mayer committed
189
#define snprintf _snprintf
190
#endif
191
#if _MSC_VER <= 1400
Danny Mayer's avatar
Danny Mayer committed
192
#define vsnprintf _vsnprintf
193
#endif
Danny Mayer's avatar
Danny Mayer committed
194 195 196 197 198
#define strcasecmp  _stricmp
#define strncasecmp _strnicmp
#define strdup _strdup
#define sopen _sopen
#define isascii __isascii
199
#ifndef _WIN64
Danny Mayer's avatar
Danny Mayer committed
200 201
#define stat _stat
#define fstat _fstat
202 203 204 205
#else
#define stat _stat64
#define fstat _fstat64
#endif
Danny Mayer's avatar
Danny Mayer committed
206 207 208 209
#define fileno _fileno
#define unlink _unlink
#define chdir _chdir
#define mkdir _mkdir
210
#define rmdir _rmdir
Danny Mayer's avatar
Danny Mayer committed
211 212 213
#define getcwd _getcwd
#define utime _utime
#define utimbuf _utimbuf
214
#ifndef _WIN64
215
#define lseek _lseek
216 217 218
#else
#define lseek _lseeki64
#endif
Danny Mayer's avatar
Danny Mayer committed
219

220
/* #define EAFNOSUPPORT EINVAL */
Danny Mayer's avatar
Danny Mayer committed
221 222 223 224 225
#define chmod _chmod
#define getpid _getpid
#define getppid _getpid	/* WARNING!!! For now this gets the same pid */
#define random rand	/* Random number generator */
#define srandom srand	/* Random number generator seeding */
David Lawrence's avatar
David Lawrence committed
226 227 228
/* for the config file */
typedef unsigned int    uid_t;          /* user id */
typedef unsigned int    gid_t;          /* group id */
Danny Mayer's avatar
Danny Mayer committed
229
typedef long pid_t;			/* PID */
230
#ifndef _WIN64
Danny Mayer's avatar
Danny Mayer committed
231 232
typedef int ssize_t;
typedef long off_t;
233 234 235 236 237 238 239
#else
typedef __int64 ssize_t;
#ifndef _AFX
/* BINDInstall defines it with another type but doesn't use it */
typedef __int64 off_t;
#endif
#endif
Danny Mayer's avatar
Danny Mayer committed
240 241

/*
Danny Mayer's avatar
Danny Mayer committed
242
 * Set up the Version Information
Danny Mayer's avatar
Danny Mayer committed
243 244 245
 */
#include <versions.h>

Automatic Updater's avatar
Automatic Updater committed
246
/* We actually are using the CryptAPI and not a device */
Danny Mayer's avatar
Danny Mayer committed
247 248 249 250 251 252
#define PATH_RANDOMDEV		"CryptAPI"

#include <stddef.h>
#include <stdio.h>
#include <stdarg.h>

Danny Mayer's avatar
Danny Mayer committed
253 254 255 256 257 258 259
/*
 * Applications may need to get the configuration path
 */
#ifndef _USRDLL
#include <isc/ntpaths.h>
#endif

Danny Mayer's avatar
Danny Mayer committed
260 261 262 263 264
#define fdopen	_fdopen
#define read	_read
#define open	_open
#define close	_close
#define write	_write
265
#include <io.h>
266
#define isatty	_isatty
Danny Mayer's avatar
Danny Mayer committed
267 268 269 270 271 272 273 274 275 276 277 278

#ifndef _WINSOCKAPI_
#define _WINSOCKAPI_   /* Prevent inclusion of winsock.h in windows.h */
#endif

/*
 * Make the number of available sockets large
 * The number of sockets needed can get large and memory's cheap
 * This must be defined before winsock2.h gets included as the
 * macro is used there.
 */

279
#ifndef FD_SETSIZE
Danny Mayer's avatar
Danny Mayer committed
280
#define FD_SETSIZE 16384
281
#endif
Danny Mayer's avatar
Danny Mayer committed
282
#include <windows.h>
Mark Andrews's avatar
Mark Andrews committed
283 284

/*
285 286 287 288 289 290
 * main() is hooked
 */
#define ISC_MAIN_HOOK 1

/*
 * Configure sensible arguments
Mark Andrews's avatar
Mark Andrews committed
291
 */
292
@CONFIGARGS@
293 294 295 296

/*
 * Define if libxml2 is present
 */
297
@HAVE_LIBXML2@
298

299 300 301 302 303 304 305 306 307
/** define if struct addrinfo exists */
#define HAVE_ADDRINFO

/** define if getaddrinfo() exists */
#define HAVE_GETADDRINFO

/** define if gai_strerror() exists */
#define HAVE_GAISTRERROR

308 309 310 311 312 313 314 315 316
/* return type of gai_strerror */
#define IRS_GAISTRERROR_RETURN_T char *

/* Define to the buffer length type used by getnameinfo(3). */
#define IRS_GETNAMEINFO_BUFLEN_T DWORD

/* Define to the flags type used by getnameinfo(3). */
#define IRS_GETNAMEINFO_FLAGS_T int

317 318 319
/* Define to the sockaddr length type used by getnameinfo(3). */
#define IRS_GETNAMEINFO_SOCKLEN_T socklen_t

320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
/* Define to enable the "filter-aaaa-on-v4" and "filter-aaaa-on-v6" options.
   */
@ALLOW_FILTER_AAAA@

/* Define to enable "rrset-order fixed" syntax. */
@DNS_RDATASET_FIXED@

/* Define to 1 if you have the `EVP_sha256' function. */
@HAVE_EVP_SHA256@

/* Define to 1 if you have the `EVP_sha384' function. */
@HAVE_EVP_SHA384@

/* Define to 1 if you have the `EVP_sha512' function. */
@HAVE_EVP_SHA512@

/* Define if OpenSSL includes DSA support */
@HAVE_OPENSSL_DSA@

/* Define if OpenSSL includes ECDSA support */
@HAVE_OPENSSL_ECDSA@

342
/* Define if your OpenSSL version supports GOST. */
343 344
@HAVE_OPENSSL_GOST@

Evan Hunt's avatar
Evan Hunt committed
345 346 347 348 349 350
/* Define if your PKCS11 provider supports ECDSA. */
@HAVE_PKCS11_ECDSA@

/* Define if your PKCS11 provider supports GOST. */
@HAVE_PKCS11_GOST@

351 352 353
/* Define if GOST private keys are encoded in ASN.1. */
@PREFER_GOSTASN1@

354 355 356 357 358 359
/* Define if your OpenSSL version supports EVP AES */
@HAVE_OPENSSL_EVP_AES@

/* Define if your OpenSSL version supports AES */
@HAVE_OPENSSL_AES@

360 361 362
/* HMAC_*() return ints */
@HMAC_RETURN_INT@

363 364 365 366 367 368 369 370 371
/* Use AES for Source Identity Token generation */
@AES_SIT@

/* Use HMAC-SHA1 for Source Identity Token generation */
@HMAC_SHA1_SIT@

/* Use HMAC-SHA256 for Source Identity Token generation */
@HMAC_SHA256_SIT@

372 373 374 375 376 377 378 379 380 381 382 383 384 385
/* Define to 1 if you have the `readline' function. */
@HAVE_READLINE@

/* Build with GeoIP support */
@HAVE_GEOIP@

/* define if idnkit support is to be included. */
@WITH_IDN@

/* Build with GeoIP City IPv6 support */
@HAVE_GEOIP_CITY_V6@

/* Build with GeoIP Country IPv6 support */
@HAVE_GEOIP_V6@
386 387

/* Define to enable rpz-nsdname rules. */
388
@ENABLE_RPZ_NSDNAME@
389 390

/* Define to enable rpz-nsip rules. */
391 392 393 394 395
@ENABLE_RPZ_NSIP@

/* From enable developer */
@ISC_LIST_CHECKINIT@

396 397 398
/* Large system tuning */
@TUNE_LARGE@

399 400 401 402 403 404 405 406 407 408 409
/*
 * Define to nothing if C supports flexible array members, and to 1 if it does
 * not. That way, with a declaration like `struct s { int n; double
 * d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99
 * compilers. When computing the size of such an object, don't use 'sizeof
 * (struct s)' as it overestimates the size. Use 'offsetof (struct s, d)'
 * instead. Don't use 'offsetof (struct s, d[0])', as this doesn't work with
 * MSVC and with C++ compilers.
 */
#define FLEXIBLE_ARRAY_MEMBER /**/

410 411 412 413
/* Avoid warnings with strlen() */
#ifdef _WIN64
#define strlen(x)	(unsigned int) strlen(x)
#endif
414 415 416

/* Get SRCID */
#include "srcid.h"