X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/885ccd3e0a1d03cd3139fba86edb62dc11617810..d502442ac32f8964f6cf86469869cecb035d12c0:/src/src/exim.h diff --git a/src/src/exim.h b/src/src/exim.h index 85571f62f..b824b48f3 100644 --- a/src/src/exim.h +++ b/src/src/exim.h @@ -1,10 +1,8 @@ -/* $Cambridge: exim/src/src/exim.h,v 1.17 2005/06/29 10:56:35 ph10 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2005 */ +/* Copyright (c) University of Cambridge 1995 - 2014 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -17,6 +15,18 @@ most of these includes. */ #define HAVE_STATFS +/* Similarly, assume most systems have srandom() unless os.h undefines it. +This call dates back at least as far as SUSv2. */ + +#define HAVE_SRANDOM + +/* This is primarily for the Gnu C library; we define it before os.h so that +os.h has a chance to hurriedly undef it, Just In Case. We need C99 for some +64-bit math support, and defining _ISOC99_SOURCE breaks and friends. +*/ + +#define _GNU_SOURCE 1 + /* First of all include the os-specific header, which might set things that are needed by any of the other headers, including system headers. */ @@ -45,6 +55,11 @@ making unique names. */ #define LOCALHOST_MAX 10 #endif +/* If not overridden by os.h, dynamic libraries have filenames ending .so */ +#ifndef DYNLIB_FN_EXT +# define DYNLIB_FN_EXT "so" +#endif + /* ANSI C standard includes */ #include @@ -69,16 +84,37 @@ making unique names. */ #include #endif +/* C99 integer types, figure out how to undo this if needed for older systems */ + +#include + /* Just in case some aged system doesn't define them... */ #ifndef INT_MAX #define INT_MAX 2147483647 #endif +#ifndef INT_MIN +#define INT_MIN (-INT_MAX - 1) +#endif + +#ifndef SHRT_MAX +#define SHRT_MAX 32767 +#endif + #ifndef UCHAR_MAX #define UCHAR_MAX 255 #endif + +/* To match int_eximarith_t. Define in OS/os.h- to override. */ +#ifndef EXIM_ARITH_MAX +# define EXIM_ARITH_MAX ((int_eximarith_t)9223372036854775807LL) +#endif +#ifndef EXIM_ARITH_MIN +# define EXIM_ARITH_MIN (-EXIM_ARITH_MAX - 1) +#endif + /* Some systems have PATH_MAX and some have MAX_PATH_LEN. */ #ifndef PATH_MAX @@ -279,6 +315,18 @@ header files. I don't suppose they have T_SRV either. */ #define T_SRV 33 #endif +/* Many systems do not have T_SPF. */ + +#ifndef T_SPF +#define T_SPF 99 +#endif + +/* New TLSA record for DANE */ +#ifndef T_TLSA +#define T_TLSA 52 +#endif +#define MAX_TLSA_EXPANDED_SIZE 8192 + /* It seems that some versions of arpa/nameser.h don't define *any* of the T_xxx macros, which seem to be non-standard nowadays. Just to be on the safe side, put in definitions for all the ones that Exim uses. */ @@ -321,6 +369,7 @@ side, put in definitions for all the ones that Exim uses. */ #define T_ZNS (-1) #define T_MXH (-2) #define T_CSA (-3) +#define T_APL (-4) /* The resolv.h header defines __P(x) on some Solaris 2.5.1 systems (without checking that it is already defined, in fact). This conflicts with other @@ -337,6 +386,17 @@ to undefine it if resolv.h defines it. */ #undef __P #endif +/* If not defined by os.h, we do nothing special to push DNS resolver state +back to be available by the classic resolver routines. Also, provide +prototype for our get routine, unless defined away. */ + +#ifndef os_put_dns_resolver_res +# define os_put_dns_resolver_res(R) do {/**/} while(0) +#endif +#ifndef os_get_dns_resolver_res +res_state os_get_dns_resolver_res(void); +#endif + /* These three are to support the IP option logging code. Linux is different to everyone else and there are also other systems which don't have netinet/ip_var.h, so there's a general macro to control its inclusion. */ @@ -414,12 +474,11 @@ extern int ferror(FILE *); /* The header from the PCRE regex package */ -#include "pcre/pcre.h" +#include /* Exim includes are in several files. Note that local_scan.h #includes -mytypes.h and store.h, so we don't need to mention them explicitly. */ - -#include "config.h" +config.h, mytypes.h, and store.h, so we don't need to mention them explicitly. +*/ #include "local_scan.h" #include "macros.h" @@ -439,8 +498,12 @@ mytypes.h and store.h, so we don't need to mention them explicitly. */ #ifdef EXPERIMENTAL_SRS #include "srs.h" #endif -#ifdef EXPERIMENTAL_DOMAINKEYS -#include "dk.h" +#ifndef DISABLE_DKIM +#include "dkim.h" +#endif +#ifdef EXPERIMENTAL_DMARC +#include "dmarc.h" +#include #endif /* The following stuff must follow the inclusion of config.h because it @@ -450,10 +513,16 @@ requires various things that are set therein. */ #include #endif -#if defined(USE_READLINE) || defined(EXPAND_DLFUNC) +#if defined(USE_READLINE) || defined(EXPAND_DLFUNC) || defined (LOOKUP_MODULE_DIR) #include #endif +#ifdef ENABLE_DISABLE_FSYNC +#define EXIMfsync(f) (disable_fsync? 0 : fsync(f)) +#else +#define EXIMfsync(f) fsync(f) +#endif + /* Backward compatibility; LOOKUP_LSEARCH now includes all three */ #if (!defined LOOKUP_LSEARCH) && (defined LOOKUP_WILDLSEARCH || defined LOOKUP_NWILDLSEARCH) @@ -461,13 +530,15 @@ requires various things that are set therein. */ #endif /* Define a union to hold either an IPv4 or an IPv6 sockaddr structure; this -simplifies some of the coding. */ +simplifies some of the coding. We include the sockaddr to reduce type-punning +issues in C99. */ union sockaddr_46 { struct sockaddr_in v4; #if HAVE_IPV6 struct sockaddr_in6 v6; #endif + struct sockaddr v0; }; /* If SUPPORT_TLS is not defined, ensure that USE_GNUTLS is also not defined @@ -515,5 +586,4 @@ default to EDQUOT if it exists, otherwise ENOSPC. */ #endif #endif - /* End of exim.h */