/* Zebra logging funcions. * Copyright (C) 1997, 1998, 1999 Kunihiro Ishiguro * * This file is part of GNU Zebra. * * GNU Zebra is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any * later version. * * GNU Zebra is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Zebra; see the file COPYING. If not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ #ifndef _ZEBRA_LOG_H #define _ZEBRA_LOG_H #include #define ZLOG_NOLOG 0x00 #define ZLOG_FILE 0x01 #define ZLOG_SYSLOG 0x02 #define ZLOG_STDOUT 0x04 #define ZLOG_STDERR 0x08 #define ZLOG_NOLOG_INDEX 0 #define ZLOG_FILE_INDEX 1 #define ZLOG_SYSLOG_INDEX 2 #define ZLOG_STDOUT_INDEX 3 #define ZLOG_STDERR_INDEX 4 #define ZLOG_MAX_INDEX 5 typedef enum { ZLOG_NONE, ZLOG_DEFAULT, ZLOG_ZEBRA, ZLOG_RIP, ZLOG_BGP, ZLOG_OSPF, ZLOG_RIPNG, ZLOG_OSPF6, ZLOG_ISIS, ZLOG_MASC } zlog_proto_t; struct zlog { const char *ident; zlog_proto_t protocol; int flags; FILE *fp; char *filename; int syslog; int stat; int connected; int maskpri; /* as per syslog setlogmask */ int priority; /* as per syslog priority */ int facility; /* as per syslog facility */ int record_priority; }; /* Message structure. */ struct message { int key; char *str; }; /* Default logging strucutre. */ extern struct zlog *zlog_default; /* Open zlog function */ struct zlog *openzlog (const char *, int, zlog_proto_t, int, int); /* Close zlog function. */ void closezlog (struct zlog *zl); /* GCC have printf type attribute check. */ #ifdef __GNUC__ #define PRINTF_ATTRIBUTE(a,b) __attribute__ ((__format__ (__printf__, a, b))) #else #define PRINTF_ATTRIBUTE(a,b) #endif /* __GNUC__ */ /* Generic function for zlog. */ void zlog (struct zlog *zl, int priority, const char *format, ...) PRINTF_ATTRIBUTE(3, 4); /* Handy zlog functions. */ void zlog_err (const char *format, ...) PRINTF_ATTRIBUTE(1, 2); void zlog_warn (const char *format, ...) PRINTF_ATTRIBUTE(1, 2); void zlog_info (const char *format, ...) PRINTF_ATTRIBUTE(1, 2); void zlog_notice (const char *format, ...) PRINTF_ATTRIBUTE(1, 2); void zlog_debug (const char *format, ...) PRINTF_ATTRIBUTE(1, 2); /* For bgpd's peer oriented log. */ void plog_err (struct zlog *, const char *format, ...); void plog_warn (struct zlog *, const char *format, ...); void plog_info (struct zlog *, const char *format, ...); void plog_notice (struct zlog *, const char *format, ...); void plog_debug (struct zlog *, const char *format, ...); /* Set zlog flags. */ void zlog_set_flag (struct zlog *zl, int flags); void zlog_reset_flag (struct zlog *zl, int flags); /* Set zlog filename. */ int zlog_set_file (struct zlog *zl, int flags, char *filename); int zlog_reset_file (struct zlog *zl); /* Rotate log. */ int zlog_rotate (); /* For hackey massage lookup and check */ #define LOOKUP(x, y) mes_lookup(x, x ## _max, y) char *lookup (struct message *, int); char *mes_lookup (struct message *meslist, int max, int index); extern const char *zlog_priority[]; #endif /* _ZEBRA_LOG_H */