/*
 * Copyright (c) 2004, 2005 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: logcnfdef.h,v 1.10 2007/05/01 04:18:32 ca Exp $
 */

#ifndef SM_LOGCNFDEF_H
#define SM_LOGCNFDEF_H 1

#include "sm/generic.h"
#include "sm/syslog.h"
#include "sm/sm-conf.h"

#if SM_CONF_LOG_DEF
#define EXTERN
#else
#define EXTERN extern
#endif

typedef struct sm_logspec_S sm_logspec_T, *sm_logspec_P;
struct sm_logspec_S
{
	int	 sm_logspc_opt;
	int	 sm_logspc_facility;
	char	*sm_logspc_ident;
};

EXTERN
sm_conf_definition_T const sm_log_opts[]
#if SM_CONF_LOG_DEF
=
{
#ifdef LOG_CONS
	{ SM_CONF_DEF_MAGIC,
	"cons",		sm_conf_type_choice_value,	LOG_CONS,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_NDELAY
	{ SM_CONF_DEF_MAGIC,
	"ndelay",	sm_conf_type_choice_value,	LOG_NDELAY,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_PERROR
	{ SM_CONF_DEF_MAGIC,
	"perror",	sm_conf_type_choice_value,	LOG_PERROR,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_PID
	{ SM_CONF_DEF_MAGIC,
	"pid",		sm_conf_type_choice_value,	LOG_PID,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif

	/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0)}
}
#endif /* SM_CONF_LOG_DEF */
;

/*
created by: lines like this (from syslog.h):
LOG_...
apply:
:'a,.s/LOG_\(.*\)$/#ifdef &
	{ SM_CONF_DEF_MAGIC,
	"\1",	sm_conf_type_choice_value,		&	},
#endif/
*/

EXTERN
sm_conf_definition_T const sm_log_facilities[]
#if SM_CONF_LOG_DEF
=
{
#ifdef LOG_USER
	{ SM_CONF_DEF_MAGIC,
	"USER",	sm_conf_type_choice_value,		LOG_USER,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_MAIL
	{ SM_CONF_DEF_MAGIC,
	"MAIL",	sm_conf_type_choice_value,		LOG_MAIL,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_DAEMON
	{ SM_CONF_DEF_MAGIC,
	"DAEMON",	sm_conf_type_choice_value,	LOG_DAEMON,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_AUTH
	{ SM_CONF_DEF_MAGIC,
	"AUTH",	sm_conf_type_choice_value,		LOG_AUTH,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#if 0
/* Messages generated internally by syslogd(8). */
#ifdef LOG_SYSLOG
	{ SM_CONF_DEF_MAGIC,
	"SYSLOG",	sm_conf_type_choice_value,	LOG_SYSLOG,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#endif /* 0 */
#ifdef LOG_LPR
	{ SM_CONF_DEF_MAGIC,
	"LPR",	sm_conf_type_choice_value,		LOG_LPR,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_NEWS
	{ SM_CONF_DEF_MAGIC,
	"NEWS",	sm_conf_type_choice_value,		LOG_NEWS,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_UUCP
	{ SM_CONF_DEF_MAGIC,
	"UUCP",	sm_conf_type_choice_value,		LOG_UUCP,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_CRON
	{ SM_CONF_DEF_MAGIC,
	"CRON",	sm_conf_type_choice_value,		LOG_CRON,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_AUTHPRIV
	{ SM_CONF_DEF_MAGIC,
	"AUTHPRIV",	sm_conf_type_choice_value,	LOG_AUTHPRIV,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_FTP
	{ SM_CONF_DEF_MAGIC,
	"FTP",	sm_conf_type_choice_value,		LOG_FTP,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_NTP
	{ SM_CONF_DEF_MAGIC,
	"NTP",	sm_conf_type_choice_value,		LOG_NTP,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_SECURITY
	{ SM_CONF_DEF_MAGIC,
	"SECURITY",	sm_conf_type_choice_value,	LOG_SECURITY,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_CONSOLE
	{ SM_CONF_DEF_MAGIC,
	"CONSOLE",	sm_conf_type_choice_value,	LOG_CONSOLE,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_LOCAL0
	{ SM_CONF_DEF_MAGIC,
	"LOCAL0",	sm_conf_type_choice_value,	LOG_LOCAL0,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_LOCAL1
	{ SM_CONF_DEF_MAGIC,
	"LOCAL1",	sm_conf_type_choice_value,	LOG_LOCAL1,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_LOCAL2
	{ SM_CONF_DEF_MAGIC,
	"LOCAL2",	sm_conf_type_choice_value,	LOG_LOCAL2,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_LOCAL3
	{ SM_CONF_DEF_MAGIC,
	"LOCAL3",	sm_conf_type_choice_value,	LOG_LOCAL3,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_LOCAL4
	{ SM_CONF_DEF_MAGIC,
	"LOCAL4",	sm_conf_type_choice_value,	LOG_LOCAL4,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_LOCAL5
	{ SM_CONF_DEF_MAGIC,
	"LOCAL5",	sm_conf_type_choice_value,	LOG_LOCAL5,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_LOCAL6
	{ SM_CONF_DEF_MAGIC,
	"LOCAL6",	sm_conf_type_choice_value,	LOG_LOCAL6,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif
#ifdef LOG_LOCAL7
	{ SM_CONF_DEF_MAGIC,
	"LOCAL7",	sm_conf_type_choice_value,	LOG_LOCAL7,
	0, NULL, 0, NULL, NULL, NULL, NULL
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
#endif

	/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0)}
}
#endif /* SM_CONF_LOG_DEF */
;

EXTERN
sm_conf_definition_T sm_log_spec_defs[]
#if SM_CONF_LOG_DEF
=
{
	{ SM_CONF_DEF_MAGIC, "options",		sm_conf_type_choice,
		offsetof(sm_logspec_T, sm_logspc_opt),	sizeof(int),
		NULL, SM_CONF_FLAG_MULTIPLE, sm_log_opts,
		NULL,	NULL,
		"options for openlog(3)"
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },

	{ SM_CONF_DEF_MAGIC, "facility",	sm_conf_type_choice,
		offsetof(sm_logspec_T, sm_logspc_facility),	sizeof(int),
		NULL, 0,		sm_log_facilities,
		NULL,	NULL,
		"facility for openlog(3)"
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },

	{ SM_CONF_DEF_MAGIC, "ident",		sm_conf_type_string,
		offsetof(sm_logspec_T, sm_logspc_ident),	0,
#ifdef SM_LOG_IDENT
		SM_LOG_IDENT
#else
		NULL
#endif
		, 0,	NULL,	NULL,	NULL,
		"ident for openlog(3)"
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },

	/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0)}
}
#endif /* SM_CONF_LOG_DEF */
;

#undef EXTERN

#endif /* SM_LOGCNFDEF_H */


syntax highlighted by Code2HTML, v. 0.9.1