Merge from vendor branch SENDMAIL:
[dragonfly.git] / contrib / sendmail-8.13.8 / include / libmilter / milter.h
1 /*
2  * Copyright (c) 1999-2003 Sendmail, Inc. and its suppliers.
3  *      All rights reserved.
4  *
5  * By using this file, you agree to the terms and conditions set
6  * forth in the LICENSE file which can be found at the top level of
7  * the sendmail distribution.
8  *
9  *
10  *      $Id: milter.h,v 8.39 2003/12/02 00:21:42 msk Exp $
11  */
12
13 /*
14 **  MILTER.H -- Global definitions for mail filter.
15 */
16
17 #ifndef _LIBMILTER_MILTER_H
18 # define _LIBMILTER_MILTER_H    1
19
20 #include "sendmail.h"
21 #include "libmilter/mfapi.h"
22
23 /* socket and thread portability */
24 # include <pthread.h>
25 typedef pthread_t       sthread_t;
26 typedef int             socket_t;
27
28 # define MAX_MACROS_ENTRIES     5       /* max size of macro pointer array */
29
30 /*
31 **  context for milter
32 **  implementation hint:
33 **  macros are stored in mac_buf[] as sequence of:
34 **  macro_name \0 macro_value
35 **  (just as read from the MTA)
36 **  mac_ptr is a list of pointers into mac_buf to the beginning of each
37 **  entry, i.e., macro_name, macro_value, ...
38 */
39
40 struct smfi_str
41 {
42         sthread_t       ctx_id;         /* thread id */
43         socket_t        ctx_sd;         /* socket descriptor */
44         int             ctx_dbg;        /* debug level */
45         time_t          ctx_timeout;    /* timeout */
46         int             ctx_state;      /* state */
47         smfiDesc_ptr    ctx_smfi;       /* filter description */
48         unsigned long   ctx_pflags;     /* protocol flags */
49         char            **ctx_mac_ptr[MAX_MACROS_ENTRIES];
50         char            *ctx_mac_buf[MAX_MACROS_ENTRIES];
51         char            *ctx_reply;     /* reply code */
52         void            *ctx_privdata;  /* private data */
53 };
54
55 #endif /* ! _LIBMILTER_MILTER_H */