| 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 |  |