Convert duplicate set to new logger.
authorHenning Rogge <rogge@fgan.de>
Fri, 6 Feb 2009 15:17:55 +0000 (16:17 +0100)
committerHenning Rogge <rogge@fgan.de>
Fri, 6 Feb 2009 15:17:55 +0000 (16:17 +0100)
Add logger macros for "no header" lines.
example for new macros in duplcate_set.c olsr_print_duplicate_table()

Makefile.inc
src/duplicate_set.c
src/olsr_logging.c
src/olsr_logging.h

index 31eeb74..705687a 100644 (file)
@@ -52,6 +52,10 @@ CFGFILE ?= $(ETCDIR)/$(CFGNAME)
 CPPFLAGS =     $(filter-out -I./src,-Isrc -I$(TOPDIR)/src)
 CPPFLAGS +=    -DOLSRD_CONF_FILE_NAME='"$(CFGNAME)"'
 CPPFLAGS +=    -DOLSRD_GLOBAL_CONF_FILE='"$(CFGFILE)"'
+#CPPFLAGS +=   -DREMOVE_LOG_DEBUG
+#CPPFLAGS +=   -DREMOVE_LOG_INFO
+#CPPFLAGS +=   -DREMOVE_LOG_WARN
+#CPPFLAGS +=   -DREMOVE_LOG_ERROR
 
 # add gcc warnings and optimizations if CFLAGS not set
 ifndef CFLAGS
index ca82c33..3898cdb 100644 (file)
@@ -46,6 +46,7 @@
 #include "scheduler.h"
 #include "mantissa.h"
 #include "olsr_cookie.h"
+#include "olsr_logging.h"
 
 #include <stdlib.h>
 
@@ -140,9 +141,11 @@ olsr_message_is_duplicate(union olsr_message *m)
   int diff;
   union olsr_ip_addr *mainIp;
   clock_t valid_until;
-  struct ipaddr_str buf;
   uint16_t seqnr;
   union olsr_ip_addr *ip;
+#if !defined(REMOVE_LOG_DEBUG)
+  struct ipaddr_str buf;
+#endif
 
   if (olsr_cnf->ip_version == AF_INET) {
     seqnr = ntohs(m->v4.seqno);
@@ -191,8 +194,8 @@ olsr_message_is_duplicate(union olsr_message *m)
       entry->array = 1;
       return false; /* start with a new sequence number, so NO duplicate */
     }
-    OLSR_PRINTF(9, "blocked %x from %s\n", seqnr,
-               olsr_ip_to_string(&buf, mainIp));
+    OLSR_DEBUG(LOG_DUPLICATE_SET, "blocked %x from %s\n", seqnr,
+        olsr_ip_to_string(&buf, mainIp));
     return true; /* duplicate ! */
   }
 
@@ -201,12 +204,12 @@ olsr_message_is_duplicate(union olsr_message *m)
     uint32_t bitmask = 1 << ((uint32_t) (-diff));
 
     if ((entry->array & bitmask) != 0) {
-      OLSR_PRINTF(9, "blocked %x (diff=%d,mask=%08x) from %s\n", seqnr, diff,
+      OLSR_DEBUG(LOG_DUPLICATE_SET, "blocked %x (diff=%d,mask=%08x) from %s\n", seqnr, diff,
           entry->array, olsr_ip_to_string(&buf, mainIp));
       return true; /* duplicate ! */
     }
     entry->array |= bitmask;
-    OLSR_PRINTF(9, "processed %x from %s\n", seqnr, olsr_ip_to_string(&buf, mainIp));
+    OLSR_DEBUG(LOG_DUPLICATE_SET, "processed %x from %s\n", seqnr, olsr_ip_to_string(&buf, mainIp));
     return false; /* no duplicate */
   } else if (diff < 32) {
     entry->array <<= (uint32_t) diff;
@@ -215,7 +218,7 @@ olsr_message_is_duplicate(union olsr_message *m)
   }
   entry->array |= 1;
   entry->seqnr = seqnr;
-  OLSR_PRINTF(9, "processed %x from %s\n", seqnr,
+  OLSR_DEBUG(LOG_DUPLICATE_SET, "processed %x from %s\n", seqnr,
              olsr_ip_to_string(&buf, mainIp));
   return false; /* no duplicate */
 }
@@ -223,12 +226,12 @@ olsr_message_is_duplicate(union olsr_message *m)
 void
 olsr_print_duplicate_table(void)
 {
-#ifndef NODEBUG
+#ifndef REMOVE_LOG_INFO
   /* The whole function makes no sense without it. */
   struct dup_entry *entry;
   const int ipwidth = olsr_cnf->ip_version == AF_INET ? 15 : 30;
 
-  OLSR_PRINTF(1,
+  OLSR_INFO(LOG_DUPLICATE_SET,
              "\n--- %s ------------------------------------------------- DUPLICATE SET\n\n"
              "%-*s %8s %s\n",
               olsr_wallclock_string(),
@@ -236,7 +239,7 @@ olsr_print_duplicate_table(void)
 
   OLSR_FOR_ALL_DUP_ENTRIES(entry) {
     struct ipaddr_str addrbuf;
-    OLSR_PRINTF(1, "%-*s %08x %s\n",
+    OLSR_INFO_NH(LOG_DUPLICATE_SET, "%-*s %08x %s\n",
                ipwidth, olsr_ip_to_string(&addrbuf, entry->avl.key),
                entry->array,
                 olsr_clock_string(entry->valid_until));
index 0d19f58..b4a7777 100644 (file)
@@ -52,7 +52,7 @@
 
 struct log_handler_entry {
   void (*handler)
-      (enum log_severity, enum log_source, const char *, int, char *, int);
+      (enum log_severity, enum log_source, bool, const char *, int, char *, int);
   bool (*bitmask)[LOG_SEVERITY_COUNT][LOG_SOURCE_COUNT];
 };
 
@@ -65,11 +65,11 @@ static bool log_initialized = false;
 static FILE *log_fileoutput = NULL;
 
 static void olsr_log_stderr (enum log_severity severity, enum log_source source,
-    const char *file, int line, char *buffer, int prefixLength);
+    bool no_header, const char *file, int line, char *buffer, int prefixLength);
 static void olsr_log_syslog (enum log_severity severity, enum log_source source,
-    const char *file, int line, char *buffer, int prefixLength);
+    bool no_header, const char *file, int line, char *buffer, int prefixLength);
 static void olsr_log_file (enum log_severity severity, enum log_source source,
-    const char *file, int line, char *buffer, int prefixLength);
+    bool no_header, const char *file, int line, char *buffer, int prefixLength);
 
 /**
  * Called by main method just after configuration options have been parsed
@@ -136,8 +136,8 @@ void olsr_log_cleanup(void) {
  * @param mask pointer to custom event filter or NULL if handler use filter
  *   from olsr_cnf
  */
-void olsr_log_addhandler(void (*handler)(enum log_severity, enum log_source, const char *, int,
-    char *, int), bool (*mask)[LOG_SEVERITY_COUNT][LOG_SOURCE_COUNT]) {
+void olsr_log_addhandler(void (*handler)(enum log_severity, enum log_source, bool,
+    const char *, int, char *, int), bool (*mask)[LOG_SEVERITY_COUNT][LOG_SOURCE_COUNT]) {
 
   assert (log_handler_count < MAX_LOG_HANDLER);
 
@@ -152,8 +152,8 @@ void olsr_log_addhandler(void (*handler)(enum log_severity, enum log_source, con
  * Call this function to remove a logevent handler
  * @param handler pointer to handler function
  */
-void olsr_log_removehandler(void (*handler)(enum log_severity, enum log_source, const char *, int,
-    char *, int)) {
+void olsr_log_removehandler(void (*handler)(enum log_severity, enum log_source, bool,
+    const char *, int, char *, int)) {
   int i;
   for (i=0; i<log_handler_count;i++) {
     if (handler == log_handler[i].handler) {
@@ -200,10 +200,11 @@ void olsr_log_updatemask(void) {
  * @param line line number where the logging macro have been called
  * @param format printf format string for log output plus a variable number of arguments
  */
-void olsr_log (enum log_severity severity, enum log_source source, const char *file, int line, const char *format, ...) {
+void olsr_log (enum log_severity severity, enum log_source source, bool no_header,
+    const char *file, int line, const char *format, ...) {
   static char logbuffer[LOGBUFFER_SIZE];
   va_list ap;
-  int p1,p2, i;
+  int p1 = 0,p2 = 0, i;
   struct tm now;
   struct timeval timeval;
 
@@ -218,15 +219,17 @@ void olsr_log (enum log_severity severity, enum log_source source, const char *f
   localtime_r ( (time_t *) &timeval.tv_sec, &now );
 
   /* generate log string (insert file/line in DEBUG mode) */
+  if (!no_header) {
 #if DEBUG
-  p1 = snprintf(logbuffer, LOGBUFFER_SIZE, "%d:%02d:%02d.%03ld %s(%s) %s %d: ",
-    now.tm_hour, now.tm_min, now.tm_sec, (long)(timeval.tv_usec / 1000),
-    LOG_SEVERITY_NAMES[severity], LOG_SOURCE_NAMES[source], file, line);
+    p1 = snprintf(logbuffer, LOGBUFFER_SIZE, "%d:%02d:%02d.%03ld %s(%s) %s %d: ",
+        now.tm_hour, now.tm_min, now.tm_sec, (long)(timeval.tv_usec / 1000),
+        LOG_SEVERITY_NAMES[severity], LOG_SOURCE_NAMES[source], file, line);
 #else
-  p1 = snprintf(logbuffer, LOGBUFFER_SIZE, "%d:%02d:%02d.%03ld %s(%s): ",
-    now.tm_hour, now.tm_min, now.tm_sec, timeval.tv_usec / 1000,
-    LOG_SEVERITY_NAMES[severity], LOG_SOURCE_NAMES[source]);
+    p1 = snprintf(logbuffer, LOGBUFFER_SIZE, "%d:%02d:%02d.%03ld %s(%s): ",
+        now.tm_hour, now.tm_min, now.tm_sec, timeval.tv_usec / 1000,
+        LOG_SEVERITY_NAMES[severity], LOG_SOURCE_NAMES[source]);
 #endif
+  }
   p2 = vsnprintf(&logbuffer[p1], LOGBUFFER_SIZE - p1, format, ap);
 
   assert (p1+p2 < LOGBUFFER_SIZE);
@@ -241,12 +244,13 @@ void olsr_log (enum log_severity severity, enum log_source source, const char *f
 
   /* call all log handlers */
   for (i=0; i<log_handler_count; i++) {
-    log_handler[i].handler(severity, source, file, line, logbuffer, p1);
+    log_handler[i].handler(severity, source, no_header, file, line, logbuffer, p1);
   }
   va_end(ap);
 }
 
 static void olsr_log_stderr (enum log_severity severity, enum log_source source,
+    bool no_header __attribute__((unused)),
     const char *file __attribute__((unused)), int line __attribute__((unused)),
     char *buffer, int prefixLength __attribute__((unused))) {
   if (olsr_cnf->log_event[severity][source]) {
@@ -255,6 +259,7 @@ static void olsr_log_stderr (enum log_severity severity, enum log_source source,
 }
 
 static void olsr_log_file (enum log_severity severity, enum log_source source,
+    bool no_header __attribute__((unused)),
     const char *file __attribute__((unused)), int line __attribute__((unused)),
     char *buffer, int prefixLength __attribute__((unused))) {
   if (olsr_cnf->log_event[severity][source]) {
@@ -263,6 +268,7 @@ static void olsr_log_file (enum log_severity severity, enum log_source source,
 }
 
 static void olsr_log_syslog (enum log_severity severity, enum log_source source,
+    bool no_header __attribute__((unused)),
     const char *file __attribute__((unused)), int line __attribute__((unused)),
     char *buffer, int prefixLength __attribute__((unused))) {
   if (olsr_cnf->log_event[severity][source]) {
index e8077ca..b3e6316 100644 (file)
  */
 #ifdef REMOVE_LOG_DEBUG
 #define OLSR_DEBUG(source, format, args...) do { } while(0)
+#define OLSR_DEBUG_NH(source, format, args...) do { } while(0)
 #else
-#define OLSR_DEBUG(source, format, args...) olsr_log(SEVERITY_DEBUG, source, __FILE__, __LINE__, format, ##args)
+#define OLSR_DEBUG(source, format, args...) olsr_log(SEVERITY_DEBUG, source, false, __FILE__, __LINE__, format, ##args)
+#define OLSR_DEBUG_NH(source, format, args...) olsr_log(SEVERITY_DEBUG, source, true, __FILE__, __LINE__, format, ##args)
 #endif
 
 #ifdef REMOVE_LOG_INFO
 #define OLSR_INFO(source, format, args...) do { } while(0)
+#define OLSR_INFO_NH(source, format, args...) do { } while(0)
 #else
-#define OLSR_INFO(source, format, args...) olsr_log(SEVERITY_INFO, source, __FILE__, __LINE__, format, ##args)
+#define OLSR_INFO(source, format, args...) olsr_log(SEVERITY_INFO, source, false, __FILE__, __LINE__, format, ##args)
+#define OLSR_INFO_NH(source, format, args...) olsr_log(SEVERITY_INFO, source, true, __FILE__, __LINE__, format, ##args)
 #endif
 
 #ifdef REMOVE_LOG_WARN
 #define OLSR_WARN(source, format, args...) do { } while(0)
+#define OLSR_WARN_NH(source, format, args...) do { } while(0)
 #else
-#define OLSR_WARN(source, format, args...) olsr_log(SEVERITY_WARN, source, __FILE__, __LINE__, format, ##args)
+#define OLSR_WARN(source, format, args...) olsr_log(SEVERITY_WARN, source, false, __FILE__, __LINE__, format, ##args)
+#define OLSR_WARN_NH(source, format, args...) olsr_log(SEVERITY_WARN, source, true, __FILE__, __LINE__, format, ##args)
 #endif
 
 #ifdef REMOVE_LOG_ERROR
 #define OLSR_ERROR(source, format, args...) do { } while(0)
+#define OLSR_ERROR_NH(source, format, args...) do { } while(0)
 #else
-#define OLSR_ERROR(source, format, args...) olsr_log(SEVERITY_ERR, source, __FILE__, __LINE__, format, ##args)
+#define OLSR_ERROR(source, format, args...) olsr_log(SEVERITY_ERR, source, false, __FILE__, __LINE__, format, ##args)
+#define OLSR_ERROR_NH(source, format, args...) olsr_log(SEVERITY_ERR, source, true, __FILE__, __LINE__, format, ##args)
 #endif
 
 void EXPORT(olsr_log_init) (void);
 void EXPORT(olsr_log_cleanup) (void);
-void EXPORT(olsr_log_addhandler) (void (*handler)(enum log_severity, enum log_source, const char *, int,
-    char *, int), bool (*mask)[LOG_SEVERITY_COUNT][LOG_SOURCE_COUNT]);
-void EXPORT(olsr_log_removehandler) (void (*handler)(enum log_severity, enum log_source, const char *, int,
-    char *, int));
+void EXPORT(olsr_log_addhandler) (void (*handler)(enum log_severity, enum log_source, bool,
+    const char *, int, char *, int), bool (*mask)[LOG_SEVERITY_COUNT][LOG_SOURCE_COUNT]);
+void EXPORT(olsr_log_removehandler) (void (*handler)(enum log_severity, enum log_source, bool,
+    const char *, int, char *, int));
 void EXPORT(olsr_log_updatemask) (void);
 
-void EXPORT(olsr_log) (enum log_severity, enum log_source, const char *, int, const char * , ...)
-    __attribute__((format(printf, 5, 6)));
+void EXPORT(olsr_log) (enum log_severity, enum log_source, bool, const char *, int, const char * , ...)
+    __attribute__((format(printf, 6, 7)));
 
 #endif /* OLSR_LOGGING_H_ */