X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/57cc27852af9019c0c423bcfde0165e698a0ce54..306c6c7751cf6953dc544a607b584a9ca58623ad:/src/src/macros.h diff --git a/src/src/macros.h b/src/src/macros.h index 08f631bbb..65a1a172a 100644 --- a/src/src/macros.h +++ b/src/src/macros.h @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2016 */ +/* Copyright (c) University of Cambridge 1995 - 2017 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -27,20 +27,16 @@ a string as a text string. This is sometimes useful for debugging output. */ (running_in_test_harness? (test_harness_load_avg += 10) : os_getloadavg()) -/* The address_item structure has a word full of 1-bit flags. These macros +/* The address_item structure has a struct full of 1-bit flags. These macros manipulate them. */ -#define setflag(addr,flag) addr->flags |= (flag) -#define clearflag(addr,flag) addr->flags &= ~(flag) +#define setflag(addr, flagname) addr->flags.flagname = TRUE +#define clearflag(addr, flagname) addr->flags.flagname = FALSE -#define testflag(addr,flag) ((addr->flags & (flag)) != 0) -#define testflagsall(addr,flag) ((addr->flags & (flag)) == (flag)) +#define testflag(addr, flagname) (addr->flags.flagname) -#define copyflag(addrnew,addrold,flag) \ - addrnew->flags = (addrnew->flags & ~(flag)) | (addrold->flags & (flag)) - -#define orflag(addrnew,addrold,flag) \ - addrnew->flags |= addrold->flags & (flag) +#define copyflag(addrnew, addrold, flagname) \ + addrnew->flags.flagname = addrold->flags.flagname /* For almost all calls to convert things to printing characters, we want to @@ -111,8 +107,8 @@ don't make the file descriptors two-way. */ /* Debugging control */ -#define DEBUG(x) if ((debug_selector & (x)) != 0) -#define HDEBUG(x) if (host_checking || (debug_selector & (x)) != 0) +#define DEBUG(x) if (debug_selector & (x)) +#define HDEBUG(x) if (host_checking || (debug_selector & (x))) #define PTR_CHK(ptr) \ do { \ @@ -228,9 +224,9 @@ enum { tod_log, tod_log_bare, tod_log_zone, tod_log_datestamp_daily, /* For identifying types of driver */ enum { - DTYPE_NONE, - DTYPE_ROUTER, - DTYPE_TRANSPORT + EXIM_DTYPE_NONE, + EXIM_DTYPE_ROUTER, + EXIM_DTYPE_TRANSPORT }; /* Error numbers for generating error messages when reading a message on the @@ -463,16 +459,20 @@ enum { Li_arguments, Li_deliver_time, Li_delivery_size, + Li_dkim, + Li_dkim_verbose, Li_dnssec, Li_ident_timeout, Li_incoming_interface, Li_incoming_port, + Li_millisec, Li_outgoing_interface, Li_outgoing_port, Li_pid, Li_proxy, Li_queue_time, Li_queue_time_overall, + Li_receive_time, Li_received_sender, Li_received_recipients, Li_rejected_header, @@ -854,6 +854,16 @@ enum { #define topt_no_body 0x040 /* Omit body */ #define topt_escape_headers 0x080 /* Apply escape check to headers */ #define topt_use_bdat 0x100 /* prepend chunks with RFC3030 BDAT header */ +#define topt_output_string 0x200 /* create string rather than write to fd */ +#define topt_continuation 0x400 /* do not reset buffer */ + +/* Options for smtp_write_command */ + +enum { + SCMD_FLUSH = 0, /* write to kernel */ + SCMD_MORE, /* write to kernel, but likely more soon */ + SCMD_BUFFER /* stash in application cmd output buffer */ +}; /* Flags for recipient_block, used in DSN support */ @@ -962,14 +972,14 @@ enum { FILTER_UNSET, FILTER_FORWARD, FILTER_EXIM, FILTER_SIEVE }; /* Codes for ESMTP facilities offered by peer */ -#define PEER_OFFERED_TLS BIT(0) -#define PEER_OFFERED_IGNQ BIT(1) -#define PEER_OFFERED_PRDR BIT(2) -#define PEER_OFFERED_UTF8 BIT(3) -#define PEER_OFFERED_DSN BIT(4) -#define PEER_OFFERED_PIPE BIT(5) -#define PEER_OFFERED_SIZE BIT(6) -#define PEER_OFFERED_CHUNKING BIT(7) +#define OPTION_TLS BIT(0) +#define OPTION_IGNQ BIT(1) +#define OPTION_PRDR BIT(2) +#define OPTION_UTF8 BIT(3) +#define OPTION_DSN BIT(4) +#define OPTION_PIPE BIT(5) +#define OPTION_SIZE BIT(6) +#define OPTION_CHUNKING BIT(7) /* Argument for *_getc */