]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: prepare support for options on FE/BE side
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 31 Jul 2025 15:14:40 +0000 (17:14 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 23 Oct 2025 13:06:01 +0000 (15:06 +0200)
A major reorganization of QUIC settings is going to be performed. One of
its objective is to clearly define options which can be separately
configured on frontend and backend proxy sides.

To implement this, quic_tune structure is extended to support fe and be
options. A set of macros/functions is also defined : it allows to
retrieve an option defined on both sides with unified code, based on
proxy side of a quic_conn/connection instance.

include/haproxy/quic_tune-t.h
include/haproxy/quic_tune.h

index 04bd38b660c50f31829e932363a5d8264a6703a3..931248bbfc7b73d6fbd57c36cf74815ab3eb7515 100644 (file)
 #define QUIC_TUNE_CC_HYSTART    0x00000008
 
 struct quic_tune {
+       struct {
+               uint fb_opts; /* QUIC_TUNE_FB_* options shared by both side */
+       } fe;
+
+       struct {
+               uint fb_opts; /* QUIC_TUNE_FB_* options shared by both side */
+       } be;
+
        uint options;
 };
 
index 7177a9dcb5940e921e8a461920fc506bbe12ffd5..47b162c0ee04dc26bde086a1e33e9b0524416d31 100644 (file)
@@ -8,8 +8,31 @@
 
 #include <haproxy/quic_tune-t.h>
 
+#include <haproxy/api.h>
+#include <haproxy/connection.h>
+#include <haproxy/obj_type.h>
+#include <haproxy/quic_conn-t.h>
+
 extern struct quic_tune quic_tune;
 
+#define QUIC_TUNE_FB_GET(opt, qc) \
+       (!((qc)->flags & QUIC_FL_CONN_IS_BACK) ? quic_tune.fe. opt : quic_tune.be. opt)
+
+static inline int quic_tune_test(int opt, const struct quic_conn *qc)
+{
+       return !(qc->flags & QUIC_FL_CONN_IS_BACK) ?
+         quic_tune.fe.fb_opts & opt : quic_tune.be.fb_opts & opt;
+}
+
+#define QUIC_TUNE_FB_CONN_GET(opt, conn) \
+       (!(conn_is_back(conn)) ? quic_tune.fe. opt : quic_tune.be. opt)
+
+static inline int quic_tune_conn_test(int opt, const struct connection *conn)
+{
+       return !(conn_is_back(conn)) ?
+         quic_tune.fe.fb_opts & opt : quic_tune.be.fb_opts & opt;
+}
+
 #endif /* USE_QUIC */
 
 #endif /* _HAPROXY_QUIC_TUNE_H */