/* * Copyright (c) 2002-2006 Sendmail, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set * forth in the LICENSE file which can be found at the top level of * the sendmail distribution. * * $Id: actdb.h,v 1.55 2006/12/11 01:22:05 ca Exp $ */ #ifndef SM_ACTDB_H #define SM_ACTDB_H 1 #include "sm/generic.h" #include "sm/pthread.h" #include "sm/queue.h" #include "sm/str.h" #include "sm/mta.h" #include "sm/log.h" typedef struct aq_ctx_S aq_ctx_T, *aq_ctx_P; typedef struct aq_mail_S aq_mail_T, *aq_mail_P; typedef struct aq_ta_S aq_ta_T, *aq_ta_P; typedef struct aq_tas_S aq_tas_T, *aq_tas_P; typedef struct aq_dta_S aq_dta_T, *aq_dta_P; typedef struct aq_dtas_S aq_dtas_T, *aq_dtas_P; typedef struct aq_rcpt_S aq_rcpt_T, *aq_rcpt_P; typedef struct aq_rcpts_S aq_rcpts_T, *aq_rcpts_P; typedef struct aq_rsnd_ctx_S aq_rsnd_ctx_T, *aq_rsnd_ctx_P; TAILQ_HEAD(aq_rcpts_S, aq_rcpt_S); /* flags for aq_rcpt_rm() */ #define AQR_RM_LOCK 0x0001 /* lock required */ #define AQR_RM_N_RDQ 0x0002 /* don't try to remove from rdq */ #define AQR_RM_N_WAITQ 0x0004 /* don't try to remove from waitq */ #define AQR_RM_I_RDQ 0x0008 /* ignore result from aq_rdq_rm() */ #define AQR_RM_I_WAITQ 0x0010 /* ignore result from aq_waitq_rm() */ #define AQR_RM_WAITQ_AR 0x0100 /* remove from waitq AR */ #define AQR_RM_WAITQ_DA 0x0200 /* remove from waitq DA */ sm_ret_T aq_rcpt_ss_insert(aq_rcpt_P _aq_rcpt_prev, aq_rcpt_P _aq_rcpt); sm_ret_T aq_rcpt_set_domain(aq_rcpt_P _aq_rcpt, sm_str_P _defaultdomain); sm_ret_T aq_rcpt_eq_domain(aq_rcpt_P _aq_rcpt1, aq_rcpt_P _aq_rcpt2, sm_str_P _defaultdomain); sm_ret_T aq_rcpt_new(aq_rcpt_P *_padb_rcpt); sm_ret_T aq_rcpt_free(aq_rcpt_P _adb_rcpt); sm_ret_T aq_rcpt_rm(aq_ctx_P _adb_ctx, aq_rcpt_P _adb_rcpt, uint _flags); sm_ret_T aq_ta_new(aq_ta_P *_paq_ta); sm_ret_T aq_ta_free(aq_ta_P _aq_ta); sm_ret_T aq_ta_rm(aq_ctx_P _aq, aq_ta_P _aq_ta, bool _lockit); sm_ret_T aq_rcptsent2da(void *_ctx); sm_ret_T aq_raise_limit(aq_ctx_P _aq_ctx, uint _limit, thr_lock_T _locktype); sm_ret_T aq_lower_limit(aq_ctx_P _aq_ctx, uint _limit, thr_lock_T _locktype); sm_ret_T aq_get_limits(aq_ctx_P _aq_ctx, uint *_pentries, uint *_plimit, uint *_pmax_entries, thr_lock_T _locktype); sm_ret_T aq_upd_ta_rcpt_cnts(aq_ta_P _aq_ta, smtp_status_T _oldstatus, smtp_status_T _newstatus, sm_log_ctx_P _lctx); #define AQR_TXT_COMPLETE 1 sm_ret_T aq_rcpt_status2txt(aq_rcpt_P _aq_rcpt, sm_str_P _errmsg); #endif /* SM_ACTDB_H */