1/***********************************************************************
2*                                                                      *
3*               This software is part of the ast package               *
4*          Copyright (c) 1985-2011 AT&T Intellectual Property          *
5*                      and is licensed under the                       *
6*                  Common Public License, Version 1.0                  *
7*                    by AT&T Intellectual Property                     *
8*                                                                      *
9*                A copy of the License is available at                 *
10*            http://www.opensource.org/licenses/cpl1.0.txt             *
11*         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
12*                                                                      *
13*              Information and Software Systems Research               *
14*                            AT&T Research                             *
15*                           Florham Park NJ                            *
16*                                                                      *
17*                 Glenn Fowler <gsf@research.att.com>                  *
18*                  David Korn <dgk@research.att.com>                   *
19*                   Phong Vo <kpv@research.att.com>                    *
20*                                                                      *
21***********************************************************************/
22#pragma prototyped
23/*
24 * posix syslog interface definitions
25 */
26
27#ifndef _SYSLOG_H
28#define _SYSLOG_H
29
30#include <stdarg.h>
31
32#define LOG_PRIBITS	3	/* priority bits			*/
33#define LOG_FACBITS	7	/* facility bits			*/
34
35#define LOG_PRIMASK	((1<<LOG_PRIBITS)-1)
36#define LOG_FACMASK	(((1<<LOG_FACBITS)-1)<<LOG_PRIBITS)
37
38#define LOG_PRI(p)	((p)&((1<<LOG_PRIBITS)-1))
39#define LOG_FAC(p)	(((p)>>LOG_PRIBITS)&((1<<LOG_FACBITS)-1))
40
41#define LOG_MAKEPRI(f,p) (((f)<<LOG_PRIBITS)|(p))
42
43/* syslog priority severity levels */
44
45#define LOG_EMERG	0	/* panic condition			*/
46#define LOG_ALERT	1	/* should be corrected immediately	*/
47#define LOG_CRIT	2	/* critical condition			*/
48#define LOG_ERR		3	/* error condition			*/
49#define LOG_WARNING	4	/* warning condition			*/
50#define LOG_NOTICE	5	/* no error but may need intervention	*/
51#define LOG_INFO	6	/* informational message		*/
52#define LOG_DEBUG	7	/* debug message			*/
53
54/* setlogmask masks */
55
56#define	LOG_MASK(s)	(1<<(s))	/* individual severity s	*/
57#define	LOG_UPTO(s)	((1<<((s)+1))-1)/* up to and including s	*/
58
59/* syslog facilities */
60
61#define LOG_KERN	(0<<LOG_PRIBITS) /* kernel			*/
62#define LOG_USER	(1<<LOG_PRIBITS) /* user process -- default	*/
63#define LOG_MAIL	(2<<LOG_PRIBITS) /* mail			*/
64#define LOG_DAEMON	(3<<LOG_PRIBITS) /* daemon			*/
65#define LOG_AUTH	(4<<LOG_PRIBITS) /* security/authorization	*/
66#define LOG_SYSLOG	(5<<LOG_PRIBITS) /* syslog internal		*/
67#define LOG_LPR		(6<<LOG_PRIBITS) /* line printer		*/
68#define LOG_NEWS	(7<<LOG_PRIBITS) /* network news		*/
69#define LOG_UUCP	(8<<LOG_PRIBITS) /* uucp			*/
70#define LOG_CRON	(9<<LOG_PRIBITS) /* cron			*/
71#define LOG_AUDIT	(13<<LOG_PRIBITS) /* audit daemon		*/
72#define LOG_LFMT	(14<<LOG_PRIBITS) /* logalert			*/
73#define LOG_LOCAL0	(16<<LOG_PRIBITS) /* reserved for local use	*/
74#define LOG_LOCAL1	(17<<LOG_PRIBITS) /* reserved for local use	*/
75#define LOG_LOCAL2	(18<<LOG_PRIBITS) /* reserved for local use	*/
76#define LOG_LOCAL3	(19<<LOG_PRIBITS) /* reserved for local use	*/
77#define LOG_LOCAL4	(20<<LOG_PRIBITS) /* reserved for local use	*/
78#define LOG_LOCAL5	(21<<LOG_PRIBITS) /* reserved for local use	*/
79#define LOG_LOCAL6	(22<<LOG_PRIBITS) /* reserved for local use	*/
80#define LOG_LOCAL7	(23<<LOG_PRIBITS) /* reserved for local use	*/
81
82#define LOG_NFACILITIES	24
83
84/* openlog flags */
85
86#define	LOG_PID		0x01	/* log the pid with each message	*/
87#define	LOG_CONS	0x02	/* log to console if errors in sending	*/
88#define LOG_NDELAY	0x08	/* open right now			*/
89#define	LOG_ODELAY	0x04	/* delay open until syslog() is called	*/
90#define LOG_NOWAIT	0x10	/* don't wait() for any child processes	*/
91#define LOG_PERROR	0x20	/* log to stderr too			*/
92#define LOG_LEVEL	0x40	/* tag messages with facility/level	*/
93
94#ifdef LOG_TABLES
95
96/* encoding support */
97
98#include <ast_namval.h>
99
100#define log_facility	_log_facility
101#define log_severity	_log_severity
102
103#define LOG_FACILITY(p)	LOG_FAC(p)	/* get facility index from pri	*/
104#define LOG_SEVERITY(p)	LOG_PRI(p)	/* get severity from pri	*/
105
106#if _BLD_ast && defined(__EXPORT__)
107#define extern		__EXPORT__
108#endif
109#if !_BLD_ast && defined(__IMPORT__)
110#define extern		extern __IMPORT__
111#endif
112
113extern const Namval_t	log_facility[];
114extern const Namval_t	log_severity[];
115
116#undef	extern
117
118#endif
119
120#if _BLD_ast && defined(__EXPORT__)
121#define extern		__EXPORT__
122#endif
123
124extern void	closelog(void);
125extern void	openlog(const char*, int, int);
126extern int	setlogmask(int);
127extern void	syslog(int, const char*, ...);
128extern void	vsyslog(int, const char*, va_list);
129
130#undef	extern
131
132#endif
133