aboutgitcodebugslistschat
path: root/flow.h
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2023-11-30 13:02:13 +1100
committerStefano Brivio <sbrivio@redhat.com>2023-12-04 09:51:12 +0100
commiteb8b1a233beee1e11eb700e2201becc34f913f9e (patch)
tree61cb2f037758c5b2dbdd4f16d9c4e5143610938b /flow.h
parent96590b056087bc634cb3c6bb7d7e1a1b85b7bb08 (diff)
downloadpasst-eb8b1a233beee1e11eb700e2201becc34f913f9e.tar
passt-eb8b1a233beee1e11eb700e2201becc34f913f9e.tar.gz
passt-eb8b1a233beee1e11eb700e2201becc34f913f9e.tar.bz2
passt-eb8b1a233beee1e11eb700e2201becc34f913f9e.tar.lz
passt-eb8b1a233beee1e11eb700e2201becc34f913f9e.tar.xz
passt-eb8b1a233beee1e11eb700e2201becc34f913f9e.tar.zst
passt-eb8b1a233beee1e11eb700e2201becc34f913f9e.zip
flow, tcp: Add logging helpers for connection related messages
Most of the messages logged by the TCP code (be they errors, debug or trace messages) are related to a specific connection / flow. We're fairly consistent about prefixing these with the type of connection and the connection / flow index. However there are a few places where we put the index later in the message or omit it entirely. The template with the prefix is also a little bulky to carry around for every message, particularly for spliced connections. To help keep this consistent, introduce some helpers to log messages linked to a specific flow. It takes the flow as a parameter and adds a uniform prefix to each message. This makes things slightly neater now, but more importantly will help keep formatting consistent as we add more things to the flow table. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'flow.h')
-rw-r--r--flow.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/flow.h b/flow.h
index f3dad53..c820a15 100644
--- a/flow.h
+++ b/flow.h
@@ -43,4 +43,18 @@ union flow;
void flow_table_compact(struct ctx *c, union flow *hole);
+void flow_log_(const struct flow_common *f, int pri, const char *fmt, ...)
+ __attribute__((format(printf, 3, 4)));
+
+#define flow_log(f_, pri, ...) flow_log_(&(f_)->f, (pri), __VA_ARGS__)
+
+#define flow_dbg(f, ...) flow_log((f), LOG_DEBUG, __VA_ARGS__)
+#define flow_err(f, ...) flow_log((f), LOG_ERR, __VA_ARGS__)
+
+#define flow_trace(f, ...) \
+ do { \
+ if (log_trace) \
+ flow_dbg((f), __VA_ARGS__); \
+ } while (0)
+
#endif /* FLOW_H */