log.h
上传用户:xiaozhuqw
上传日期:2009-11-15
资源大小:1338k
文件大小:4k
源码类别:

网络

开发平台:

Unix_Linux

  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. #ifndef _ZEBRA_LOG_H
  22. #define _ZEBRA_LOG_H
  23. #include <syslog.h>
  24. #define ZLOG_NOLOG              0x00
  25. #define ZLOG_FILE 0x01
  26. #define ZLOG_SYSLOG 0x02
  27. #define ZLOG_STDOUT             0x04
  28. #define ZLOG_STDERR             0x08
  29. #define ZLOG_NOLOG_INDEX        0
  30. #define ZLOG_FILE_INDEX         1
  31. #define ZLOG_SYSLOG_INDEX       2
  32. #define ZLOG_STDOUT_INDEX       3
  33. #define ZLOG_STDERR_INDEX       4
  34. #define ZLOG_MAX_INDEX          5
  35. typedef enum 
  36. {
  37.   ZLOG_NONE,
  38.   ZLOG_DEFAULT,
  39.   ZLOG_ZEBRA,
  40.   ZLOG_RIP,
  41.   ZLOG_BGP,
  42.   ZLOG_OSPF,
  43.   ZLOG_RIPNG,  
  44.   ZLOG_OSPF6,
  45.   ZLOG_MASC
  46. } zlog_proto_t;
  47. struct zlog 
  48. {
  49.   const char *ident;
  50.   zlog_proto_t protocol;
  51.   int flags;
  52.   FILE *fp;
  53.   char *filename;
  54.   int syslog;
  55.   int stat;
  56.   int connected;
  57.   int maskpri; /* as per syslog setlogmask */
  58.   int priority; /* as per syslog priority */
  59.   int facility; /* as per syslog facility */
  60.   int record_priority;
  61. };
  62. /* Message structure. */
  63. struct message
  64. {
  65.   int key;
  66.   char *str;
  67. };
  68. /* Default logging strucutre. */
  69. extern struct zlog *zlog_default;
  70. /* Open zlog function */
  71. struct zlog *openzlog (const char *, int, zlog_proto_t, int, int);
  72. /* Close zlog function. */
  73. void closezlog (struct zlog *zl);
  74. /* GCC have printf type attribute check.  */
  75. #ifdef __GNUC__
  76. #define PRINTF_ATTRIBUTE(a,b) __attribute__ ((__format__ (__printf__, a, b)))
  77. #else
  78. #define PRINTF_ATTRIBUTE(a,b)
  79. #endif /* __GNUC__ */
  80. /* Generic function for zlog. */
  81. void zlog (struct zlog *zl, int priority, const char *format, ...) PRINTF_ATTRIBUTE(3, 4);
  82. /* Handy zlog functions. */
  83. void zlog_err (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
  84. void zlog_warn (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
  85. void zlog_info (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
  86. void zlog_notice (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
  87. void zlog_debug (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
  88. /* For bgpd's peer oriented log. */
  89. void plog_err (struct zlog *, const char *format, ...);
  90. void plog_warn (struct zlog *, const char *format, ...);
  91. void plog_info (struct zlog *, const char *format, ...);
  92. void plog_notice (struct zlog *, const char *format, ...);
  93. void plog_debug (struct zlog *, const char *format, ...);
  94. /* Set zlog flags. */
  95. void zlog_set_flag (struct zlog *zl, int flags);
  96. void zlog_reset_flag (struct zlog *zl, int flags);
  97. /* Set zlog filename. */
  98. int zlog_set_file (struct zlog *zl, int flags, char *filename);
  99. int zlog_reset_file (struct zlog *zl);
  100. /* Rotate log. */
  101. int zlog_rotate ();
  102. /* For hackey massage lookup and check */
  103. #define LOOKUP(x, y) mes_lookup(x, x ## _max, y)
  104. char *lookup (struct message *, int);
  105. char *mes_lookup (struct message *meslist, int max, int index);
  106. extern const char *zlog_priority[];
  107. #endif /* _ZEBRA_LOG_H */