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 */ 56