Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / sys / syslog.h @ 14

History | View | Annotate | Download (8.1 KB)

1
/*        $NetBSD: syslog.h,v 1.36 2014/07/20 20:55:17 dholland Exp $        */
2

    
3
/*
4
 * Copyright (c) 1982, 1986, 1988, 1993
5
 *        The Regents of the University of California.  All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms, with or without
8
 * modification, are permitted provided that the following conditions
9
 * are met:
10
 * 1. Redistributions of source code must retain the above copyright
11
 *    notice, this list of conditions and the following disclaimer.
12
 * 2. Redistributions in binary form must reproduce the above copyright
13
 *    notice, this list of conditions and the following disclaimer in the
14
 *    documentation and/or other materials provided with the distribution.
15
 * 3. Neither the name of the University nor the names of its contributors
16
 *    may be used to endorse or promote products derived from this software
17
 *    without specific prior written permission.
18
 *
19
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29
 * SUCH DAMAGE.
30
 *
31
 *        @(#)syslog.h        8.1 (Berkeley) 6/2/93
32
 */
33

    
34
#ifndef _SYS_SYSLOG_H_
35
#define _SYS_SYSLOG_H_
36

    
37
#define        _PATH_LOG        "/var/run/log"
38

    
39
/*
40
 * priorities/facilities are encoded into a single 32-bit quantity, where the
41
 * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
42
 * (0-big number).  Both the priorities and the facilities map roughly
43
 * one-to-one to strings in the syslogd(8) source code.  This mapping is
44
 * included in this file.
45
 *
46
 * priorities (these are ordered)
47
 */
48
#define        LOG_EMERG        0        /* system is unusable */
49
#define        LOG_ALERT        1        /* action must be taken immediately */
50
#define        LOG_CRIT        2        /* critical conditions */
51
#define        LOG_ERR                3        /* error conditions */
52
#define        LOG_WARNING        4        /* warning conditions */
53
#define        LOG_NOTICE        5        /* normal but significant condition */
54
#define        LOG_INFO        6        /* informational */
55
#define        LOG_DEBUG        7        /* debug-level messages */
56

    
57
#define        LOG_PRIMASK        0x07        /* mask to extract priority part (internal) */
58
                                /* extract priority */
59
#define        LOG_PRI(p)        ((p) & LOG_PRIMASK)
60
#define        LOG_MAKEPRI(fac, pri)        (((fac) << 3) | (pri))
61

    
62
#ifdef SYSLOG_NAMES
63
#define        INTERNAL_NOPRI        0x10        /* the "no priority" priority */
64
                                /* mark "facility" */
65
#define        INTERNAL_MARK        LOG_MAKEPRI(LOG_NFACILITIES, 0)
66
typedef struct _code {
67
        char        *c_name;
68
        int        c_val;
69
} CODE;
70

    
71
CODE prioritynames[] = {
72
        { "alert",        LOG_ALERT },
73
        { "crit",        LOG_CRIT },
74
        { "debug",        LOG_DEBUG },
75
        { "emerg",        LOG_EMERG },
76
        { "err",        LOG_ERR },
77
        { "error",        LOG_ERR },                /* DEPRECATED */
78
        { "info",        LOG_INFO },
79
        { "none",        INTERNAL_NOPRI },        /* INTERNAL */
80
        { "notice",        LOG_NOTICE },
81
        { "panic",         LOG_EMERG },                /* DEPRECATED */
82
        { "warn",        LOG_WARNING },                /* DEPRECATED */
83
        { "warning",        LOG_WARNING },
84
        { NULL,                -1 }
85
};
86
#endif /* SYSLOG_NAMES */
87

    
88
/* facility codes */
89
#define        LOG_KERN        (0<<3)        /* kernel messages */
90
#define        LOG_USER        (1<<3)        /* random user-level messages */
91
#define        LOG_MAIL        (2<<3)        /* mail system */
92
#define        LOG_DAEMON        (3<<3)        /* system daemons */
93
#define        LOG_AUTH        (4<<3)        /* security/authorization messages */
94
#define        LOG_SYSLOG        (5<<3)        /* messages generated internally by syslogd */
95
#define        LOG_LPR                (6<<3)        /* line printer subsystem */
96
#define        LOG_NEWS        (7<<3)        /* network news subsystem */
97
#define        LOG_UUCP        (8<<3)        /* UUCP subsystem */
98
#define        LOG_CRON        (9<<3)        /* clock daemon */
99
#define        LOG_AUTHPRIV        (10<<3)        /* security/authorization messages (private) */
100
#define        LOG_FTP                (11<<3)        /* ftp daemon */
101

    
102
        /* other codes through 15 reserved for system use */
103
#define        LOG_LOCAL0        (16<<3)        /* reserved for local use */
104
#define        LOG_LOCAL1        (17<<3)        /* reserved for local use */
105
#define        LOG_LOCAL2        (18<<3)        /* reserved for local use */
106
#define        LOG_LOCAL3        (19<<3)        /* reserved for local use */
107
#define        LOG_LOCAL4        (20<<3)        /* reserved for local use */
108
#define        LOG_LOCAL5        (21<<3)        /* reserved for local use */
109
#define        LOG_LOCAL6        (22<<3)        /* reserved for local use */
110
#define        LOG_LOCAL7        (23<<3)        /* reserved for local use */
111

    
112
#define        LOG_NFACILITIES        24        /* current number of facilities */
113
#define        LOG_FACMASK        0x03f8        /* mask to extract facility part */
114
                                /* facility of pri */
115
#define        LOG_FAC(p)        (((p) & LOG_FACMASK) >> 3)
116

    
117
#ifdef SYSLOG_NAMES
118
CODE facilitynames[] = {
119
        { "auth",        LOG_AUTH },
120
        { "authpriv",        LOG_AUTHPRIV },
121
        { "cron",         LOG_CRON },
122
        { "daemon",        LOG_DAEMON },
123
        { "ftp",        LOG_FTP },
124
        { "kern",        LOG_KERN },
125
        { "lpr",        LOG_LPR },
126
        { "mail",        LOG_MAIL },
127
        { "mark",         INTERNAL_MARK },        /* INTERNAL */
128
        { "news",        LOG_NEWS },
129
        { "security",        LOG_AUTH },                /* DEPRECATED */
130
        { "syslog",        LOG_SYSLOG },
131
        { "user",        LOG_USER },
132
        { "uucp",        LOG_UUCP },
133
        { "local0",        LOG_LOCAL0 },
134
        { "local1",        LOG_LOCAL1 },
135
        { "local2",        LOG_LOCAL2 },
136
        { "local3",        LOG_LOCAL3 },
137
        { "local4",        LOG_LOCAL4 },
138
        { "local5",        LOG_LOCAL5 },
139
        { "local6",        LOG_LOCAL6 },
140
        { "local7",        LOG_LOCAL7 },
141
        { NULL,                -1 }
142
};
143
#endif /* SYSLOG_NAMES */
144

    
145
#ifdef _KERNEL
146
#define        LOG_PRINTF        -1        /* pseudo-priority to indicate use of printf */
147
#endif
148

    
149
/*
150
 * arguments to setlogmask.
151
 */
152
#define        LOG_MASK(pri)        (1 << (pri))                /* mask for one priority */
153
#define        LOG_UPTO(pri)        ((1 << ((pri)+1)) - 1)        /* all priorities through pri */
154

    
155
/*
156
 * Option flags for openlog.
157
 *
158
 * LOG_ODELAY no longer does anything.
159
 * LOG_NDELAY is the inverse of what it used to be.
160
 */
161
#define        LOG_PID                0x01        /* log the pid with each message */
162
#define        LOG_CONS        0x02        /* log on the console if errors in sending */
163
#define        LOG_ODELAY        0x04        /* delay open until first syslog() (default) */
164
#define        LOG_NDELAY        0x08        /* don't delay open */
165
#define        LOG_NOWAIT        0x10        /* don't wait for console forks: DEPRECATED */
166
#define        LOG_PERROR        0x20        /* log to stderr as well */
167

    
168
#ifndef _KERNEL
169

    
170
/* Used by reentrant functions */
171

    
172
struct syslog_data {
173
        int        log_version;
174
        int        log_file;
175
        int        log_connected;
176
        int        log_opened;
177
        int        log_stat;
178
        const char         *log_tag;
179
        char        log_hostname[256];        /* MAXHOSTNAMELEN */
180
        int         log_fac;
181
        int         log_mask;
182
};
183

    
184
#define SYSLOG_DATA_INIT { \
185
    .log_version = 1, \
186
    .log_file = -1, \
187
    .log_connected = 0, \
188
    .log_opened = 0, \
189
    .log_stat = 0, \
190
    .log_tag  = 0, \
191
    .log_hostname = { '\0' }, \
192
    .log_fac = LOG_USER, \
193
    .log_mask = 0xff, \
194
}
195

    
196
#include <sys/cdefs.h>
197
#include <sys/featuretest.h>
198
#include <sys/ansi.h>
199

    
200
__BEGIN_DECLS
201
void        closelog(void);
202
void        openlog(const char *, int, int);
203
int        setlogmask(int);
204
void        syslog(int, const char *, ...) __printflike(2, 3);
205
#if defined(_NETBSD_SOURCE)
206
void        vsyslog(int, const char *, __va_list) __printflike(2, 0);
207
#ifndef __LIBC12_SOURCE__
208
void        closelog_r(struct syslog_data *) __RENAME(__closelog_r60);
209
void        openlog_r(const char *, int, int, struct syslog_data *)
210
    __RENAME(__openlog_r60);
211
int        setlogmask_r(int, struct syslog_data *) __RENAME(__setlogmask_r60);
212
void        syslog_r(int, struct syslog_data *, const char *, ...)
213
    __RENAME(__syslog_r60) __printflike(3, 4);
214
void        vsyslog_r(int, struct syslog_data *, const char *, __va_list)
215
    __RENAME(__vsyslog_r60) __printflike(3, 0);
216
void        syslogp_r(int, struct syslog_data *, const char *, const char *,
217
    const char *, ...) __RENAME(__syslogp_r60) __printflike(5, 6);
218
void        vsyslogp_r(int, struct syslog_data *, const char *, const char *,
219
    const char *, __va_list) __RENAME(__vsyslogp_r60) __printflike(5, 0);
220
#endif
221
void        syslogp(int, const char *, const char *, const char *, ...)
222
    __printflike(4, 5);
223
void        vsyslogp(int, const char *, const char *, const char *, __va_list)
224
    __printflike(4, 0);
225
#endif
226
__END_DECLS
227

    
228
#else /* !_KERNEL */
229

    
230
void        logpri(int);
231
void        log(int, const char *, ...) __printflike(2, 3);
232
void        vlog(int, const char *, __va_list) __printflike(2, 0);
233
void        addlog(const char *, ...) __printflike(1, 2);
234
void        logwakeup(void);
235

    
236
#endif /* !_KERNEL */
237

    
238
#endif /* !_SYS_SYSLOG_H_ */