MINOR: Add support for UUIDv7 to the uuid sample fetch

This adds support for UUIDv7 to the existing `uuid` sample fetch that was added
in 8a694b859c.
This commit is contained in:
Tim Duesterhus 2024-04-19 21:01:27 +02:00 committed by Willy Tarreau
parent aab6477b67
commit 3ef60012ae
2 changed files with 32 additions and 13 deletions

View File

@ -21306,7 +21306,8 @@ txn.sess_term_state : string
uuid([<version>]) : string
Returns a UUID following the RFC4122 standard. If the version is not
specified, a UUID version 4 (fully random) is returned.
Currently, only version 4 is supported.
Versions 4 and 7 are supported.
var(<var-name>[,<default>]) : undefined
Returns a variable with the stored type. If the variable is not set, the

View File

@ -4781,10 +4781,15 @@ static int smp_check_uuid(struct arg *args, char **err)
if (!args[0].type) {
args[0].type = ARGT_SINT;
args[0].data.sint = 4;
}
else if (args[0].data.sint != 4) {
memprintf(err, "Unsupported UUID version: '%lld'", args[0].data.sint);
return 0;
} else {
switch (args[0].data.sint) {
case 4:
case 7:
break;
default:
memprintf(err, "Unsupported UUID version: '%lld'", args[0].data.sint);
return 0;
}
}
return 1;
@ -4793,16 +4798,29 @@ static int smp_check_uuid(struct arg *args, char **err)
// Generate a RFC4122 UUID (default is v4 = fully random)
static int smp_fetch_uuid(const struct arg *args, struct sample *smp, const char *kw, void *private)
{
if (args[0].data.sint == 4 || !args[0].type) {
ha_generate_uuid_v4(&trash);
smp->data.type = SMP_T_STR;
smp->flags = SMP_F_VOL_TEST | SMP_F_MAY_CHANGE;
smp->data.u.str = trash;
return 1;
long long int type = -1;
if (!args[0].type) {
type = 4;
} else {
type = args[0].data.sint;
}
// more implementations of other uuid formats possible here
return 0;
switch (type) {
case 4:
ha_generate_uuid_v4(&trash);
break;
case 7:
ha_generate_uuid_v7(&trash);
break;
default:
return 0;
}
smp->data.type = SMP_T_STR;
smp->flags = SMP_F_VOL_TEST | SMP_F_MAY_CHANGE;
smp->data.u.str = trash;
return 1;
}
/* Check if QUIC support was compiled and was not disabled by "no-quic" global option */