MINOR: proxy/checks: Move parsing of tcp-check option in checks.c
Parsing of the proxy directive "option tcp-check" have been moved in checks.c.
diff --git a/include/proto/checks.h b/include/proto/checks.h
index cc0ab0b..563e01f 100644
--- a/include/proto/checks.h
+++ b/include/proto/checks.h
@@ -69,6 +69,8 @@
int spoe_prepare_healthcheck_request(char **req, int *len);
int spoe_handle_healthcheck_response(char *frame, size_t size, char *err, int errlen);
+int proxy_parse_tcp_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
+ const char *file, int line);
int proxy_parse_redis_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
const char *file, int line);
int proxy_parse_ssl_hello_chk_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
diff --git a/src/cfgparse-listen.c b/src/cfgparse-listen.c
index 4c8444c..eb175a1 100644
--- a/src/cfgparse-listen.c
+++ b/src/cfgparse-listen.c
@@ -2370,38 +2370,8 @@
goto out;
}
else if (!strcmp(args[1], "tcp-check")) {
- struct tcpcheck_rules *rules = &curproxy->tcpcheck_rules;
-
- /* use raw TCPCHK send/expect to check servers' health */
- if (warnifnotcap(curproxy, PR_CAP_BE, file, linenum, args[1], NULL))
- err_code |= ERR_WARN;
-
- if (rules->flags & TCPCHK_RULES_DEF) {
- /* Only shared ruleset can be inherited from the default section */
- rules->flags = 0;
- rules->list = NULL;
- }
- else if (rules->list && (rules->flags & TCPCHK_RULES_SHARED)) {
- ha_alert("parsing [%s:%d] : A shared tcp-check ruleset alreayd configured.\n", file, linenum);
- err_code |= ERR_ALERT | ERR_FATAL;
- goto out;
- }
-
- if (curproxy != &defproxy && !rules->list) {
- rules->list = calloc(1, sizeof(*rules->list));
- if (!rules->list) {
- ha_alert("parsing [%s:%d] : out of memory.\n", file, linenum);
- err_code |= ERR_ALERT | ERR_FATAL;
- goto out;
- }
- LIST_INIT(rules->list);
- }
-
- free(curproxy->check_req);
- curproxy->check_req = NULL;
- curproxy->options2 &= ~PR_O2_CHK_ANY;
- curproxy->options2 |= PR_O2_TCPCHK_CHK;
- if (alertif_too_many_args_idx(0, 1, file, linenum, args, &err_code))
+ err_code |= proxy_parse_tcp_check_opt(args, 0, curproxy, &defproxy, file, linenum);
+ if (err_code & ERR_FATAL)
goto out;
}
else if (!strcmp(args[1], "external-check")) {
diff --git a/src/checks.c b/src/checks.c
index ceb53ea..240201b 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -5143,6 +5143,50 @@
free(rs);
}
+/* Parses the "option tcp-check" proxy keyword */
+int proxy_parse_tcp_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,
+ const char *file, int line)
+{
+ struct tcpcheck_rules *rules = &curpx->tcpcheck_rules;
+ int err_code = 0;
+
+ if (warnifnotcap(curpx, PR_CAP_BE, file, line, args[cur_arg+1], NULL))
+ err_code |= ERR_WARN;
+
+ if (alertif_too_many_args_idx(0, 1, file, line, args, &err_code))
+ goto out;
+
+ if (rules->flags & TCPCHK_RULES_DEF) {
+ /* Only shared ruleset can be inherited from the default section */
+ rules->flags = 0;
+ rules->list = NULL;
+ }
+ else if (rules->list && (rules->flags & TCPCHK_RULES_SHARED)) {
+ ha_alert("parsing [%s:%d] : A shared tcp-check ruleset alreayd configured.\n", file, line);
+ goto error;
+ }
+
+ if (curpx != defpx && !rules->list) {
+ rules->list = calloc(1, sizeof(*rules->list));
+ if (!rules->list) {
+ ha_alert("parsing [%s:%d] : out of memory.\n", file, line);
+ goto error;
+ }
+ LIST_INIT(rules->list);
+ }
+
+ free(curpx->check_req);
+ curpx->check_req = NULL;
+ curpx->options2 &= ~PR_O2_CHK_ANY;
+ curpx->options2 |= PR_O2_TCPCHK_CHK;
+
+ out:
+ return err_code;
+
+ error:
+ err_code |= ERR_ALERT | ERR_FATAL;
+ goto out;
+}
/* Parses the "option redis-check" proxy keyword */
int proxy_parse_redis_check_opt(char **args, int cur_arg, struct proxy *curpx, struct proxy *defpx,