1 | /* $NetBSD: log.h,v 1.14 2018/08/26 07:46:36 christos Exp $ */ |
2 | /* $OpenBSD: log.h,v 1.23 2018/07/27 12:03:17 markus Exp $ */ |
3 | |
4 | /* |
5 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
6 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
7 | * All rights reserved |
8 | * |
9 | * As far as I am concerned, the code I have written for this software |
10 | * can be used freely for any purpose. Any derived versions of this |
11 | * software must be clearly marked as such, and if the derived work is |
12 | * incompatible with the protocol description in the RFC file, it must be |
13 | * called by a name other than "ssh" or "Secure Shell". |
14 | */ |
15 | |
16 | #ifndef SSH_LOG_H |
17 | #define SSH_LOG_H |
18 | |
19 | /* Supported syslog facilities and levels. */ |
20 | typedef enum { |
21 | SYSLOG_FACILITY_DAEMON, |
22 | SYSLOG_FACILITY_USER, |
23 | SYSLOG_FACILITY_AUTH, |
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 | SYSLOG_FACILITY_NOT_SET = -1 |
33 | } SyslogFacility; |
34 | |
35 | typedef enum { |
36 | SYSLOG_LEVEL_QUIET, |
37 | SYSLOG_LEVEL_FATAL, |
38 | SYSLOG_LEVEL_ERROR, |
39 | SYSLOG_LEVEL_INFO, |
40 | SYSLOG_LEVEL_VERBOSE, |
41 | SYSLOG_LEVEL_DEBUG1, |
42 | SYSLOG_LEVEL_DEBUG2, |
43 | SYSLOG_LEVEL_DEBUG3, |
44 | SYSLOG_LEVEL_NOT_SET = -1 |
45 | } LogLevel; |
46 | |
47 | typedef void (log_handler_fn)(LogLevel, const char *, void *); |
48 | |
49 | void log_init(const char *, LogLevel, SyslogFacility, int); |
50 | LogLevel log_level_get(void); |
51 | int log_change_level(LogLevel); |
52 | int log_is_on_stderr(void); |
53 | void log_redirect_stderr_to(const char *); |
54 | |
55 | SyslogFacility log_facility_number(char *); |
56 | const char * log_facility_name(SyslogFacility); |
57 | LogLevel log_level_number(char *); |
58 | const char * log_level_name(LogLevel); |
59 | |
60 | void fatal(const char *, ...) __attribute__((noreturn)) |
61 | __attribute__((format(printf, 1, 2))); |
62 | void error(const char *, ...) __attribute__((format(printf, 1, 2))); |
63 | void sigdie(const char *, ...) __attribute__((noreturn)) |
64 | __attribute__((format(printf, 1, 2))); |
65 | void logdie(const char *, ...) __attribute__((noreturn)) |
66 | __attribute__((format(printf, 1, 2))); |
67 | void logit(const char *, ...) __attribute__((format(printf, 1, 2))); |
68 | void verbose(const char *, ...) __attribute__((format(printf, 1, 2))); |
69 | void debug(const char *, ...) __attribute__((format(printf, 1, 2))); |
70 | void debug2(const char *, ...) __attribute__((format(printf, 1, 2))); |
71 | void debug3(const char *, ...) __attribute__((format(printf, 1, 2))); |
72 | |
73 | |
74 | void set_log_handler(log_handler_fn *, void *); |
75 | void do_log2(LogLevel, const char *, ...) |
76 | __attribute__((format(printf, 2, 3))); |
77 | void do_log(LogLevel, const char *, va_list) |
78 | __attribute__((format(printf, 2, 0))); |
79 | void cleanup_exit(int) __attribute__((noreturn)); |
80 | #endif |
81 | |