1/* MIT License 2 * 3 * Copyright (c) 2004 Daniel Stenberg 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a copy 6 * of this software and associated documentation files (the "Software"), to deal 7 * in the Software without restriction, including without limitation the rights 8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 * copies of the Software, and to permit persons to whom the Software is 10 * furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the next 13 * paragraph) shall be included in all copies or substantial portions of the 14 * Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 * SOFTWARE. 23 * 24 * SPDX-License-Identifier: MIT 25 */ 26#ifndef HEADER_CARES_CONFIG_WIN32_H 27#define HEADER_CARES_CONFIG_WIN32_H 28 29/* ================================================================ */ 30/* c-ares/config-win32.h - Hand crafted config file for Windows */ 31/* ================================================================ */ 32 33/* ---------------------------------------------------------------- */ 34/* HEADER FILES */ 35/* ---------------------------------------------------------------- */ 36 37/* Define if you have the <assert.h> header file. */ 38#define HAVE_ASSERT_H 1 39 40/* Define if you have the <errno.h> header file. */ 41#define HAVE_ERRNO_H 1 42 43/* Define if you have the <getopt.h> header file. */ 44#if defined(__MINGW32__) || defined(__POCC__) 45# define HAVE_GETOPT_H 1 46#endif 47 48/* Define if you have the <limits.h> header file. */ 49#define HAVE_LIMITS_H 1 50 51/* Define if you have the <process.h> header file. */ 52#ifndef __SALFORDC__ 53# define HAVE_PROCESS_H 1 54#endif 55 56/* Define if you have the <signal.h> header file. */ 57#define HAVE_SIGNAL_H 1 58 59/* Define if you have the <sys/time.h> header file */ 60/* #define HAVE_SYS_TIME_H 1 */ 61 62/* Define if you have the <time.h> header file. */ 63#define HAVE_TIME_H 1 64 65/* Define if you have the <unistd.h> header file. */ 66#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \ 67 defined(__POCC__) 68# define HAVE_UNISTD_H 1 69#endif 70 71/* Define if you have the <windows.h> header file. */ 72#define HAVE_WINDOWS_H 1 73 74/* Define if you have the <winsock.h> header file. */ 75#define HAVE_WINSOCK_H 1 76 77/* Define if you have the <winsock2.h> header file. */ 78#ifndef __SALFORDC__ 79# define HAVE_WINSOCK2_H 1 80#endif 81 82/* Define if you have the <ws2tcpip.h> header file. */ 83#ifndef __SALFORDC__ 84# define HAVE_WS2TCPIP_H 1 85#endif 86 87/* Define if you have <iphlpapi.h> header file */ 88#define HAVE_IPHLPAPI_H 1 89 90/* Define if you have <netioapi.h> header file */ 91#ifndef __WATCOMC__ 92# define HAVE_NETIOAPI_H 1 93#endif 94 95#define HAVE_SYS_TYPES_H 1 96#define HAVE_SYS_STAT_H 1 97 98/* If we are building with OpenWatcom, we need to specify that we have 99 * <stdint.h>. */ 100#if defined(__WATCOMC__) 101# define HAVE_STDINT_H 102#endif 103 104/* ---------------------------------------------------------------- */ 105/* OTHER HEADER INFO */ 106/* ---------------------------------------------------------------- */ 107 108/* Define if you have the ANSI C header files. */ 109#define STDC_HEADERS 1 110 111/* ---------------------------------------------------------------- */ 112/* FUNCTIONS */ 113/* ---------------------------------------------------------------- */ 114 115/* Define if you have the closesocket function. */ 116#define HAVE_CLOSESOCKET 1 117 118/* Define if you have the getenv function. */ 119#define HAVE_GETENV 1 120 121/* Define if you have the gethostname function. */ 122#define HAVE_GETHOSTNAME 1 123 124/* Define if you have the ioctlsocket function. */ 125#define HAVE_IOCTLSOCKET 1 126 127/* Define if you have a working ioctlsocket FIONBIO function. */ 128#define HAVE_IOCTLSOCKET_FIONBIO 1 129 130/* Define if you have the strcasecmp function. */ 131/* #define HAVE_STRCASECMP 1 */ 132 133/* Define if you have the strdup function. */ 134#define HAVE_STRDUP 1 135 136/* Define if you have the stricmp function. */ 137#define HAVE_STRICMP 1 138 139/* Define if you have the strncasecmp function. */ 140/* #define HAVE_STRNCASECMP 1 */ 141 142/* Define if you have the strnicmp function. */ 143#define HAVE_STRNICMP 1 144 145/* Define if you have the recv function. */ 146#define HAVE_RECV 1 147 148/* Define to the type of arg 1 for recv. */ 149#define RECV_TYPE_ARG1 SOCKET 150 151/* Define to the type of arg 2 for recv. */ 152#define RECV_TYPE_ARG2 char * 153 154/* Define to the type of arg 3 for recv. */ 155#define RECV_TYPE_ARG3 int 156 157/* Define to the type of arg 4 for recv. */ 158#define RECV_TYPE_ARG4 int 159 160/* Define to the function return type for recv. */ 161#define RECV_TYPE_RETV int 162 163/* Define if you have the recvfrom function. */ 164#define HAVE_RECVFROM 1 165 166/* Define to the type of arg 1 for recvfrom. */ 167#define RECVFROM_TYPE_ARG1 SOCKET 168 169/* Define to the type pointed by arg 2 for recvfrom. */ 170#define RECVFROM_TYPE_ARG2 char 171 172/* Define to the type of arg 3 for recvfrom. */ 173#define RECVFROM_TYPE_ARG3 int 174 175/* Define to the type of arg 4 for recvfrom. */ 176#define RECVFROM_TYPE_ARG4 int 177 178/* Define to the type pointed by arg 5 for recvfrom. */ 179#define RECVFROM_TYPE_ARG5 struct sockaddr 180 181/* Define to the type pointed by arg 6 for recvfrom. */ 182#define RECVFROM_TYPE_ARG6 int 183 184/* Define to the function return type for recvfrom. */ 185#define RECVFROM_TYPE_RETV int 186 187/* Define if you have the send function. */ 188#define HAVE_SEND 1 189 190/* Define to the type of arg 1 for send. */ 191#define SEND_TYPE_ARG1 SOCKET 192 193/* Define to the type qualifier of arg 2 for send. */ 194#define SEND_QUAL_ARG2 const 195 196/* Define to the type of arg 2 for send. */ 197#define SEND_TYPE_ARG2 char * 198 199/* Define to the type of arg 3 for send. */ 200#define SEND_TYPE_ARG3 int 201 202/* Define to the type of arg 4 for send. */ 203#define SEND_TYPE_ARG4 int 204 205/* Define to the function return type for send. */ 206#define SEND_TYPE_RETV int 207 208/* Specifics for the Watt-32 tcp/ip stack. */ 209#ifdef WATT32 210# define SOCKET int 211# define NS_INADDRSZ 4 212# define HAVE_ARPA_NAMESER_H 1 213# define HAVE_ARPA_INET_H 1 214# define HAVE_NETDB_H 1 215# define HAVE_NETINET_IN_H 1 216# define HAVE_SYS_SOCKET_H 1 217# define HAVE_NETINET_TCP_H 1 218# define HAVE_AF_INET6 1 219# define HAVE_PF_INET6 1 220# define HAVE_STRUCT_IN6_ADDR 1 221# define HAVE_STRUCT_SOCKADDR_IN6 1 222# undef HAVE_WINSOCK_H 223# undef HAVE_WINSOCK2_H 224# undef HAVE_WS2TCPIP_H 225#endif 226 227/* Threading support enabled */ 228#define CARES_THREADS 1 229 230/* ---------------------------------------------------------------- */ 231/* TYPEDEF REPLACEMENTS */ 232/* ---------------------------------------------------------------- */ 233 234/* ---------------------------------------------------------------- */ 235/* TYPE SIZES */ 236/* ---------------------------------------------------------------- */ 237 238/* ---------------------------------------------------------------- */ 239/* STRUCT RELATED */ 240/* ---------------------------------------------------------------- */ 241 242/* Define if you have struct addrinfo. */ 243#define HAVE_STRUCT_ADDRINFO 1 244 245/* Define if you have struct sockaddr_storage. */ 246#if !defined(__SALFORDC__) && !defined(__BORLANDC__) 247# define HAVE_STRUCT_SOCKADDR_STORAGE 1 248#endif 249 250/* Define if you have struct timeval. */ 251#define HAVE_STRUCT_TIMEVAL 1 252 253/* ---------------------------------------------------------------- */ 254/* COMPILER SPECIFIC */ 255/* ---------------------------------------------------------------- */ 256 257/* Define to avoid VS2005 complaining about portable C functions. */ 258#if defined(_MSC_VER) && (_MSC_VER >= 1400) 259# define _CRT_SECURE_NO_DEPRECATE 1 260# define _CRT_NONSTDC_NO_DEPRECATE 1 261#endif 262 263/* Set the Target to Win8 */ 264#if defined(_MSC_VER) && (_MSC_VER >= 1500) 265# define MSVC_MIN_TARGET 0x0602 266#endif 267 268/* MSVC default target settings */ 269#if defined(_MSC_VER) && (_MSC_VER >= 1500) 270# ifndef _WIN32_WINNT 271# define _WIN32_WINNT MSVC_MIN_TARGET 272# endif 273# ifndef WINVER 274# define WINVER MSVC_MIN_TARGET 275# endif 276#endif 277 278/* When no build target is specified Pelles C 5.00 and later default build 279 target is Windows Vista. */ 280#if defined(__POCC__) && (__POCC__ >= 500) 281# ifndef _WIN32_WINNT 282# define _WIN32_WINNT 0x0602 283# endif 284# ifndef WINVER 285# define WINVER 0x0602 286# endif 287#endif 288 289/* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is 290 quite convoluted, compiler dependent and even build target dependent. */ 291#if defined(HAVE_WS2TCPIP_H) 292# if defined(__POCC__) 293# define HAVE_FREEADDRINFO 1 294# define HAVE_GETADDRINFO 1 295# define HAVE_GETNAMEINFO 1 296# elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) 297# define HAVE_FREEADDRINFO 1 298# define HAVE_GETADDRINFO 1 299# define HAVE_GETNAMEINFO 1 300# elif defined(_MSC_VER) && (_MSC_VER >= 1200) 301# define HAVE_FREEADDRINFO 1 302# define HAVE_GETADDRINFO 1 303# define HAVE_GETNAMEINFO 1 304# endif 305#endif 306 307#if defined(__POCC__) 308# ifndef _MSC_VER 309# error Microsoft extensions /Ze compiler option is required 310# endif 311# ifndef __POCC__OLDNAMES 312# error Compatibility names /Go compiler option is required 313# endif 314#endif 315 316/* ---------------------------------------------------------------- */ 317/* IPV6 COMPATIBILITY */ 318/* ---------------------------------------------------------------- */ 319 320/* Define if you have address family AF_INET6. */ 321#ifdef HAVE_WINSOCK2_H 322# define HAVE_AF_INET6 1 323#endif 324 325/* Define if you have protocol family PF_INET6. */ 326#ifdef HAVE_WINSOCK2_H 327# define HAVE_PF_INET6 1 328#endif 329 330/* Define if you have struct in6_addr. */ 331#ifdef HAVE_WS2TCPIP_H 332# define HAVE_STRUCT_IN6_ADDR 1 333#endif 334 335/* Define if you have struct sockaddr_in6. */ 336#ifdef HAVE_WS2TCPIP_H 337# define HAVE_STRUCT_SOCKADDR_IN6 1 338#endif 339 340/* Define if you have sockaddr_in6 with scopeid. */ 341#ifdef HAVE_WS2TCPIP_H 342# define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1 343#endif 344 345#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) && !defined(__WATCOMC__) 346/* Define if you have if_nametoindex() */ 347# define HAVE_IF_NAMETOINDEX 1 348/* Define if you have if_indextoname() */ 349# define HAVE_IF_INDEXTONAME 1 350/* Define to 1 if you have the `ConvertInterfaceIndexToLuid' function. */ 351# define HAVE_CONVERTINTERFACEINDEXTOLUID 1 352/* Define to 1 if you have the `ConvertInterfaceLuidToNameA' function. */ 353# define HAVE_CONVERTINTERFACELUIDTONAMEA 1 354#endif 355 356/* ---------------------------------------------------------------- */ 357/* Win CE */ 358/* ---------------------------------------------------------------- */ 359 360/* FIXME: A proper config-win32ce.h should be created to hold these */ 361 362/* 363 * System error codes for Windows CE 364 */ 365 366#if defined(_WIN32_WCE) && !defined(HAVE_ERRNO_H) 367# define ENOENT ERROR_FILE_NOT_FOUND 368# define ESRCH ERROR_PATH_NOT_FOUND 369# define ENOMEM ERROR_NOT_ENOUGH_MEMORY 370# define ENOSPC ERROR_INVALID_PARAMETER 371#endif 372 373#endif /* HEADER_CARES_CONFIG_WIN32_H */ 374