From: Frédéric Lécaille Date: Thu, 12 Jan 2023 16:55:45 +0000 (+0100) Subject: MINOR: sample: Add "quic_enabled" sample fetch X-Git-Tag: v2.8-dev2~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=33d11c464f65109cc5650ee52ed7b08d7a1c16df;p=thirdparty%2Fhaproxy.git MINOR: sample: Add "quic_enabled" sample fetch This sample fetch returns a boolean. True if the support for QUIC transport protocol was built and if this protocol was not disabled by "no-quic" global option. Must be backported to 2.7. --- diff --git a/doc/configuration.txt b/doc/configuration.txt index 9bd2627217..5d626514f3 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -18846,6 +18846,14 @@ queue([]) : integer possible action could be to reject new users but still accept old ones. See also the "avg_queue", "be_conn", and "be_sess_rate" fetches. +quic_enabled : boolean + Warning: QUIC support in HAProxy is currently experimental. Configuration may + change without deprecation in the future. + + Return true when the support for QUIC transport protocol was compiled and + if this procotol was not disabled by "no-quic" global option. See also "no-quic" + global option. + rand([]) : integer Returns a random integer value within a range of possible values, starting at zero. If the range is not specified, it defaults to 2^32, which diff --git a/src/sample.c b/src/sample.c index 7a612fc033..953e463a4f 100644 --- a/src/sample.c +++ b/src/sample.c @@ -4393,6 +4393,19 @@ static int smp_fetch_uuid(const struct arg *args, struct sample *smp, const char return 0; } +/* Check if QUIC support was compiled and was not disabled by "no-quic" global option */ +static int smp_fetch_quic_enabled(const struct arg *args, struct sample *smp, const char *kw, void *private) +{ + smp->data.type = SMP_T_BOOL; + smp->flags = 0; +#ifdef USE_QUIC + smp->data.u.sint = !(global.tune.options & GTUNE_NO_QUIC); +#else + smp->data.u.sint = 0; +#endif + return smp->data.u.sint; +} + /* Note: must not be declared as its list will be overwritten. * Note: fetches that may return multiple types must be declared as the lowest * common denominator, the type that can be casted into all other ones. For @@ -4407,6 +4420,7 @@ static struct sample_fetch_kw_list smp_kws = {ILH, { { "hostname", smp_fetch_hostname, 0, NULL, SMP_T_STR, SMP_USE_CONST }, { "nbproc", smp_fetch_nbproc,0, NULL, SMP_T_SINT, SMP_USE_CONST }, { "proc", smp_fetch_proc, 0, NULL, SMP_T_SINT, SMP_USE_CONST }, + { "quic_enabled", smp_fetch_quic_enabled, 0, NULL, SMP_T_BOOL, SMP_USE_CONST }, { "thread", smp_fetch_thread, 0, NULL, SMP_T_SINT, SMP_USE_CONST }, { "rand", smp_fetch_rand, ARG1(0,SINT), NULL, SMP_T_SINT, SMP_USE_CONST }, { "stopping", smp_fetch_stopping, 0, NULL, SMP_T_BOOL, SMP_USE_INTRN },