bind9/config.h.win32
Ondřej Surý e493e04c0f Refactor TLSDNS module to work with libuv/ssl directly
* Following the example set in 634bdfb16d, the tlsdns netmgr
  module now uses libuv and SSL primitives directly, rather than
  opening a TLS socket which opens a TCP socket, as the previous
  model was difficult to debug.  Closes #2335.

* Remove the netmgr tls layer (we will have to re-add it for DoH)

* Add isc_tls API to wrap the OpenSSL SSL_CTX object into libisc
  library; move the OpenSSL initialization/deinitialization from dstapi
  needed for OpenSSL 1.0.x to the isc_tls_{initialize,destroy}()

* Add couple of new shims needed for OpenSSL 1.0.x

* When LibreSSL is used, require at least version 2.7.0 that
  has the best OpenSSL 1.1.x compatibility and auto init/deinit

* Enforce OpenSSL 1.1.x usage on Windows

* Added a TLSDNS unit test and implemented a simple TLSDNS echo
  server and client.
2021-01-25 09:19:22 +01:00

410 lines
10 KiB
C

/*
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*/
/*
* win32 configuration file
* All definitions, declarations, macros and includes are
* specific to the requirements of the Windows NT and Windows 2000
* platforms
*/
/* 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
/* Define to `unsigned int/__int64' if <sys/types.h> doesn't define. */
/* #undef size_t */
/*
* ANSI C compliance enabled
*/
#define __STDC__ 1
/*
* Silence compiler warnings about using strcpy and friends.
*/
#define _CRT_SECURE_NO_DEPRECATE 1
/*
* Use 32 bit time.
*/
#ifndef _WIN64
#define _USE_32BIT_TIME_T 1
#endif
/*
* Minimum version is Windows 8 and Windows Server 2012
*/
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0602
#endif
#if _WIN32_WINNT < 0x0602
#error Minimum Target environment is Windows 8 and Windows Server 2012
#endif
#ifndef NTDDI_VERSION
#define NTDDI_VERSION 0x06020000
#endif
#if NTDDI_VERSION < 0x06020000
#error Minimum Target environment is Windows 8 and Windows Server 2012
#endif
#if _MSC_VER <= 1910
#error Minimum Visual Studio version is 2017 or higher
#endif
/* Setup package versions */
@PACKAGE_VERSION_MAJOR@
@PACKAGE_VERSION_MINOR@
@PACKAGE_VERSION_PATCH@
@PACKAGE_VERSION_EXTRA@
@PACKAGE_VERSION@
@PACKAGE_NAME@
@PACKAGE_DESCRIPTION@
@PACKAGE_SRCID@
@PACKAGE_CONFIGARGS@
@PACKAGE_BUILDER@
@PACKAGE_STRING@
@MAPAPI@
/* 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 has sigwait() */
/* #undef HAVE_SIGWAIT */
/* define on Solaris to get sigwait() to work using pthreads semantics */
/* #undef _POSIX_PTHREAD_SEMANTICS */
/* 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 */
/* Define if you have h_errno */
#define HAVE_H_ERRNO
/* Define if you have getpassphrase in the C library. */
#define HAVE_GETPASSPHRASE
char *getpassphrase(const char *);
#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
/* open() under unix allows setting of read/write permissions
* at the owner, group and other levels. These don't exist in NT
* We'll just map them all to the NT equivalent
*/
#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 */
/*
* WIN32 specials until some other way of dealing with these is decided.
*/
#if _MSC_VER < 1900
#define snprintf _snprintf
#endif
#if _MSC_VER < 1800
#error Use Visual Studio 2013 or later for %zu support.
#endif
#if _MSC_VER <= 1400
#define vsnprintf _vsnprintf
#endif
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
#define strdup _strdup
#define sopen _sopen
#define isascii __isascii
#ifndef _WIN64
#define stat _stat
#define fstat _fstat
#else
#define stat _stat64
#define fstat _fstat64
#endif
#define fileno _fileno
#define unlink _unlink
#define chdir _chdir
#define mkdir _mkdir
#define rmdir _rmdir
#define getcwd _getcwd
#define utime _utime
#define utimbuf _utimbuf
#ifndef _WIN64
#define lseek _lseek
#else
#define lseek _lseeki64
#endif
/* #define EAFNOSUPPORT EINVAL */
#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 */
/* for the config file */
typedef unsigned int uid_t; /* user id */
typedef unsigned int gid_t; /* group id */
typedef long pid_t; /* PID */
#ifndef _WIN64
typedef int ssize_t;
typedef long off_t;
#else
typedef __int64 ssize_t;
#ifndef _AFX
/* BINDInstall defines it with another type but doesn't use it */
typedef __int64 off_t;
#endif
#endif
/*
* Set up the Version Information
*/
#include <stddef.h>
#include <stdio.h>
#include <stdarg.h>
/*
* Applications may need to get the configuration path
*/
#ifndef _USRDLL
#include <isc/ntpaths.h>
#endif
#define fdopen _fdopen
#define read _read
#define open _open
#define close _close
#define write _write
#include <io.h>
#define isatty _isatty
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1 /* Prevent inclusion of winsock.h in windows.h */
#endif /* WIN32_LEAN_AND_MEAN */
/*
* 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.
*/
#ifndef FD_SETSIZE
#define FD_SETSIZE 16384
#endif
#include <windows.h>
/*
* main() is hooked
*/
#define ISC_MAIN_HOOK 1
/*
* Configure sensible arguments
*/
@PACKAGE_CONFIGARGS@
/*
* Define if libxml2 is present
*/
@HAVE_LIBXML2@
/* Define to enable "rrset-order fixed" syntax. */
@DNS_RDATASET_FIXED@
/* Define if OpenSSL includes Ed25519 support */
#define HAVE_OPENSSL_ED25519 1
/* Define if OpenSSL includes Ed448 support */
#define HAVE_OPENSSL_ED448 1
/* Define if your OpenSSL version supports DH functions. */
#define HAVE_DH_GET0_KEY 1
/* Define if your OpenSSL version supports ECDSA functions. */
#define HAVE_ECDSA_SIG_GET0 1
/* Define if your OpenSSL version supports RSA functions. */
#define HAVE_RSA_SET0_KEY 1
/* define if OpenSSL is used for Public-Key Cryptography */
@USE_OPENSSL@
/* Define if native PKCS#11 is used as cryptographic library provider */
@USE_PKCS11@
/* Define to 1 if you have the `readline' function. */
@HAVE_READLINE@
/* Build with GeoIP2 support */
@HAVE_GEOIP2@
/* define if idnkit support is to be included. */
@WITH_IDN@
/* Define if zlib was found */
@HAVE_ZLIB@
/* From enable developer */
@ISC_LIST_CHECKINIT@
/* Large system tuning */
@TUNE_LARGE@
/* define if we can use backtrace */
@USE_BACKTRACE@
/* the default value of dnssec-validation option */
@VALIDATION_DEFAULT@
/* Verbose query trace logging */
@WANT_QUERYTRACE@
/* Define to 1 if you have the `CRYPTO_zalloc' function. */
#define HAVE_CRYPTO_ZALLOC 1
/* Define to 1 if you have the `EVP_CIPHER_CTX_free' function. */
#define HAVE_EVP_CIPHER_CTX_FREE 1
/* Define to 1 if you have the `EVP_CIPHER_CTX_new' function. */
#define HAVE_EVP_CIPHER_CTX_NEW 1
/* Define to 1 if you have the `EVP_MD_CTX_free' function. */
#define HAVE_EVP_MD_CTX_FREE 1
/* Define to 1 if you have the `EVP_MD_CTX_new' function. */
#define HAVE_EVP_MD_CTX_NEW 1
/* Define to 1 if you have the `EVP_MD_CTX_reset' function. */
#define HAVE_EVP_MD_CTX_RESET 1
/* Define to 1 if you have the `HMAC_CTX_free' function. */
#define HAVE_HMAC_CTX_FREE 1
/* Define to 1 if you have the `HMAC_CTX_get_md' function. */
#define HAVE_HMAC_CTX_GET_MD 1
/* Define to 1 if you have the `HMAC_CTX_new' function. */
#define HAVE_HMAC_CTX_NEW 1
/* Define to 1 if you have the `HMAC_CTX_reset' function. */
#define HAVE_HMAC_CTX_RESET 1
/* Define to 1 if you have the `SSL_read_ex' function. */
#define HAVE_SSL_READ_EX 1
/* Define to 1 if you have the `SSL_peek_ex' function. */
#define HAVE_SSL_PEEK_EX 1
/* Define to 1 if you have the `SSL_write_ex' function. */
#define HAVE_SSL_WRITE_EX 1
/* Define to 1 if you have the `BIO_read_ex' function. */
#define HAVE_BIO_READ_EX 1
/* Define to 1 if you have the `BIO_write_ex' function. */
#define HAVE_BIO_WRITE_EX 1
/* Define to 1 if you have the `OPENSSL_init_crypto' function. */
#define HAVE_OPENSSL_INIT_CRYPTO 1
/* Define to 1 if you have the `OPENSSL_init_ssl' function. */
#define HAVE_OPENSSL_INIT_SSL 1
/* Define to 1 if you have the `TLS_client_method' function. */
#define HAVE_TLS_CLIENT_METHOD 1
/* Define to 1 if you have the `TLS_server_method' function. */
#define HAVE_TLS_SERVER_METHOD 1
/* Define to 1 if you have the `SSL_CTX_up_ref' function. */
#define SSL_CTX_UP_REF 1
/* Define to 1 if you have the `uv_handle_get_data' function. */
@HAVE_UV_HANDLE_GET_DATA@
/* Define to 1 if you have the `uv_handle_set_data' function. */
@HAVE_UV_HANDLE_SET_DATA@
/* Define to 1 if you have the `uv_import' function. */
@HAVE_UV_IMPORT@
/* GSSAPI Related defines */
@HAVE_GSSAPI@
@HAVE_GSSAPI_H@
@HAVE_GSSAPI_GSSAPI_H@
@HAVE_GSSAPI_KRB5_H@
@HAVE_GSSAPI_GSSAPI_KRB5_H@
@HAVE_KRB5_H@
@HAVE_KRB5_KRB5_H@
/* Avoid warnings with strlen() */
#ifdef _WIN64
#define strlen(x) (unsigned int) strlen(x)
#endif
/* Hey Emacs, this is -*- c -*- file! */