diff options
author | Damjan Marion <damarion@cisco.com> | 2023-05-26 19:06:10 +0000 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2023-05-27 17:41:28 +0000 |
commit | bf179a91d8d224c64d08643a2bb52580f68ce96b (patch) | |
tree | a4ea1a8960d5da124e28920921183171ee48fe15 | |
parent | 2355e4973365b0ea3f14737f894636973e656b16 (diff) |
vlib: add vlib_log_is_enabled
Type: improvement
Change-Id: I052e0d56cc6d89cd66c83a9bb81e2273d396d510
Signed-off-by: Damjan Marion <damarion@cisco.com>
-rw-r--r-- | src/vlib/log.c | 26 | ||||
-rw-r--r-- | src/vlib/log.h | 28 |
2 files changed, 34 insertions, 20 deletions
diff --git a/src/vlib/log.c b/src/vlib/log.c index 341f8095106..01149a8af49 100644 --- a/src/vlib/log.c +++ b/src/vlib/log.c @@ -70,27 +70,12 @@ last_log_entry () i += lm->size; return i; } - -static vlib_log_class_data_t * -get_class_data (vlib_log_class_t ci) -{ - vlib_log_main_t *lm = &log_main; - return vec_elt_at_index (lm->classes, (ci >> 16)); -} - -static vlib_log_subclass_data_t * -get_subclass_data (vlib_log_class_t ci) -{ - vlib_log_class_data_t *c = get_class_data (ci); - return vec_elt_at_index (c->subclasses, (ci & 0xffff)); -} - u8 * format_vlib_log_class (u8 * s, va_list * args) { vlib_log_class_t ci = va_arg (*args, vlib_log_class_t); - vlib_log_class_data_t *c = get_class_data (ci); - vlib_log_subclass_data_t *sc = get_subclass_data (ci); + vlib_log_class_data_t *c = vnet_log_get_class_data (ci); + vlib_log_subclass_data_t *sc = vlib_log_get_subclass_data (ci); if (sc->name) return format (s, "%v/%v", c->name, sc->name); @@ -133,7 +118,7 @@ vlib_log (vlib_log_level_t level, vlib_log_class_t class, char *fmt, ...) vlib_main_t *vm = vlib_get_main (); vlib_log_main_t *lm = &log_main; vlib_log_entry_t *e; - vlib_log_subclass_data_t *sc = get_subclass_data (class); + vlib_log_subclass_data_t *sc = vlib_log_get_subclass_data (class); va_list va; f64 t = vlib_time_now (vm); f64 delta = t - sc->last_event_timestamp; @@ -381,9 +366,10 @@ vlib_log_init (vlib_main_t *vm) { r->class = vlib_log_register_class (r->class_name, r->subclass_name); if (r->default_level) - get_subclass_data (r->class)->level = r->default_level; + vlib_log_get_subclass_data (r->class)->level = r->default_level; if (r->default_syslog_level) - get_subclass_data (r->class)->syslog_level = r->default_syslog_level; + vlib_log_get_subclass_data (r->class)->syslog_level = + r->default_syslog_level; r = r->next; } diff --git a/src/vlib/log.h b/src/vlib/log.h index 0ded4a8ec84..d9eb841a9a3 100644 --- a/src/vlib/log.h +++ b/src/vlib/log.h @@ -149,6 +149,34 @@ __vlib_add_log_registration_##x (void) \ } \ __VA_ARGS__ vlib_log_class_registration_t x +static_always_inline vlib_log_class_data_t * +vnet_log_get_class_data (vlib_log_class_t ci) +{ + vlib_log_main_t *lm = &log_main; + return vec_elt_at_index (lm->classes, (ci >> 16)); +} + +static_always_inline vlib_log_subclass_data_t * +vlib_log_get_subclass_data (vlib_log_class_t ci) +{ + vlib_log_class_data_t *c = vnet_log_get_class_data (ci); + return vec_elt_at_index (c->subclasses, (ci & 0xffff)); +} + +static_always_inline int +vlib_log_is_enabled (vlib_log_level_t level, vlib_log_class_t class) +{ + vlib_log_subclass_data_t *sc = vlib_log_get_subclass_data (class); + + if (level <= sc->level && sc->level != VLIB_LOG_LEVEL_DISABLED) + return 1; + + if (level <= sc->syslog_level && sc->syslog_level != VLIB_LOG_LEVEL_DISABLED) + return 1; + + return 0; +} + #endif /* included_vlib_log_h */ /* |