diff options
Diffstat (limited to 'log.h')
-rw-r--r-- | log.h | 76 |
1 files changed, 76 insertions, 0 deletions
@@ -0,0 +1,76 @@ | |||
1 | /* | ||
2 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | ||
3 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | ||
4 | * All rights reserved | ||
5 | * | ||
6 | * As far as I am concerned, the code I have written for this software | ||
7 | * can be used freely for any purpose. Any derived versions of this | ||
8 | * software must be clearly marked as such, and if the derived work is | ||
9 | * incompatible with the protocol description in the RFC file, it must be | ||
10 | * called by a name other than "ssh" or "Secure Shell". | ||
11 | */ | ||
12 | |||
13 | #ifndef SSH_LOG_H | ||
14 | #define SSH_LOG_H | ||
15 | |||
16 | /* Supported syslog facilities and levels. */ | ||
17 | typedef enum { | ||
18 | SYSLOG_FACILITY_DAEMON, | ||
19 | SYSLOG_FACILITY_USER, | ||
20 | SYSLOG_FACILITY_AUTH, | ||
21 | #ifdef LOG_AUTHPRIV | ||
22 | SYSLOG_FACILITY_AUTHPRIV, | ||
23 | #endif | ||
24 | SYSLOG_FACILITY_LOCAL0, | ||
25 | SYSLOG_FACILITY_LOCAL1, | ||
26 | SYSLOG_FACILITY_LOCAL2, | ||
27 | SYSLOG_FACILITY_LOCAL3, | ||
28 | SYSLOG_FACILITY_LOCAL4, | ||
29 | SYSLOG_FACILITY_LOCAL5, | ||
30 | SYSLOG_FACILITY_LOCAL6, | ||
31 | SYSLOG_FACILITY_LOCAL7 | ||
32 | } SyslogFacility; | ||
33 | |||
34 | typedef enum { | ||
35 | SYSLOG_LEVEL_QUIET, | ||
36 | SYSLOG_LEVEL_FATAL, | ||
37 | SYSLOG_LEVEL_ERROR, | ||
38 | SYSLOG_LEVEL_INFO, | ||
39 | SYSLOG_LEVEL_VERBOSE, | ||
40 | SYSLOG_LEVEL_DEBUG1, | ||
41 | SYSLOG_LEVEL_DEBUG2, | ||
42 | SYSLOG_LEVEL_DEBUG3 | ||
43 | } LogLevel; | ||
44 | /* Initializes logging. */ | ||
45 | void log_init(char *av0, LogLevel level, SyslogFacility facility, int on_stderr); | ||
46 | |||
47 | /* Logging implementation, depending on server or client */ | ||
48 | void do_log(LogLevel level, const char *fmt, va_list args); | ||
49 | |||
50 | /* name to facility/level */ | ||
51 | SyslogFacility log_facility_number(char *name); | ||
52 | LogLevel log_level_number(char *name); | ||
53 | |||
54 | /* Output a message to syslog or stderr */ | ||
55 | void fatal(const char *fmt,...) __attribute__((format(printf, 1, 2))); | ||
56 | void error(const char *fmt,...) __attribute__((format(printf, 1, 2))); | ||
57 | void log(const char *fmt,...) __attribute__((format(printf, 1, 2))); | ||
58 | void verbose(const char *fmt,...) __attribute__((format(printf, 1, 2))); | ||
59 | void debug(const char *fmt,...) __attribute__((format(printf, 1, 2))); | ||
60 | void debug2(const char *fmt,...) __attribute__((format(printf, 1, 2))); | ||
61 | void debug3(const char *fmt,...) __attribute__((format(printf, 1, 2))); | ||
62 | |||
63 | /* same as fatal() but w/o logging */ | ||
64 | void fatal_cleanup(void); | ||
65 | |||
66 | /* | ||
67 | * Registers a cleanup function to be called by fatal()/fatal_cleanup() | ||
68 | * before exiting. It is permissible to call fatal_remove_cleanup for the | ||
69 | * function itself from the function. | ||
70 | */ | ||
71 | void fatal_add_cleanup(void (*proc) (void *context), void *context); | ||
72 | |||
73 | /* Removes a cleanup function to be called at fatal(). */ | ||
74 | void fatal_remove_cleanup(void (*proc) (void *context), void *context); | ||
75 | |||
76 | #endif | ||