X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/bff2d6435aecaf2701ba12c4dd99c7f395953f19..99350dede64ad634300ddf15d0d97a81fd75d330:/src/src/macros.h diff --git a/src/src/macros.h b/src/src/macros.h index 4359e2187..8e2050e22 100644 --- a/src/src/macros.h +++ b/src/src/macros.h @@ -3,6 +3,7 @@ *************************************************/ /* Copyright (c) University of Cambridge 1995 - 2018 */ +/* Copyright (c) The Exim Maintainers 2020 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -40,9 +41,11 @@ manipulate them. */ /* For almost all calls to convert things to printing characters, we want to -allow tabs. A macro just makes life a bit easier. */ +allow tabs & spaces. A macro just makes life a bit easier. */ -#define string_printing(s) string_printing2((s), TRUE) +#define string_printing(s) string_printing2((s), 0) +#define SP_TAB BIT(0) +#define SP_SPACE BIT(1) /* We need a special return code for "no recipients and failed to send an error @@ -110,13 +113,6 @@ don't make the file descriptors two-way. */ #define DEBUG(x) if (debug_selector & (x)) #define HDEBUG(x) if (host_checking || (debug_selector & (x))) -#define PTR_CHK(ptr) \ -do { \ -if ((void *)ptr > (void *)store_get(0)) \ - debug_printf("BUG: ptr '%s' beyond arena at %s:%d\n", \ - mac_expanded_string(ptr), __FUNCTION__, __LINE__); \ -} while(0) - /* The default From: text for DSNs */ #define DEFAULT_DSN_FROM "Mail Delivery System " @@ -125,7 +121,7 @@ if ((void *)ptr > (void *)store_get(0)) \ verifying. This has to be explicit because it is referenced in more than one source module. */ -#define ADDRESS_EXPANSIONS_COUNT 18 +#define ADDRESS_EXPANSIONS_COUNT 19 /* The maximum permitted number of command-line (-D) macro definitions. We need a limit only to make it easier to generate argument vectors for re-exec @@ -144,7 +140,7 @@ changed, then the tables in expand.c for accessing them must be changed too. */ /* The size of the buffer holding the processing information string. */ -#define PROCESS_INFO_SIZE 256 +#define PROCESS_INFO_SIZE 384 /* The size of buffer to get for constructing log entries. Make it big enough to hold all the headers from a normal kind of message. */ @@ -154,17 +150,25 @@ enough to hold all the headers from a normal kind of message. */ /* The size of the circular buffer that remembers recent SMTP commands */ #define SMTP_HBUFF_SIZE 20 +#define SMTP_HBUFF_PREV(n) ((n) ? (n)-1 : SMTP_HBUFF_SIZE-1) /* The initial size of a big buffer for use in various places. It gets put into big_buffer_size and in some circumstances increased. It should be at least as long as the maximum path length. */ -#if defined PATH_MAX && PATH_MAX > 16384 +#ifdef AUTH_HEIMDAL_GSSAPI + /* RFC 4121 section 5.2, SHOULD support 64K input buffers */ +# define __BIG_BUFFER_SIZE 65536 +#else +# define __BIG_BUFFER_SIZE 16384 +#endif + +#if defined PATH_MAX && PATH_MAX > __BIG_BUFFER_SIZE # define BIG_BUFFER_SIZE PATH_MAX -#elif defined MAXPATHLEN && MAXPATHLEN > 16384 +#elif defined MAXPATHLEN && MAXPATHLEN > __BIG_BUFFER_SIZE # define BIG_BUFFER_SIZE MAXPATHLEN #else -# define BIG_BUFFER_SIZE 16384 +# define BIG_BUFFER_SIZE __BIG_BUFFER_SIZE #endif /* header size of pipe content @@ -245,7 +249,7 @@ enum { ERRMESS_TOOMANYRECIP, /* Too many recipients */ ERRMESS_LOCAL_SCAN, /* Rejected by local scan */ ERRMESS_LOCAL_ACL /* Rejected by non-SMTP ACL */ -#ifdef EXPERIMENTAL_DMARC +#ifdef SUPPORT_DMARC ,ERRMESS_DMARC_FORENSIC /* DMARC Forensic Report */ #endif }; @@ -301,6 +305,7 @@ Use rc_names[] for debug strings. */ #define CANCELLED 13 /* Authentication cancelled */ #define FAIL_SEND 14 /* send() failed in authenticator */ #define FAIL_DROP 15 /* Fail and drop connection (used in ACL) */ +#define DANE 16 /* Deferred for domain mismatch (used in transport) */ /* Returns from the deliver_message() function */ @@ -309,7 +314,7 @@ Use rc_names[] for debug strings. */ #define DELIVER_MUA_FAILED 2 /* Failure when mua_wrapper is set */ #define DELIVER_NOT_ATTEMPTED 3 /* Not tried (no msg or is locked */ -/* Returns from DNS lookup functions. */ +/* Returns from DNS lookup functions. Use dns_rc_names[] for debug strings */ enum { DNS_SUCCEED, DNS_NOMATCH, DNS_NODATA, DNS_AGAIN, DNS_FAIL }; @@ -339,7 +344,7 @@ platforms, but this ensures bit vectors always work the same way. */ /* This macro is for single-word bit vectors: the debug selector, and the first word of the log selector. */ -#define BIT(n) (1U << (n)) +#define BIT(n) (1UL << (n)) /* And these are for multi-word vectors. */ #define BITWORD(n) ( (n) / BITWORDSIZE) @@ -370,7 +375,7 @@ Exim's code assumes in a number of places that the debug_selector is one word, and this is exposed in the local_scan ABI. The D_v and D_local_scan bit masks are part of the local_scan API so are #defined in local_scan.h */ -#define DEBUG_BIT(name) Di_##name = IOTA(Di_iota), D_##name = BIT(Di_##name) +#define DEBUG_BIT(name) Di_##name = IOTA(Di_iota), D_##name = (int)BIT(Di_##name) enum { Di_all = -1, @@ -479,6 +484,7 @@ enum logbit { Li_outgoing_port, Li_pid, Li_pipelining, + Li_protocol_detail, Li_proxy, Li_queue_time, Li_queue_time_overall, @@ -557,11 +563,8 @@ table exim_errstrings[] in log.c */ #define ERRNO_DATA4XX (-46) /* DATA gave 4xx error */ #define ERRNO_PROXYFAIL (-47) /* Negotiation failed for proxy configured host */ #define ERRNO_AUTHPROB (-48) /* Authenticator "other" failure */ - -#ifdef SUPPORT_I18N -# define ERRNO_UTF8_FWD (-49) /* target not supporting SMTPUTF8 */ -#endif - /* -50 free for re-use */ +#define ERRNO_UTF8_FWD (-49) /* target not supporting SMTPUTF8 */ +#define ERRNO_HOST_IS_LOCAL (-50) /* Transport refuses to talk to localhost */ /* These must be last, so all retry deferments can easily be identified */ @@ -738,6 +741,7 @@ enum { v_none, v_sender, v_recipient, v_expn }; #define vopt_callout_recippmaster 0x0100 /* use postmaster to verify recip */ #define vopt_callout_hold 0x0200 /* lazy close connection */ #define vopt_success_on_redirect 0x0400 +#define vopt_quota 0x0800 /* quota check, to local/appendfile */ /* Values for fields in callout cache records */ @@ -852,7 +856,7 @@ enum { enum { MSG_DELIVER, MSG_FREEZE, MSG_REMOVE, MSG_THAW, MSG_ADD_RECIPIENT, MSG_MARK_ALL_DELIVERED, MSG_MARK_DELIVERED, MSG_EDIT_SENDER, - MSG_SHOW_COPY, MSG_LOAD, + MSG_SHOW_COPY, MSG_LOAD, MSG_SETQUEUE, /* These ones must be last: a test for >= MSG_SHOW_BODY is used to test for actions that list individual spool files. */ MSG_SHOW_BODY, MSG_SHOW_HEADER, MSG_SHOW_LOG }; @@ -975,7 +979,9 @@ enum { ACL_WHERE_RCPT, /* Some controls are for RCPT only */ #define ACL_BIT_MIME BIT(ACL_WHERE_MIME) #define ACL_BIT_DKIM BIT(ACL_WHERE_DKIM) #define ACL_BIT_DATA BIT(ACL_WHERE_DATA) -#ifndef DISABLE_PRDR +#ifdef DISABLE_PRDR +# define ACL_BIT_PRDR 0 +#else # define ACL_BIT_PRDR BIT(ACL_WHERE_PRDR) #endif #define ACL_BIT_NOTSMTP BIT(ACL_WHERE_NOTSMTP) @@ -993,6 +999,10 @@ enum { ACL_WHERE_RCPT, /* Some controls are for RCPT only */ #define ACL_BIT_DELIVERY BIT(ACL_WHERE_DELIVERY) #define ACL_BIT_UNKNOWN BIT(ACL_WHERE_UNKNOWN) +#define ACL_BITS_HAVEDATA (ACL_BIT_MIME | ACL_BIT_DKIM | ACL_BIT_DATA \ + | ACL_BIT_PRDR \ + | ACL_BIT_NOTSMTP | ACL_BIT_QUIT | ACL_BIT_NOTQUIT) + /* Situations for spool_write_header() */ @@ -1097,4 +1107,14 @@ should not be one active. */ ": 0x18 :session resumed unasked: 0x1A :session resumed unasked" \ ": 0x1C :session resumed: 0x1E :session resumed, also new ticket" +/* Flags for string_vformat */ +#define SVFMT_EXTEND BIT(0) +#define SVFMT_REBUFFER BIT(1) +#define SVFMT_TAINT_NOCHK BIT(2) + + +#define NOTIFIER_SOCKET_NAME "exim_daemon_notify" +#define NOTIFY_MSG_QRUN 1 /* Notify message types */ +#define NOTIFY_QUEUE_SIZE_REQ 2 + /* End of macros.h */