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 */