X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/6c512171a8449f14cc284e13aabc0153d9977c43..a7538db17824b7fd70c12ef7561a67b85d6f247e:/src/src/structs.h diff --git a/src/src/structs.h b/src/src/structs.h index cc0e521b7..80c23fb0a 100644 --- a/src/src/structs.h +++ b/src/src/structs.h @@ -1,10 +1,8 @@ -/* $Cambridge: exim/src/src/structs.h,v 1.16 2007/06/18 13:57:50 ph10 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2007 */ +/* Copyright (c) University of Cambridge 1995 - 2014 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -57,6 +55,8 @@ typedef struct ugid_block { but also used when checking lists of hosts and when transporting. Looking up host addresses is done using this structure. */ +typedef enum {DS_UNK=-1, DS_NO, DS_YES} dnssec_status_t; + typedef struct host_item { struct host_item *next; uschar *name; /* Host name */ @@ -67,6 +67,7 @@ typedef struct host_item { int status; /* Usable, unusable, or unknown */ int why; /* Why host is unusable */ int last_try; /* Time of last try if known */ + dnssec_status_t dnssec; } host_item; /* Chain of rewrite rules, read from the rewrite config, or parsed from the @@ -186,6 +187,9 @@ typedef struct transport_instance { BOOL log_fail_output; BOOL log_defer_output; BOOL retry_use_local_part; /* Defaults true for local, false for remote */ +#ifdef EXPERIMENTAL_TPDA + uschar *tpda_event_action; /* String to expand on notable events */ +#endif } transport_instance; @@ -281,6 +285,9 @@ typedef struct router_instance { BOOL verify_sender; /* Use this router when verifying a sender */ BOOL uid_set; /* Flag to indicate uid is set */ BOOL unseen; /* If TRUE carry on, even after success */ +#ifdef EXPERIMENTAL_DSN + BOOL dsn_lasthop; /* If TRUE, this router is a DSN endpoint */ +#endif int self_code; /* Encoded version of "self" */ uid_t uid; /* Fixed uid value */ @@ -322,34 +329,7 @@ typedef struct router_info { /* Structure for holding information about a lookup type. */ -typedef struct lookup_info { - uschar *name; /* e.g. "lsearch" */ - int type; /* query/singlekey/abs-file */ - void *(*open)( /* open function */ - uschar *, /* file name for those that have one */ - uschar **); /* for error message */ - BOOL (*check)( /* file checking function */ - void *, /* handle */ - uschar *, /* file name */ - int, /* modemask for file checking */ - uid_t *, /* owners for file checking */ - gid_t *, /* owngroups for file checking */ - uschar **); /* for error messages */ - int (*find)( /* find function */ - void *, /* handle */ - uschar *, /* file name or NULL */ - uschar *, /* key or query */ - int, /* length of key or query */ - uschar **, /* for returning answer */ - uschar **, /* for error message */ - BOOL *); /* to request cache cleanup */ - void (*close)( /* close function */ - void *); /* handle */ - void (*tidy)(void); /* tidy function */ - uschar *(*quote)( /* quoting function */ - uschar *, /* string to quote */ - uschar *); /* additional data from quote name */ -} lookup_info; +#include "lookupapi.h" /* Structure for holding information about the configured authentication @@ -364,7 +344,8 @@ typedef struct auth_instance { uschar *advertise_condition; /* Are we going to advertise this?*/ uschar *client_condition; /* Should the client try this? */ uschar *public_name; /* Advertised name */ - uschar *set_id; /* String to set as authenticated id */ + uschar *set_id; /* String to set when server as authenticated id */ + uschar *set_client_id; /* String to set when client as client_authenticated id */ uschar *mail_auth_condition; /* Condition for AUTH on MAIL command */ uschar *server_debug_string; /* Debugging output */ uschar *server_condition; /* Authorization condition */ @@ -396,6 +377,8 @@ typedef struct auth_info { int, /* command timeout */ uschar *, /* buffer for reading response */ int); /* sizeof buffer */ + void (*version_report)( /* diagnostic version reporting */ + FILE *); /* I/O stream to print to */ } auth_info; @@ -508,6 +491,10 @@ typedef struct address_item_propagated { #define af_cert_verified 0x01000000 /* delivered with verified TLS cert */ #define af_pass_message 0x02000000 /* pass message in bounces */ #define af_bad_reply 0x04000000 /* filter could not generate autoreply */ +#ifndef DISABLE_PRDR +# define af_prdr_used 0x08000000 /* delivery used SMTP PRDR */ +#endif +#define af_force_command 0x10000000 /* force_command in pipe transport */ /* These flags must be propagated when a child is created */ @@ -559,7 +546,20 @@ typedef struct address_item { #ifdef SUPPORT_TLS uschar *cipher; /* Cipher used for transport */ + void *ourcert; /* Certificate offered to peer, binary */ + void *peercert; /* Certificate from peer, binary */ uschar *peerdn; /* DN of server's certificate */ + int ocsp; /* OCSP status of peer cert */ + #endif + + uschar *authenticator; /* auth driver name used by transport */ + uschar *auth_id; /* auth "login" name used by transport */ + uschar *auth_sndr; /* AUTH arg to SMTP MAIL, used by transport */ + + #ifdef EXPERIMENTAL_DSN + uschar *dsn_orcpt; /* DSN orcpt value */ + int dsn_flags; /* DSN flags */ + int dsn_aware; /* DSN aware flag */ #endif uid_t uid; /* uid for transporting */