From: Willy Tarreau Date: Wed, 28 Aug 2019 05:03:58 +0000 (+0200) Subject: MINOR: trace: support a default callback for the source X-Git-Tag: v2.1-dev2~159 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3da0026d25f54b8f5d7c6c8dd81b85dbd2a18168;p=thirdparty%2Fhaproxy.git MINOR: trace: support a default callback for the source It becomes apparent that most traces will use a single trace pretty print callback, so let's allow the trace source to declare a default one so that it can be omitted from trace calls, and will be used if no other one is specified. --- diff --git a/include/types/trace.h b/include/types/trace.h index e43cb88b99..152cc8ff6c 100644 --- a/include/types/trace.h +++ b/include/types/trace.h @@ -129,6 +129,9 @@ struct trace_source { const char *desc; const struct trace_event *known_events; struct list source_link; // element in list of known trace sources + void (*default_cb)(enum trace_level level, uint64_t mask, + const struct trace_source *src, const struct ist where, + const void *a1, const void *a2, const void *a3, const void *a4); uint32_t arg_def; // argument definitions (sum of TRC_ARG{1..4}_*) const struct trace_lockon_arg *lockon_args; // must be 4 entries if not NULL /* trace configuration, adjusted by "trace " on CLI */ diff --git a/src/trace.c b/src/trace.c index 039bf3a706..e8de89bac5 100644 --- a/src/trace.c +++ b/src/trace.c @@ -184,6 +184,9 @@ void __trace(enum trace_level level, uint64_t mask, struct trace_source *src, co } line[2] = ist("] "); + if (!cb) + cb = src->default_cb; + if (cb) { /* decode function passed, we want to pre-fill the * buffer with the message and let the decode function