Minor doc nits re bug 1262.
[users/jgh/exim.git] / src / src / macros.h
index 00f9f8eb275701b796983cc0014abd835a055a63..cec4733f65ffc1c557fd1bef9f0dfacb59ec6d77 100644 (file)
@@ -1,10 +1,8 @@
-/* $Cambridge: exim/src/src/macros.h,v 1.34 2007/06/19 14:41:31 ph10 Exp $ */
-
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1995 - 2007 */
+/* Copyright (c) University of Cambridge 1995 - 2012 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 
 /* See the file NOTICE for conditions of use and distribution. */
 
 
@@ -15,6 +13,12 @@ a string as a text string. This is sometimes useful for debugging output. */
 #define mac_expanded_string(s) mac_string(s)
 
 
 #define mac_expanded_string(s) mac_string(s)
 
 
+/* When running in the test harness, the load average is fudged. */
+
+#define OS_GETLOADAVG() \
+  (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
 manipulate them. */
 
 /* The address_item structure has a word full of 1-bit flags. These macros
 manipulate them. */
 
@@ -68,11 +72,16 @@ as unsigned. */
   ((uschar)(c) > 127 && print_topbitchars))
 
 
   ((uschar)(c) > 127 && print_topbitchars))
 
 
+/* Convenience for testing strings */
+
+#define streqic(Foo, Bar) (strcmpic(Foo, Bar) == 0)
+
+
 /* When built with TLS support, the act of flushing SMTP output becomes
 a no-op once an SSL session is in progress. */
 
 #ifdef SUPPORT_TLS
 /* When built with TLS support, the act of flushing SMTP output becomes
 a no-op once an SSL session is in progress. */
 
 #ifdef SUPPORT_TLS
-#define mac_smtp_fflush() if (tls_active < 0) fflush(smtp_out);
+#define mac_smtp_fflush() if (tls_in.active < 0) fflush(smtp_out);
 #else
 #define mac_smtp_fflush() fflush(smtp_out);
 #endif
 #else
 #define mac_smtp_fflush() fflush(smtp_out);
 #endif
@@ -90,7 +99,7 @@ don't make the file descriptors two-way. */
 
 /* A macro to simplify testing bits in lookup types */
 
 
 /* A macro to simplify testing bits in lookup types */
 
-#define mac_islookup(a,b) ((lookup_list[a].type & (b)) != 0)
+#define mac_islookup(a,b) ((lookup_list[a]->type & (b)) != 0)
 
 /* Debugging control */
 
 
 /* Debugging control */
 
@@ -185,8 +194,9 @@ enum { RESET_NEXT, RESET_ANSWERS, RESET_AUTHORITY, RESET_ADDITIONAL };
 
 /* Argument values for the time-of-day function */
 
 
 /* Argument values for the time-of-day function */
 
-enum { tod_log, tod_log_bare, tod_log_zone, tod_log_datestamp,
-       tod_zone, tod_full, tod_bsdin, tod_mbx, tod_epoch, tod_zulu };
+enum { tod_log, tod_log_bare, tod_log_zone, tod_log_datestamp_daily,
+       tod_log_datestamp_monthly, tod_zone, tod_full, tod_bsdin,
+       tod_mbx, tod_epoch, tod_epoch_l, tod_zulu };
 
 /* For identifying types of driver */
 
 
 /* For identifying types of driver */
 
@@ -397,7 +407,8 @@ set all the bits in a multi-word selector. */
 #define LX_tls_certificate_verified    0x80100000
 #define LX_tls_cipher                  0x80200000
 #define LX_tls_peerdn                  0x80400000
 #define LX_tls_certificate_verified    0x80100000
 #define LX_tls_cipher                  0x80200000
 #define LX_tls_peerdn                  0x80400000
-#define LX_unknown_in_list             0x80800000
+#define LX_tls_sni                     0x80800000
+#define LX_unknown_in_list             0x81000000
 
 #define L_default     (L_connection_reject        | \
                        L_delay_delivery           | \
 
 #define L_default     (L_connection_reject        | \
                        L_delay_delivery           | \
@@ -413,6 +424,7 @@ set all the bits in a multi-word selector. */
 #define LX_default   ((LX_acl_warn_skipped        | \
                        LX_rejected_header         | \
                        LX_sender_verify_fail      | \
 #define LX_default   ((LX_acl_warn_skipped        | \
                        LX_rejected_header         | \
                        LX_sender_verify_fail      | \
+                       LX_smtp_confirmation       | \
                        LX_tls_cipher) & 0x7fffffff)
 
 /* Private error numbers for delivery failures, set negative so as not
                        LX_tls_cipher) & 0x7fffffff)
 
 /* Private error numbers for delivery failures, set negative so as not
@@ -613,7 +625,9 @@ for booleans that are kept in one bit. */
 #define opt_public  0x200      /* Stored in the main instance block */
 #define opt_set     0x400      /* Option is set */
 #define opt_secure  0x800      /* "hide" prefix used */
 #define opt_public  0x200      /* Stored in the main instance block */
 #define opt_set     0x400      /* Option is set */
 #define opt_secure  0x800      /* "hide" prefix used */
-#define opt_mask    0x0ff
+#define opt_rep_con 0x1000     /* Can be appended to by a repeated line (condition) */
+#define opt_rep_str 0x2000     /* Can be appended to by a repeated line (string) */
+#define opt_mask    0x00ff
 
 /* Verify types when directing and routing */
 
 
 /* Verify types when directing and routing */
 
@@ -693,7 +707,6 @@ local_scan.h */
 #define LOG_MAIN           1      /* Write to the main log */
 #define LOG_PANIC          2      /* Write to the panic log */
 #define LOG_PANIC_DIE      6      /* Write to the panic log and then die */
 #define LOG_MAIN           1      /* Write to the main log */
 #define LOG_PANIC          2      /* Write to the panic log */
 #define LOG_PANIC_DIE      6      /* Write to the panic log and then die */
-#define LOG_PROCESS        8      /* Write to the process log */
 #define LOG_REJECT        16      /* Write to the reject log, with headers */
 #define LOG_SENDER        32      /* Add raw sender to the message */
 #define LOG_RECIPIENTS    64      /* Add raw recipients to the message */
 #define LOG_REJECT        16      /* Write to the reject log, with headers */
 #define LOG_SENDER        32      /* Add raw sender to the message */
 #define LOG_RECIPIENTS    64      /* Add raw recipients to the message */
@@ -701,6 +714,9 @@ local_scan.h */
 #define LOG_CONFIG_FOR  (256+128) /* Add " for" instead of ":\n" */
 #define LOG_CONFIG_IN   (512+128) /* Add " in line x[ of file y]" */
 
 #define LOG_CONFIG_FOR  (256+128) /* Add " for" instead of ":\n" */
 #define LOG_CONFIG_IN   (512+128) /* Add " in line x[ of file y]" */
 
+/* and for debug_bits() logging action control: */
+#define DEBUG_FROM_CONFIG       0x0001
+
 /* SMTP command identifiers for the smtp_connection_had field that records the
 most recent SMTP commands. Must be kept in step with the list of names in
 smtp_in.c that is used for creating the smtp_no_mail logging action. SCH_NONE
 /* SMTP command identifiers for the smtp_connection_had field that records the
 most recent SMTP commands. Must be kept in step with the list of names in
 smtp_in.c that is used for creating the smtp_no_mail logging action. SCH_NONE
@@ -793,6 +809,7 @@ enum { ACL_WHERE_RCPT,       /* Some controls are for RCPT only */
        ACL_WHERE_MAIL,       /* )                                           */
        ACL_WHERE_PREDATA,    /* ) There are several tests for "in message", */
        ACL_WHERE_MIME,       /* ) implemented by <= WHERE_NOTSMTP           */
        ACL_WHERE_MAIL,       /* )                                           */
        ACL_WHERE_PREDATA,    /* ) There are several tests for "in message", */
        ACL_WHERE_MIME,       /* ) implemented by <= WHERE_NOTSMTP           */
+       ACL_WHERE_DKIM,       /* )                                           */
        ACL_WHERE_DATA,       /* )                                           */
        ACL_WHERE_NOTSMTP,    /* )                                           */
 
        ACL_WHERE_DATA,       /* )                                           */
        ACL_WHERE_NOTSMTP,    /* )                                           */
 
@@ -803,9 +820,12 @@ enum { ACL_WHERE_RCPT,       /* Some controls are for RCPT only */
        ACL_WHERE_HELO,
        ACL_WHERE_MAILAUTH,
        ACL_WHERE_NOTSMTP_START,
        ACL_WHERE_HELO,
        ACL_WHERE_MAILAUTH,
        ACL_WHERE_NOTSMTP_START,
+       ACL_WHERE_NOTQUIT,
        ACL_WHERE_QUIT,
        ACL_WHERE_STARTTLS,
        ACL_WHERE_QUIT,
        ACL_WHERE_STARTTLS,
-       ACL_WHERE_VRFY
+       ACL_WHERE_VRFY,
+
+       ACL_WHERE_EXPANSION   /* Currently used by a ${acl:name} expansion */
      };
 
 /* Situations for spool_write_header() */
      };
 
 /* Situations for spool_write_header() */