]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: server: convert @reverse to rev@ standard format
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 19 Oct 2023 09:07:15 +0000 (11:07 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 20 Oct 2023 12:44:37 +0000 (14:44 +0200)
Remove the recently introduced '@reverse' notation for HTTP reverse
servers. Instead, reuse the 'rev@' prefix already defined for bind
lines.

doc/configuration.txt
include/haproxy/proto_reverse_connect.h
reg-tests/connection/reverse_connect_full.vtc
reg-tests/connection/reverse_server.vtc
reg-tests/connection/reverse_server_name.vtc
src/proto_reverse_connect.c
src/server.c

index 25683f4847f2d17140eda73ade44a2eca0dfa9a8..7ef9d724f1e55e2ba3a1751cfd733881c535e140 100644 (file)
@@ -11534,18 +11534,13 @@ server <name> <address>[:[port]] [param*]
                       one of them over the FD. The bind part will use the
                       received socket as the client FD. Should be used
                       carefully.
+                    - 'rev@'   -> custom address family for a passive server in
+                      HTTP reverse context.
               You may want to reference some environment variables in the
               address parameter, see section 2.3 about environment
               variables. The "init-addr" setting can be used to modify the way
               IP addresses should be resolved upon startup.
 
-              Additionally, there is a special address notation defined for
-              servers which does not have any address assigned. Currently, only
-              '@reverse' is valid. This instantiates a server which can only be
-              used with reverse connect. This mode requires the proxy to be in
-              HTTP mode and the server to explicitly use HTTP/2, either through
-              'proto' or 'alpn' keywords.
-
     <port>    is an optional port specification. If set, all connections will
               be sent to this port. If unset, the same port the client
               connected to will be used. The port may also be prefixed by a "+"
index 0c07356e090408312df8aa3a550a24c316411403..a2113d35c10c66c96b3722696509d1da682db3be 100644 (file)
@@ -14,6 +14,8 @@ struct connection *rev_accept_conn(struct listener *l, int *status);
 void rev_unbind_receiver(struct listener *l);
 int rev_set_affinity(struct connection *conn, int new_tid);
 
+int rev_connect(struct connection *conn, int flags);
+
 int rev_accepting_conn(const struct receiver *rx);
 
 void rev_notify_preconn_err(struct listener *l);
index e8b051ba5388efdfe6d2b005d0c225f6e0d81904..1124f6a4671b346b9dea303026f90178b337145f 100644 (file)
@@ -21,7 +21,7 @@ frontend pub
        use_backend be-reverse
 
 backend be-reverse
-       server dev @reverse
+       server dev rev@
 
 frontend priv
        bind "fd@${priv}" proto h2
index 40ddc49d3de2d465007997974ce2ff3ef2854dd4..43edcdfeafee1899f085ebf695c324ef12ca8bec 100644 (file)
@@ -18,7 +18,7 @@ frontend pub
        use_backend be-reverse
 
 backend be-reverse
-       server dev @reverse
+       server dev rev@
 
 frontend priv
        bind "fd@${priv}" proto h2
index b8d5cf885c158329c1c9e4f0c6ed7eddae896d61..76473d541658f577105549916717e421b708c973 100644 (file)
@@ -19,7 +19,7 @@ frontend pub
        use_backend be-reverse
 
 backend be-reverse
-       server dev @reverse ssl sni hdr(x-name) verify none
+       server dev rev@ ssl sni hdr(x-name) verify none
 
 frontend priv
        bind "fd@${priv}" ssl crt ${testdir}/common.pem verify required ca-verify-file ${testdir}/ca-auth.crt alpn h2
index 293c13418ea4b459705d2a355678305719362ee5..e02620476c26cf8a1d76d937a284c534588de859 100644 (file)
@@ -36,6 +36,8 @@ struct protocol proto_reverse_connect = {
        .accept_conn = rev_accept_conn,
        .set_affinity = rev_set_affinity,
 
+       .connect     = rev_connect,
+
        /* address family */
        .fam  = &proto_fam_reverse_connect,
 
@@ -343,6 +345,12 @@ int rev_set_affinity(struct connection *conn, int new_tid)
        return -1;
 }
 
+/* Simple callback to enable definition of passive HTTP reverse servers. */
+int rev_connect(struct connection *conn, int flags)
+{
+       return SF_ERR_NONE;
+}
+
 int rev_accepting_conn(const struct receiver *rx)
 {
        return 1;
index 3c40ca7fe6d339d74a88a2f761a843d1b9e61783..e7ce3d70b2899100fa5fd957b51ce69b3ca75e13 100644 (file)
@@ -2805,22 +2805,6 @@ static int _srv_parse_init(struct server **srv, char **args, int *cur_arg,
                else
                        newsrv->tmpl_info.prefix = strdup(args[1]);
 
-               /* special address specifier */
-               if (args[*cur_arg][0] == '@') {
-                       if (strcmp(args[*cur_arg], "@reverse") == 0) {
-                               newsrv->flags |= SRV_F_REVERSE;
-                       }
-                       else {
-                               ha_alert("unknown server address specifier '%s'\n",
-                                        args[*cur_arg]);
-                               err_code |= ERR_ALERT | ERR_FATAL;
-                               goto out;
-                       }
-
-                       (*cur_arg)++;
-                       parse_flags &= ~SRV_PARSE_PARSE_ADDR;
-               }
-
                /* several ways to check the port component :
                 *  - IP    => port=+0, relative (IPv4 only)
                 *  - IP:   => port=+0, relative
@@ -2845,8 +2829,13 @@ static int _srv_parse_init(struct server **srv, char **args, int *cur_arg,
                }
 
                if (!port1 || !port2) {
-                       /* no port specified, +offset, -offset */
-                       newsrv->flags |= SRV_F_MAPPORTS;
+                       if (sk->ss_family != AF_CUST_REV_SRV) {
+                               /* no port specified, +offset, -offset */
+                               newsrv->flags |= SRV_F_MAPPORTS;
+                       }
+                       else {
+                               newsrv->flags |= SRV_F_REVERSE;
+                       }
                }
 
                /* save hostname and create associated name resolution */