Finer grained logging levels:
#define L_DEBUG "\001" /* Debugging messages */ #define L_INFO "\002" /* Informational messages */ #define L_WARN "\003" /* Warnings */ #define L_ERR "\004" /* Errors */ #define L_AUTH "\005" /* Authorization failed etc. */ #define L_FATAL "\006" /* Fatal errors */ #define L_TRACE "\002" /* Protocol tracing */ #define L_INFO "\003" /* Informational messages */ #define L_REMOTE "\004" /* Remote protocol errors */ #define L_WARN "\004" /* Local warnings */ #define L_ERR "\005" /* Local errors */ #define L_AUTH "\006" /* Authorization failed etc. */ #define L_FATAL "\007" /* Fatal errors */ #define L_BUG "\010" /* BIRD bugs */ Introduced bug() which is like die(), but with level L_BUG. Protocols should _never_ call die() as it should be used only during initialization and on irrecoverable catastrophic events like out of memory. Also introduced ASSERT() which behaves like normal assert(), but it calls bug() when assertion fails. When !defined(DEBUGGING), it gets ignored.
This commit is contained in:
parent
e440395d7d
commit
98e87c8628
3 changed files with 32 additions and 10 deletions
8
TODO
8
TODO
|
@ -1,12 +1,12 @@
|
||||||
Core
|
Core
|
||||||
~~~~
|
~~~~
|
||||||
* right usage of DBG vs. debug
|
* right usage of DBG vs. debug
|
||||||
* cleanup debugging calls!
|
* cleanup debugging calls
|
||||||
|
* logging and tracing; use appropriate log levels
|
||||||
|
* check log calls for trailing newlines
|
||||||
|
|
||||||
- TOS not supported by kernel -> automatically drop routes with TOS<>0
|
- TOS not supported by kernel -> automatically drop routes with TOS<>0
|
||||||
|
|
||||||
- use -freg-struct-return ?
|
|
||||||
|
|
||||||
- fake multipath?
|
- fake multipath?
|
||||||
- replace all NUM's by expr's
|
- replace all NUM's by expr's
|
||||||
- config file: define ipaddr constants?
|
- config file: define ipaddr constants?
|
||||||
|
@ -25,6 +25,8 @@ Core
|
||||||
- static: check validity of route destination?
|
- static: check validity of route destination?
|
||||||
- static: device routes
|
- static: device routes
|
||||||
|
|
||||||
|
- device: configuration of interface patterns
|
||||||
|
|
||||||
- filter: logging of dropped routes (?)
|
- filter: logging of dropped routes (?)
|
||||||
- limitation of memory consumption: per-process and total (?)
|
- limitation of memory consumption: per-process and total (?)
|
||||||
- adding of route: check whether all bits not covered by masklen are zero
|
- adding of route: check whether all bits not covered by masklen are zero
|
||||||
|
|
|
@ -27,13 +27,17 @@
|
||||||
|
|
||||||
void log(char *msg, ...);
|
void log(char *msg, ...);
|
||||||
void die(char *msg, ...) NORET;
|
void die(char *msg, ...) NORET;
|
||||||
|
void bug(char *msg, ...) NORET;
|
||||||
|
|
||||||
#define L_DEBUG "\001" /* Debugging messages */
|
#define L_DEBUG "\001" /* Debugging messages */
|
||||||
#define L_INFO "\002" /* Informational messages */
|
#define L_TRACE "\002" /* Protocol tracing */
|
||||||
#define L_WARN "\003" /* Warnings */
|
#define L_INFO "\003" /* Informational messages */
|
||||||
#define L_ERR "\004" /* Errors */
|
#define L_REMOTE "\004" /* Remote protocol errors */
|
||||||
#define L_AUTH "\005" /* Authorization failed etc. */
|
#define L_WARN "\004" /* Local warnings */
|
||||||
#define L_FATAL "\006" /* Fatal errors */
|
#define L_ERR "\005" /* Local errors */
|
||||||
|
#define L_AUTH "\006" /* Authorization failed etc. */
|
||||||
|
#define L_FATAL "\007" /* Fatal errors */
|
||||||
|
#define L_BUG "\010" /* BIRD bugs */
|
||||||
|
|
||||||
void log_init(char *); /* Initialize logging to given file (NULL=stderr, ""=syslog) */
|
void log_init(char *); /* Initialize logging to given file (NULL=stderr, ""=syslog) */
|
||||||
void log_init_debug(char *); /* Initialize debug dump to given file (NULL=stderr, ""=off) */
|
void log_init_debug(char *); /* Initialize debug dump to given file (NULL=stderr, ""=off) */
|
||||||
|
@ -48,4 +52,10 @@ void debug(char *msg, ...); /* Printf to debug output */
|
||||||
#define DBG(x, y...)
|
#define DBG(x, y...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUGGING
|
||||||
|
#define ASSERT(x) do { if (!(x)) bug("Assertion `%s' failed at %s:%d", #x, __FILE__, __LINE__); } while(0)
|
||||||
|
#else
|
||||||
|
#define ASSERT(x) do { } while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -107,19 +107,29 @@ log(char *msg, ...)
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start(args, msg);
|
va_start(args, msg);
|
||||||
if (*msg >= 1 && *msg <= 6)
|
if (*msg >= 1 && *msg <= 8)
|
||||||
class = *msg++;
|
class = *msg++;
|
||||||
vlog(class, msg, args);
|
vlog(class, msg, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
bug(char *msg, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start(args, msg);
|
||||||
|
vlog(L_BUG[0], msg, args);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
die(char *msg, ...)
|
die(char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start(args, msg);
|
va_start(args, msg);
|
||||||
vlog(6, msg, args);
|
vlog(L_FATAL[0], msg, args);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue