TLS: variables $tls_(in,out)_tlsver
[exim.git] / src / src / structs.h
index 20db0e5f45e5680166a97aaff080291808370026..1d867c5b65c36fa5b5e3c91289c4494f0a2d9ec2 100644 (file)
@@ -333,6 +333,7 @@ typedef struct router_instance {
   BOOL    retry_use_local_part;   /* Just what it says */
   BOOL    same_domain_copy_routing; /* TRUE => copy routing for same domain */
   BOOL    self_rewrite;           /* TRUE to rewrite headers if making local */
+  uschar *set;                   /* Variable = value to set; list */
   BOOL    suffix_optional;        /* As it says */
   BOOL    verify_only;            /* Skip this router if not verifying */
   BOOL    verify_recipient;       /* Use this router when verifying a recipient*/
@@ -444,6 +445,7 @@ typedef struct ip_address_item {
   int    port;
   BOOL   v6_include_v4;            /* Used in the daemon */
   uschar address[46];
+  uschar * log;                           /* portion of "listening on" log line */
 } ip_address_item;
 
 /* Structure for chaining together arbitrary strings. */
@@ -509,16 +511,17 @@ typedef struct address_item_propagated {
   uschar *errors_address;         /* where to send errors (NULL => sender) */
   header_line *extra_headers;     /* additional headers */
   uschar *remove_headers;         /* list of those to remove */
+  void   *variables;             /* router-vasriables */
 
-  #ifdef EXPERIMENTAL_SRS
+#ifdef EXPERIMENTAL_SRS
   uschar *srs_sender;             /* Change return path when delivering */
-  #endif
+#endif
   BOOL    ignore_error:1;        /* ignore delivery error */
-  #ifdef SUPPORT_I18N
+#ifdef SUPPORT_I18N
   BOOL    utf8_msg:1;            /* requires SMTPUTF8 processing */
   BOOL   utf8_downcvt:1;         /* mandatory downconvert on delivery */
   BOOL   utf8_downcvt_maybe:1;   /* optional downconvert on delivery */
-  #endif
+#endif
 } address_item_propagated;
 
 
@@ -566,7 +569,8 @@ typedef struct address_item {
   uschar *self_hostname;          /* after self=pass */
   uschar *shadow_message;         /* info about shadow transporting */
 
-#ifdef SUPPORT_TLS
+#ifndef DISABLE_TLS
+  const uschar *tlsver;           /* version used for transport */
   uschar *cipher;                 /* Cipher used for transport */
   void   *ourcert;                /* Certificate offered to peer, binary */
   void   *peercert;               /* Certificate from peer, binary */
@@ -622,7 +626,7 @@ typedef struct address_item {
     BOOL af_tcp_fastopen:1;            /* delivery usefully used TCP Fast Open */
     BOOL af_tcp_fastopen_data:1;       /* delivery sent SMTP commands on TCP Fast Open */
     BOOL af_pipelining:1;              /* delivery used (traditional) pipelining */
-#ifdef EXPERIMENTAL_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     BOOL af_early_pipe:1;              /* delivery used connect-time pipelining */
 #endif
 #ifndef DISABLE_PRDR
@@ -635,6 +639,9 @@ typedef struct address_item {
 #endif
 #ifdef SUPPORT_I18N
     BOOL af_utf8_downcvt:1;            /* downconvert was done for delivery */
+#endif
+#ifdef EXPERIMENTAL_TLS_RESUME
+    BOOL af_tls_resume:1;              /* TLS used a resumed session */
 #endif
   } flags;
 
@@ -722,7 +729,11 @@ for the lookups cache */
 
 typedef struct expiring_data {
   time_t expiry;                 /* if nonzero, data invalid after this time */
-  void   *ptr;                   /* pointer to data */
+  union
+    {
+    void  *ptr;                   /* pointer to data */
+    int val;                      /* or integer data */
+    } data;
 } expiring_data;
 
 /* Structure for holding the handle and the cached last lookup for searches.
@@ -800,6 +811,11 @@ typedef struct {
   host_item *           host;
   int                   host_af;
   uschar *              interface;
+
+#ifdef SUPPORT_DANE
+  BOOL dane:1;                 /* connection must do dane */
+  dns_answer           tlsa_dnsa;      /* strictly, this should use tainted mem */
+#endif
 } smtp_connect_args;
 
 /* A client-initiated connection. If TLS, the second element is non-NULL */
@@ -878,19 +894,21 @@ typedef struct namedlist_block {
 /* Structures for Access Control Lists */
 
 typedef struct acl_condition_block {
-  struct acl_condition_block *next;
-  uschar *arg;
-  int type;
+  struct acl_condition_block * next;
+  uschar *                     arg;
+  int                          type;
   union {
-    BOOL negated;
-    uschar *varname;
+    BOOL       negated;
+    uschar *   varname;
   } u;
 } acl_condition_block;
 
 typedef struct acl_block {
-  struct acl_block *next;
-  acl_condition_block *condition;
-  int verb;
+  struct acl_block *   next;
+  acl_condition_block *        condition;
+  int                  verb;
+  int                  srcline;
+  const uschar *       srcfile;
 } acl_block;
 
 /* smtp transport calc outbound_ip */