]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: checks: Add the default option for tcp-check connect rules
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 30 Mar 2020 11:54:42 +0000 (13:54 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Mon, 27 Apr 2020 07:39:37 +0000 (09:39 +0200)
With this option, it is possible to open a connection from a tcp-check connect
rule using all parameter of the server line, like any other healthcheck. For
now, this parameter is exclusive with all other option for a tcp-check connect
rule.

doc/configuration.txt
src/checks.c

index 327399dd0a2512ad68ce6a4fef8b71d9bb3b48eb..bc5f88ad25a62e4e0e4141a2682db56adf2d09e3 100644 (file)
@@ -9818,6 +9818,9 @@ tcp-check connect [params*]
     They are optional and can be used to describe how HAProxy should open and
     use the TCP connection.
 
+    default      Use default options of the server line to do the health
+                 checks. This parameter is exclusive with all other options.
+
     port      if not set, check port or server port is used.
               It tells HAProxy where to open the connection to.
               <port> must be a valid TCP port source integer, from 1 to 65535.
index e396036407e33f8a120d796dd9eb4426fda4dca8..7ac6611497b8d459b00034fc832567b678147f6b 100644 (file)
@@ -4099,7 +4099,14 @@ static struct tcpcheck_rule *parse_tcpcheck_connect(char **args, int cur_arg, st
 
        cur_arg++;
        while (*(args[cur_arg])) {
-               if (strcmp(args[cur_arg], "port") == 0) {
+               if (strcmp(args[cur_arg], "default") == 0) {
+                       if (cur_arg != 2 || *(args[cur_arg+1])) {
+                               memprintf(errmsg, "'%s' is exclusive with all other options", args[cur_arg]);
+                               goto error;
+                       }
+                       conn_opts = TCPCHK_OPT_DEFAULT_CONNECT;
+               }
+               else if (strcmp(args[cur_arg], "port") == 0) {
                        if (!*(args[cur_arg+1])) {
                                memprintf(errmsg, "'%s' expects a port number as argument.", args[cur_arg]);
                                goto error;
@@ -4168,7 +4175,7 @@ static struct tcpcheck_rule *parse_tcpcheck_connect(char **args, int cur_arg, st
 #ifdef USE_OPENSSL
                                  ", 'ssl', 'sni', 'alpn'"
 #endif /* USE_OPENSSL */
-                                 " or 'via-socks4', 'linger' but got '%s' as argument.",
+                                 " or 'via-socks4', 'linger', 'default' but got '%s' as argument.",
                                  args[cur_arg]);
                        goto error;
                }