]> git.proxmox.com Git - mirror_frr.git/blame - lib/log.h
2004-11-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
[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
131 up the state of zlog file pointers. This function needs to be enhanced
132 to support syslog logging. */
48d6c69b 133extern void zlog_backtrace_sigsafe(int priority);
063ee52a 134
718e3744 135#endif /* _ZEBRA_LOG_H */