]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: log: add log_orig_proxy() helper function
authorAurelien DARRAGON <adarragon@haproxy.com>
Wed, 4 Sep 2024 10:15:21 +0000 (12:15 +0200)
committerAurelien DARRAGON <adarragon@haproxy.com>
Thu, 26 Sep 2024 14:53:07 +0000 (16:53 +0200)
Function may be used on proxy where log-steps are used to check if a given
log origin should be handled or not.

include/haproxy/log.h
src/log.c

index 86f5b9c5f61f248c5c3c94e0b6bd93f5dab11383..bb4d5f69476d358027298ad45a5b8a9c8989ba6c 100644 (file)
@@ -66,6 +66,7 @@ int init_log_buffers(void);
 void deinit_log_buffers(void);
 
 const char *log_orig_to_str(enum log_orig_id orig);
+int log_orig_proxy(enum log_orig_id orig, struct proxy *px);
 
 void lf_expr_init(struct lf_expr *expr);
 int lf_expr_dup(const struct lf_expr *orig, struct lf_expr *dest);
index 9e01ea3d1985c6c37047d6d1c0cb1844fad45f2a..0f35aa20984a975dada5cd5adf85b8798ad996a5 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -128,6 +128,27 @@ const char *log_orig_to_str(enum log_orig_id orig)
        return "unspec";
 }
 
+/* Check if <orig> log origin is set for logging on <px>
+ *
+ * It is assumed that the caller already checked that log-steps were
+ * enabled on the proxy (do_log special value LW_LOGSTEPS)
+ *
+ * Returns 1 for true and 0 for false
+ */
+int log_orig_proxy(enum log_orig_id orig, struct proxy *px)
+{
+       if (eb_is_empty(&px->conf.log_steps)) {
+               /* empty tree means all log steps are enabled, thus
+                * all log origins are considered
+                */
+               return 1;
+       }
+       /* selectively check if the current log origin is referenced in
+        * proxy log-steps
+        */
+       return !!eb32_lookup(&px->conf.log_steps, orig);
+}
+
 /*
  * This map is used with all the FD_* macros to check whether a particular bit
  * is set or not. Each bit represents an ASCII code. ha_bit_set() sets those