X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/8523533c08c018ac4b750b0e0fab6cfe611e8a49..1a46a8c5c398c91f20c3f4def0ceb448ec8de96a:/src/src/macros.h diff --git a/src/src/macros.h b/src/src/macros.h index da96396f8..86bb84f12 100644 --- a/src/src/macros.h +++ b/src/src/macros.h @@ -1,10 +1,10 @@ -/* $Cambridge: exim/src/src/macros.h,v 1.5 2004/12/16 15:11:47 tom Exp $ */ +/* $Cambridge: exim/src/src/macros.h,v 1.11 2005/03/22 14:11:54 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2004 */ +/* Copyright (c) University of Cambridge 1995 - 2005 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -72,7 +72,7 @@ as unsigned. */ a no-op once an SSL session is in progress. */ #ifdef SUPPORT_TLS -#define mac_smtp_fflush() if (!tls_active) fflush(smtp_out); +#define mac_smtp_fflush() if (tls_active < 0) fflush(smtp_out); #else #define mac_smtp_fflush() fflush(smtp_out); #endif @@ -231,33 +231,35 @@ enum { #define FTEST_NONE 0 /* Not filter testing */ #define FTEST_USER 1 /* Testing user filter */ -#define FTEST_SYSTEM 2 /* Testing system filter */ +#define FTEST_SYSTEM 2 /* Testing system filter */ /* Returns from the routing, transport and authentication functions (not all apply to all of them). Some other functions also use these convenient values, and some additional values are used only by non-driver functions. -OK, FAIL, DEFER, and ERROR are also declared in local_scan.h for use in the -local_scan() function. Do not change them unilaterally. */ +OK, FAIL, DEFER, ERROR, and FAIL_FORCED are also declared in local_scan.h for +use in the local_scan() function and in ${dlfunc loaded functions. Do not +change them unilaterally. */ #define OK 0 /* Successful match */ #define DEFER 1 /* Defer - some problem */ #define FAIL 2 /* Matching failed */ #define ERROR 3 /* Internal or config error */ +#define FAIL_FORCED 4 /* "Forced" failure */ /***********/ -#define DECLINE 4 /* Declined to handle the address, pass to next +#define DECLINE 5 /* Declined to handle the address, pass to next router unless no_more is set */ -#define PASS 5 /* Pass to next driver, or to pass_router, +#define PASS 6 /* Pass to next driver, or to pass_router, even if no_more is set */ -#define DISCARD 6 /* Address routed to :blackhole: or "seen finish" */ -#define SKIP 7 /* Skip this router (used in route_address only) */ -#define REROUTED 8 /* Address was changed and child created*/ -#define PANIC 9 /* Hard failed with internal error */ -#define BAD64 10 /* Bad base64 data (auth) */ -#define UNEXPECTED 11 /* Unexpected initial auth data */ -#define CANCELLED 12 /* Authentication cancelled */ -#define FAIL_SEND 13 /* send() failed in authenticator */ -#define FAIL_DROP 14 /* Fail and drop connection (used in ACL) */ +#define DISCARD 7 /* Address routed to :blackhole: or "seen finish" */ +#define SKIP 8 /* Skip this router (used in route_address only) */ +#define REROUTED 9 /* Address was changed and child created*/ +#define PANIC 10 /* Hard failed with internal error */ +#define BAD64 11 /* Bad base64 data (auth) */ +#define UNEXPECTED 12 /* Unexpected initial auth data */ +#define CANCELLED 13 /* Authentication cancelled */ +#define FAIL_SEND 14 /* send() failed in authenticator */ +#define FAIL_DROP 15 /* Fail and drop connection (used in ACL) */ /* Returns from the deliver_message() function */ @@ -489,15 +491,16 @@ router, which were chosen to represent the standard situation for users' #define RDO_READFILE 0x00001000 /* Forbid "readfile" in exp in filter */ #define RDO_READSOCK 0x00002000 /* Forbid "readsocket" in exp in filter */ #define RDO_RUN 0x00004000 /* Forbid "run" in expansion in filter */ -#define RDO_REALLOG 0x00008000 /* Really do log (not testing/verifying) */ -#define RDO_REWRITE 0x00010000 /* Rewrite generated addresses */ -#define RDO_EXIM_FILTER 0x00020000 /* Forbid Exim filters */ -#define RDO_SIEVE_FILTER 0x00040000 /* Forbid Sieve filters */ +#define RDO_DLFUNC 0x00008000 /* Forbid "dlfunc" in expansion in filter */ +#define RDO_REALLOG 0x00010000 /* Really do log (not testing/verifying) */ +#define RDO_REWRITE 0x00020000 /* Rewrite generated addresses */ +#define RDO_EXIM_FILTER 0x00040000 /* Forbid Exim filters */ +#define RDO_SIEVE_FILTER 0x00080000 /* Forbid Sieve filters */ /* This is the set that apply to expansions in filters */ #define RDO_FILTER_EXPANSIONS \ - (RDO_EXISTS|RDO_LOOKUP|RDO_PERL|RDO_READFILE|RDO_READSOCK|RDO_RUN) + (RDO_EXISTS|RDO_LOOKUP|RDO_PERL|RDO_READFILE|RDO_READSOCK|RDO_RUN|RDO_DLFUNC) /* As well as the RDO bits themselves, we need the bit numbers in order to access (most of) the individual bits as separate options. This could be @@ -505,7 +508,7 @@ automated, but I haven't bothered. Keep this list in step with the above! */ enum { RDON_BLACKHOLE, RDON_DEFER, RDON_EACCES, RDON_ENOTDIR, RDON_EXISTS, RDON_FAIL, RDON_FILTER, RDON_FREEZE, RDON_INCLUDE, RDON_LOG, RDON_LOOKUP, - RDON_PERL, RDON_READFILE, RDON_READSOCK, RDON_RUN, RDON_REALLOG, + RDON_PERL, RDON_READFILE, RDON_READSOCK, RDON_RUN, RDON_DLFUNC, RDON_REALLOG, RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER }; /* Results of filter or forward file processing. Some are only from a filter; @@ -742,18 +745,17 @@ ordered to make it easy to implement tests for certain ACLs when processing order without checking carefully! Furthermore, remember to keep these in step with the tables of names and response codes in globals.c. */ -/* FIXME: the #ifdef below does not work here. Why? */ - enum { ACL_WHERE_RCPT, /* Some controls are for RCPT only */ ACL_WHERE_MAIL, /* ) */ ACL_WHERE_PREDATA, /* ) There are several tests for "in message", */ /* ) implemented by <= WHERE_NOTSMTP */ - /* ) */ -#ifdef WITH_CONTENT_SCAN - ACL_WHERE_MIME, -#endif - ACL_WHERE_DATA, - ACL_WHERE_NOTSMTP, + +/* Remove next line in case of removeing WITH_CONTENT_SCAN. + ACL_WHERE_MIME is defined unconditionally to avoid clutter in acl.c */ + ACL_WHERE_MIME, /* ) */ + + ACL_WHERE_DATA, /* ) */ + ACL_WHERE_NOTSMTP, /* ) */ ACL_WHERE_AUTH, /* These remaining ones are not currently */ ACL_WHERE_CONNECT, /* required to be in a special order so they */