]> git.proxmox.com Git - mirror_frr.git/blame - lib/log.h
Need RCS Id keyword.
[mirror_frr.git] / lib / log.h
CommitLineData
718e3744 1/* Zebra logging funcions.
2 * Copyright (C) 1997, 1998, 1999 Kunihiro Ishiguro
3 *
4 * This file is part of GNU Zebra.
5 *
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
9 * later version.
10 *
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.
15 *
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
19 * 02111-1307, USA.
20 */
21
22#ifndef _ZEBRA_LOG_H
23#define _ZEBRA_LOG_H
24
25#include <syslog.h>
26
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
32
718e3744 33typedef enum
34{
35 ZLOG_NONE,
36 ZLOG_DEFAULT,
37 ZLOG_ZEBRA,
38 ZLOG_RIP,
39 ZLOG_BGP,
40 ZLOG_OSPF,
41 ZLOG_RIPNG,
42 ZLOG_OSPF6,
9e867fe6 43 ZLOG_ISIS,
718e3744 44 ZLOG_MASC
45} zlog_proto_t;
46
47struct zlog
48{
7d149b8e 49 const char *ident; /* daemon name (first arg to openlog) */
718e3744 50 zlog_proto_t protocol;
7d149b8e 51 int flags; /* mask indicating which destinations to log to */
718e3744 52 FILE *fp;
53 char *filename;
7d149b8e 54 int maskpri; /* discard messages with priority > maskpri */
718e3744 55 int facility; /* as per syslog facility */
7d149b8e 56 int record_priority; /* should messages logged through stdio include the
57 priority of the message? */
58 int syslog_options; /* 2nd arg to openlog */
718e3744 59};
60
61/* Message structure. */
62struct message
63{
64 int key;
b04c699e 65 const char *str;
718e3744 66};
67
68/* Default logging strucutre. */
69extern struct zlog *zlog_default;
70
71/* Open zlog function */
72struct zlog *openzlog (const char *, int, zlog_proto_t, int, int);
73
74/* Close zlog function. */
75void closezlog (struct zlog *zl);
76
77/* GCC have printf type attribute check. */
78#ifdef __GNUC__
79#define PRINTF_ATTRIBUTE(a,b) __attribute__ ((__format__ (__printf__, a, b)))
80#else
81#define PRINTF_ATTRIBUTE(a,b)
82#endif /* __GNUC__ */
83
84/* Generic function for zlog. */
85void zlog (struct zlog *zl, int priority, const char *format, ...) PRINTF_ATTRIBUTE(3, 4);
86
87/* Handy zlog functions. */
88void zlog_err (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
89void zlog_warn (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
90void zlog_info (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
91void zlog_notice (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
92void zlog_debug (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
93
94/* For bgpd's peer oriented log. */
95void plog_err (struct zlog *, const char *format, ...);
96void plog_warn (struct zlog *, const char *format, ...);
97void plog_info (struct zlog *, const char *format, ...);
98void plog_notice (struct zlog *, const char *format, ...);
99void plog_debug (struct zlog *, const char *format, ...);
100
101/* Set zlog flags. */
102void zlog_set_flag (struct zlog *zl, int flags);
103void zlog_reset_flag (struct zlog *zl, int flags);
104
105/* Set zlog filename. */
d246bd96 106int zlog_set_file (struct zlog *zl, const char *filename);
718e3744 107int zlog_reset_file (struct zlog *zl);
108
109/* Rotate log. */
d246bd96 110int zlog_rotate (struct zlog *);
718e3744 111
112/* For hackey massage lookup and check */
113#define LOOKUP(x, y) mes_lookup(x, x ## _max, y)
114
8c328f11 115const char *lookup (struct message *, int);
116const char *mes_lookup (struct message *meslist, int max, int index);
718e3744 117
118extern const char *zlog_priority[];
119
ca359769 120/* Safe version of strerror -- never returns NULL. */
121extern const char *safe_strerror(int errnum);
122
59a06a91 123/* To be called when a fatal signal is caught. */
124extern void zlog_signal(int signo, const char *action);
125
063ee52a 126/* Log a backtrace. */
127extern void zlog_backtrace(int priority);
128
129/* Log a backtrace, but in an async-signal-safe way. Should not be
130 called unless the program is about to exit or abort, since it messes
b9c35001 131 up the state of zlog file pointers. */
48d6c69b 132extern void zlog_backtrace_sigsafe(int priority);
063ee52a 133
718e3744 134#endif /* _ZEBRA_LOG_H */