]>
git.proxmox.com Git - mirror_frr.git/blob - lib/log.h
1 /* Zebra logging funcions.
2 * Copyright (C) 1997, 1998, 1999 Kunihiro Ishiguro
4 * This file is part of GNU Zebra.
6 * GNU Zebra is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2, or (at your option) any
11 * GNU Zebra is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with GNU Zebra; see the file COPYING. If not, write to the Free
18 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
27 #define ZLOG_NOLOG 0x00
28 #define ZLOG_FILE 0x01
29 #define ZLOG_SYSLOG 0x02
30 #define ZLOG_STDOUT 0x04
31 #define ZLOG_STDERR 0x08
50 zlog_proto_t protocol
;
57 int maskpri
; /* as per syslog setlogmask */
58 int priority
; /* as per syslog priority */
59 int facility
; /* as per syslog facility */
63 /* Message structure. */
70 /* Default logging strucutre. */
71 extern struct zlog
*zlog_default
;
73 /* Open zlog function */
74 struct zlog
*openzlog (const char *, int, zlog_proto_t
, int, int);
76 /* Close zlog function. */
77 void closezlog (struct zlog
*zl
);
79 /* GCC have printf type attribute check. */
81 #define PRINTF_ATTRIBUTE(a,b) __attribute__ ((__format__ (__printf__, a, b)))
83 #define PRINTF_ATTRIBUTE(a,b)
86 /* Generic function for zlog. */
87 void zlog (struct zlog
*zl
, int priority
, const char *format
, ...) PRINTF_ATTRIBUTE(3, 4);
89 /* Handy zlog functions. */
90 void zlog_err (const char *format
, ...) PRINTF_ATTRIBUTE(1, 2);
91 void zlog_warn (const char *format
, ...) PRINTF_ATTRIBUTE(1, 2);
92 void zlog_info (const char *format
, ...) PRINTF_ATTRIBUTE(1, 2);
93 void zlog_notice (const char *format
, ...) PRINTF_ATTRIBUTE(1, 2);
94 void zlog_debug (const char *format
, ...) PRINTF_ATTRIBUTE(1, 2);
96 /* For bgpd's peer oriented log. */
97 void plog_err (struct zlog
*, const char *format
, ...);
98 void plog_warn (struct zlog
*, const char *format
, ...);
99 void plog_info (struct zlog
*, const char *format
, ...);
100 void plog_notice (struct zlog
*, const char *format
, ...);
101 void plog_debug (struct zlog
*, const char *format
, ...);
103 /* Set zlog flags. */
104 void zlog_set_flag (struct zlog
*zl
, int flags
);
105 void zlog_reset_flag (struct zlog
*zl
, int flags
);
107 /* Set zlog filename. */
108 int zlog_set_file (struct zlog
*zl
, const char *filename
);
109 int zlog_reset_file (struct zlog
*zl
);
112 int zlog_rotate (struct zlog
*);
114 /* For hackey massage lookup and check */
115 #define LOOKUP(x, y) mes_lookup(x, x ## _max, y)
117 const char *lookup (struct message
*, int);
118 const char *mes_lookup (struct message
*meslist
, int max
, int index
);
120 extern const char *zlog_priority
[];
122 /* Safe version of strerror -- never returns NULL. */
123 extern const char *safe_strerror(int errnum
);
125 /* To be called when a fatal signal is caught. */
126 extern void zlog_signal(int signo
, const char *action
);
128 /* Log a backtrace. */
129 extern void zlog_backtrace(int priority
);
131 /* Log a backtrace, but in an async-signal-safe way. Should not be
132 called unless the program is about to exit or abort, since it messes
133 up the state of zlog file pointers. This function needs to be enhanced
134 to support syslog logging. */
135 extern void zlog_backtrace_safe(int priority
);
137 #endif /* _ZEBRA_LOG_H */