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 #pragma ident	"%Z%%M%	%I%	%E% SMI"
14 
15 /*
16 **  MILTER.H -- Global definitions for mail filter.
17 */
18 
19 #ifndef _LIBMILTER_MILTER_H
20 # define _LIBMILTER_MILTER_H	1
21 
22 #include "sendmail.h"
23 #include "libmilter/mfapi.h"
24 
25 /* socket and thread portability */
26 # include <pthread.h>
27 typedef pthread_t	sthread_t;
28 typedef int		socket_t;
29 
30 # define MAX_MACROS_ENTRIES	5	/* max size of macro pointer array */
31 
32 /*
33 **  context for milter
34 **  implementation hint:
35 **  macros are stored in mac_buf[] as sequence of:
36 **  macro_name \0 macro_value
37 **  (just as read from the MTA)
38 **  mac_ptr is a list of pointers into mac_buf to the beginning of each
39 **  entry, i.e., macro_name, macro_value, ...
40 */
41 
42 struct smfi_str
43 {
44 	sthread_t	ctx_id;		/* thread id */
45 	socket_t	ctx_sd;		/* socket descriptor */
46 	int		ctx_dbg;	/* debug level */
47 	time_t		ctx_timeout;	/* timeout */
48 	int		ctx_state;	/* state */
49 	smfiDesc_ptr	ctx_smfi;	/* filter description */
50 	unsigned long	ctx_pflags;	/* protocol flags */
51 	char		**ctx_mac_ptr[MAX_MACROS_ENTRIES];
52 	char		*ctx_mac_buf[MAX_MACROS_ENTRIES];
53 	char		*ctx_reply;	/* reply code */
54 	void		*ctx_privdata;	/* private data */
55 };
56 
57 #endif /* ! _LIBMILTER_MILTER_H */
58