MEDIUM: checks: Add a list of vars to set before executing a tpc-check ruleset
A list of variables is now associated to each tcp-check ruleset. It is more a
less a list of set-var expressions. This list may be filled during the
configuration parsing. The listed variables will then be set during each
execution of the tcp-check healthcheck, at the begining, before execution of the
the first tcp-check rule.
This patch is mandatory to convert all protocol checks to tcp-checks. It is a
way to customize shared tcp-check rulesets.
diff --git a/include/proto/checks.h b/include/proto/checks.h
index fb33746..d0c827b 100644
--- a/include/proto/checks.h
+++ b/include/proto/checks.h
@@ -63,6 +63,8 @@
}
void deinit_proxy_tcpcheck(struct proxy *px);
+int dup_tcpcheck_vars(struct list *dst, struct list *src);
+
/* Declared here, but the definitions are in flt_spoe.c */
int spoe_prepare_healthcheck_request(char **req, int *len);
int spoe_handle_healthcheck_response(char *frame, size_t size, char *err, int errlen);
diff --git a/include/types/checks.h b/include/types/checks.h
index 94ce5f2..c44fe8e 100644
--- a/include/types/checks.h
+++ b/include/types/checks.h
@@ -302,10 +302,18 @@
#define TCPCHK_RULES_SHARED 0x00000001 /* Set for shared list of tcp-check rules */
#define TCPCHK_RULES_DEF 0x00000002 /* Ruleset inherited from the default section */
+/* A list of tcp-check vars, to be registered before executing a ruleset */
+struct tcpcheck_var {
+ struct ist name; /* the variable name with the scope */
+ struct sample_data data; /* the data associated to the variable */
+ struct list list; /* element to chain tcp-check vars */
+};
+
/* a list of tcp-check rules */
struct tcpcheck_rules {
- unsigned int flags; /* flags applied to the rules */
- struct list *list; /* the list of tcpcheck_rules */
+ unsigned int flags; /* flags applied to the rules */
+ struct list *list; /* the list of tcpcheck_rules */
+ struct list preset_vars; /* The list of variable to preset before executing the ruleset */
};
/* A list of tcp-check rules with a name */