/*
 * 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: smarcnf.h,v 1.35 2007/11/14 06:03:08 ca Exp $
 */

#ifndef SMARCNF_H
#define SMARCNF_H	1

#include "sm/generic.h"
#include "sm/net.h"
#include "sm/dnstsk.h"	/* for SM_DNS_MAX_TSKS */
#include "sm/io.h"
#include "sm/sm-conf.h"
#include "sm/logcnfdef.h"
#include "sm/mapcnf.h"
#include "sm/mcpcnfs.h"
#include "sm/greycnf.h"

#ifndef SM_MAX_DNSBL
#define SM_MAX_DNSBL	8	/* max number of dns blocklists */
#endif

/* DNS BL data */
typedef struct smar_cnfdnsbl_S	smar_cnfdnsbl_T, *smar_cnfdnsbl_P;
struct smar_cnfdnsbl_S
{
	char		*scdb_name;	/* domain name of DNS blocklist */
	char		*scdb_tag;	/* tag for lookup in access map */
	/* include trailing ':'? */

#if 0
	/*
	**  Do we need these?
	**  Reject message is listed in access map, tempfail can
	**  be simulated by returning "400" as result and
	**  looking it up in access map.
	*/

	char		*scdb_rejmsg;	/* reject message */
	char		*scdb_tmpmsg;	/* tempfail message */
	uint32_t	 scbd_flags;	/* flags */
#endif /* 0 */
};

/* SMAR configuration context */
typedef struct smar_cnf_S		smar_cnf_T, *smar_cnf_P;
struct smar_cnf_S
{
	sm_magic_T	 sm_magic;
	sm_conf_T	*smar_cnf_smc;		/* parsed configuration */
	char		*smar_cnf_conffile;	/* name of configuration file */
	char		*smar_cnf_sock;		/* SMAR socket */
	const char	*smar_cnf_sock_abs;		/* SMAR socket */
	char		*smar_cnf_hostname;
	char		*smar_cnf_cdb_base;	/* CDB base directory */

	/* put local user map (lum) related data into substructure? */
	char		*smar_cnf_lum_name;
	uint		 smar_cnf_lum_fl;	/* flags */

	char		*smar_cnf_alias_fn;
	char		*smar_cnf_alias_name;
	char		*smar_cnf_alias_path;
	uint		 smar_cnf_alias_fl;	/* aliases flags */
	char		*smar_cnf_mt_fn;
	char		*smar_cnf_mt_name;
	char		*smar_cnf_mt_path;
	uint		 smar_cnf_mt_fl;	/* mailertable flags */
	char		*smar_cnf_access_fn;
	char		*smar_cnf_access_name;
	char		*smar_cnf_access_path;

	/* evthr parameters */
	uint		 smar_cnf_minthr;
	uint		 smar_cnf_maxthr;
	uint		 smar_cnf_maxfd;

	uint		 smar_cnf_loglevel;
	sm_logspec_T	 smar_cnf_log;
	uint		 smar_cnf_dns_timeout;
	char		*smar_cnf_nameservers[SM_DNS_MAX_TSKS];
	uint		 smar_cnf_dns_flags;
	ushort		 smar_cnf_dns_max_tmos;
	ushort		 smar_cnf_dns_retries;
	smar_cnfdnsbl_T	 smar_cnf_dnsbl[SM_MAX_DNSBL];
	uint		 smar_cnf_dnsbl_n;
	map_decl_T	 smar_cnf_mapdecl;

	uchar		*smar_cnf_addr_delim;

	greycnf_T	 smar_cnf_grey;

	MCP_STRUCTS(smar_cnf_T, smar_cnf)
};

void smar_prt_cnf(smar_cnf_P _smar_cnf, sm_file_T *_fp, bool _all);

#endif /* SMARCNF_H */


syntax highlighted by Code2HTML, v. 0.9.1