]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/log.h
zebra, lib: fix the ZEBRA_INTERFACE_VRF_UPDATE zapi message
[mirror_frr.git] / lib / log.h
index a45486275c6fab413b806260d7a64c8155484249..be1d9fb5922896b083a2009a4f2fb577a833b5b3 100644 (file)
--- a/lib/log.h
+++ b/lib/log.h
@@ -24,6 +24,7 @@
 
 #include <syslog.h>
 #include <stdint.h>
+#include <stdbool.h>
 #include <stdio.h>
 
 /* Here is some guidance on logging levels to use:
    to that logging destination. */
 #define ZLOG_DISABLED  (LOG_EMERG-1)
 
-typedef enum
-{
-  ZLOG_DEST_SYSLOG = 0,
-  ZLOG_DEST_STDOUT,
-  ZLOG_DEST_MONITOR,
-  ZLOG_DEST_FILE
+typedef enum {
+       ZLOG_DEST_SYSLOG = 0,
+       ZLOG_DEST_STDOUT,
+       ZLOG_DEST_MONITOR,
+       ZLOG_DEST_FILE
 } zlog_dest_t;
 #define ZLOG_NUM_DESTS         (ZLOG_DEST_FILE+1)
 
+extern bool zlog_startup_stderr;
+
 /* Message structure. */
-struct message
-{
-  int key;
-  const char *str;
+struct message {
+       int key;
+       const char *str;
 };
 
 /* Open zlog function */
-extern void openzlog (const char *progname, const char *protoname,
-                      uint16_t instance, int syslog_options, int syslog_facility);
+extern void openzlog(const char *progname, const char *protoname,
+                    uint16_t instance, int syslog_options,
+                    int syslog_facility);
 
 /* Close zlog function. */
-extern void closezlog (void);
+extern void closezlog(void);
 
 /* GCC have printf type attribute check.  */
 #ifdef __GNUC__
@@ -77,36 +79,38 @@ extern void closezlog (void);
 #endif /* __GNUC__ */
 
 /* Handy zlog functions. */
-extern void zlog_err (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
-extern void zlog_warn (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
-extern void zlog_info (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
-extern void zlog_notice (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
-extern void zlog_debug (const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
+extern void zlog_err(const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
+extern void zlog_warn(const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
+extern void zlog_info(const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
+extern void zlog_notice(const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
+extern void zlog_debug(const char *format, ...) PRINTF_ATTRIBUTE(1, 2);
+
+/* For logs which have error codes associated with them */
+#define flog_err(ferr_id, format, ...)                                        \
+       zlog_err("[EC %"PRIu32"] " format, ferr_id, ##__VA_ARGS__)
+#define flog_err_sys(ferr_id, format, ...)                                     \
+       flog_err(ferr_id, format, ##__VA_ARGS__)
+#define flog_warn(ferr_id, format, ...)                                        \
+       zlog_warn("[EC %"PRIu32"] " format, ferr_id, ##__VA_ARGS__)
 
-extern void zlog_thread_info (int log_level);
+
+extern void zlog_thread_info(int log_level);
 
 /* Set logging level for the given destination.  If the log_level
    argument is ZLOG_DISABLED, then the destination is disabled.
    This function should not be used for file logging (use zlog_set_file
    or zlog_reset_file instead). */
-extern void zlog_set_level (zlog_dest_t, int log_level);
+extern void zlog_set_level(zlog_dest_t, int log_level);
 
 /* Set logging to the given filename at the specified level. */
-extern int zlog_set_file (const char *filename, int log_level);
+extern int zlog_set_file(const char *filename, int log_level);
 /* Disable file logging. */
-extern int zlog_reset_file (void);
+extern int zlog_reset_file(void);
 
 /* Rotate log. */
-extern int zlog_rotate (void);
-
-/* For hackey message lookup and check */
-#define LOOKUP_DEF(x, y, def) mes_lookup(x, x ## _max, y, def, #x)
-#define LOOKUP(x, y) LOOKUP_DEF(x, y, "(no item found)")
+extern int zlog_rotate(void);
 
-extern const char *lookup (const struct message *, int);
-extern const char *mes_lookup (const struct message *meslist, 
-                               int max, int index,
-                               const char *no_item, const char *mesname);
+const char *lookup_msg(const struct message *mz, int kz, const char *nf);
 
 /* Safe version of strerror -- never returns NULL. */
 extern const char *safe_strerror(int errnum);
@@ -114,9 +118,10 @@ extern const char *safe_strerror(int errnum);
 /* To be called when a fatal signal is caught. */
 extern void zlog_signal(int signo, const char *action
 #ifdef SA_SIGINFO
-                       , siginfo_t *siginfo, void *program_counter
+                       ,
+                       siginfo_t *siginfo, void *program_counter
 #endif
-                      );
+                       );
 
 /* Log a backtrace. */
 extern void zlog_backtrace(int priority);
@@ -138,49 +143,51 @@ extern size_t quagga_timestamp(int timestamp_precision /* # subsecond digits */,
                               char *buf, size_t buflen);
 
 extern void zlog_hexdump(const void *mem, unsigned int len);
-extern const char *zlog_sanitize(char *buf, size_t bufsz, const void *in, size_t inlen);
+extern const char *zlog_sanitize(char *buf, size_t bufsz, const void *in,
+                                size_t inlen);
 
 
-extern int vzlog_test (int priority);
+extern int vzlog_test(int priority);
 
 /* structure useful for avoiding repeated rendering of the same timestamp */
 struct timestamp_control {
-   size_t len;         /* length of rendered timestamp */
-   int precision;      /* configuration parameter */
-   int already_rendered; /* should be initialized to 0 */
-   char buf[QUAGGA_TIMESTAMP_LEN];     /* will contain the rendered timestamp */
+       size_t len;                     /* length of rendered timestamp */
+       int precision;                  /* configuration parameter */
+       int already_rendered;           /* should be initialized to 0 */
+       char buf[QUAGGA_TIMESTAMP_LEN]; /* will contain the rendered timestamp
+                                          */
 };
 
 /* Defines for use in command construction: */
 
-#define LOG_LEVEL_DESC \
-  "System is unusable\n" \
-  "Immediate action needed\n" \
-  "Critical conditions\n" \
-  "Error conditions\n" \
-  "Warning conditions\n" \
-  "Normal but significant conditions\n" \
-  "Informational messages\n" \
-  "Debugging messages\n"
-
-#define LOG_FACILITY_DESC \
-       "Kernel\n" \
-       "User process\n" \
-       "Mail system\n" \
-       "System daemons\n" \
-       "Authorization system\n" \
-       "Syslog itself\n" \
-       "Line printer system\n" \
-       "USENET news\n" \
-       "Unix-to-Unix copy system\n" \
-       "Cron/at facility\n" \
-       "Local use\n" \
-       "Local use\n" \
-       "Local use\n" \
-       "Local use\n" \
-       "Local use\n" \
-       "Local use\n" \
-       "Local use\n" \
-       "Local use\n"
+#define LOG_LEVEL_DESC                                                         \
+       "System is unusable\n"                                                 \
+       "Immediate action needed\n"                                            \
+       "Critical conditions\n"                                                \
+       "Error conditions\n"                                                   \
+       "Warning conditions\n"                                                 \
+       "Normal but significant conditions\n"                                  \
+       "Informational messages\n"                                             \
+       "Debugging messages\n"
+
+#define LOG_FACILITY_DESC                                                      \
+       "Kernel\n"                                                             \
+       "User process\n"                                                       \
+       "Mail system\n"                                                        \
+       "System daemons\n"                                                     \
+       "Authorization system\n"                                               \
+       "Syslog itself\n"                                                      \
+       "Line printer system\n"                                                \
+       "USENET news\n"                                                        \
+       "Unix-to-Unix copy system\n"                                           \
+       "Cron/at facility\n"                                                   \
+       "Local use\n"                                                          \
+       "Local use\n"                                                          \
+       "Local use\n"                                                          \
+       "Local use\n"                                                          \
+       "Local use\n"                                                          \
+       "Local use\n"                                                          \
+       "Local use\n"                                                          \
+       "Local use\n"
 
 #endif /* _ZEBRA_LOG_H */