/*
 * Copyright (c) 2004-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: qmgrcnf.h,v 1.30 2007/07/14 16:55:01 ca Exp $
 */

#ifndef SM_QMGRCNF_H
#define SM_QMGRCNF_H 1

#include "sm/generic.h"
#include "sm/magic.h"
#include "sm/qmgrcto.h"
#include "sm/io.h"
#include "sm/sm-conf.h"
#include "sm/logcnfdef.h"
#include "sm/mcpcnfs.h"
#include "sm/edbcnf.h"

/*
**  QMGR Configuration context
**  Note: this file doesn't contain (yet) the default values, which
**  are required for sm_conf_definition_T
*/

typedef struct qmgr_cnf_S	qmgr_cnf_T, *qmgr_cnf_P;
struct qmgr_cnf_S
{
	sm_magic_T	 sm_magic;
	sm_conf_T	*q_cnf_smc;	/* parsed configuration */
	char		*q_cnf_conffile; /* name of configuration file */
	char		*q_cnf_smtpssock;	/* SMTP Server socket */
	const char	*q_cnf_smtpssock_abs;	/* absolute path SMTP Server socket */
	char		*q_cnf_smtpssock_alloc;	/* allocated path for socket */
	char		*q_cnf_smtpcsock;	/* SMTP Client socket */
	const char	*q_cnf_smtpcsock_abs;
	char		*q_cnf_smtpcsock_alloc;
	char		*q_cnf_smarsock;	/* SMAR socket */
	const char	*q_cnf_smarsock_abs;
	char		*q_cnf_smarsock_alloc;
	char		*q_cnf_cdb_base;	/* CDB base directory */
	char		*q_cnf_hostname;
	char		*q_cnf_ctlsock;		/* control socket */
	const char	*q_cnf_ctlsock_abs;	
	char		*q_cnf_ctlsock_alloc;
	char		*q_cnf_confmap_fn;	/* conf map file name */
	char		*q_cnf_confmap_path;	/* conf map full path */
	uint		 q_cnf_wait4srv; /* time to wait for a server */
	uint		 q_cnf_wait4clt; /* time to wait for a client */
	uint		 q_cnf_iqdb_csize; /* IQDB cache size */
	uint		 q_cnf_iqdb_htsize; /* IQDB hash table size */
	uint		 q_cnf_occ_size;	/* OCC hash table size */
	uint		 q_cnf_aq_size;		/* AQ size */
	uint		 q_cnf_optas;	/* max number of open TAs in IBDB */
	uint		 q_cnf_ibdb_delay; /* max time between idbd_commit() */
	uint		 q_cnf_ibdb_size;	/* IBDB size (each file) */
	uint		 q_cnf_min_delay;	/* min delay for retries */
	uint		 q_cnf_max_delay;	/* max delay for retries */

	uint		 q_cnf_tmo_return;	/* max. time in queue */
	uint		 q_cnf_tmo_delay;	/* send warning after this */

	uint		 q_cnf_tmo_ar;	/* max. time in AR */
	uint		 q_cnf_tmo_da;	/* max. time in DA */
	uint		 q_cnf_tmo_sched; /* max time waiting to be scheduled */
	uint		 q_cnf_min_df;	/* minimum free disk space (KB) */
	uint		 q_cnf_ok_df;	/* ok free disk space (KB) */

	uint		 q_cnf_min_thr;
	uint		 q_cnf_max_thr;
	uint		 q_cnf_max_fd;

	char		*q_cnf_pm_add;	/* double bounce address */

/* SMTPC: */
	/* initial number of concurrent connections to the same address */
	uint		 q_cnf_init_conc_conn;

	/* max. number of concurrent connections to the same address */
	uint		 q_cnf_max_conc_conn;

	/* recipients per transaction */
	uint		 q_cnf_smtp_rcpts_ta;
	uint		 q_cnf_lmtp_rcpts_ta;

	uint32_t	 q_cnf_sc_lfl; /* lookup flags */

/* SMTPS: */
	/* max number of open connections from the same address */
	uint		 q_cnf_max_open_se;

	/* max connection rate from the same address */
	uint		 q_cnf_max_conn_rate;

	/* connection cache size (rate limiting etc) */
	uint		 q_cnf_ss_cc_size;

/* scheduler */
	/* max.time for a DSN to wait to be scheduled  */
	uint		 q_cnf_t_sched_dsn;

	/* max.number of "recipients" in a DSN */
	uint		 q_cnf_dsn_rcpts_max;

	uint32_t	 q_cnf_flags; /* configuration flags, see qmgr-int.h */

	uint		 q_cnf_loglevel;
	sm_logspec_T	 q_cnf_log;
#if QMGR_DEBUG
	uint		 q_cnf_debug;
#endif

#if QMGR_TEST
	uint32_t	 q_cnf_tests;
	uint32_t	 q_cnf_tot_tas;
	uint32_t	 q_cnf_once_tas;
	uint		 q_cnf_max_fill_aq;
	uint		 q_cnf_fill_rate;
#endif

	edb_cnf_T	 q_cnf_edb_cnf;

	MCP_STRUCTS(qmgr_cnf_T, q_cnf)
};

void qmgr_prt_cnf(qmgr_cnf_P _qmgr_cnf, sm_file_T *_fp, bool _all);

#endif /* SM_QMGRCNF_H */


syntax highlighted by Code2HTML, v. 0.9.1