mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
MINOR: sample: list registered sample converter functions
Similar to the sample fetch keywords, let's also list the converter keywords. They're much simpler since there's no compatibility matrix. Instead the input and output types are listed. This is called by dump_registered_keywords() for the "cnv" keywords class.
This commit is contained in:
parent
f78813f74f
commit
29d799d591
@ -50,6 +50,7 @@ const char *sample_src_names(unsigned int use);
|
|||||||
const char *sample_ckp_names(unsigned int use);
|
const char *sample_ckp_names(unsigned int use);
|
||||||
struct sample_fetch *find_sample_fetch(const char *kw, int len);
|
struct sample_fetch *find_sample_fetch(const char *kw, int len);
|
||||||
void smp_dump_fetch_kw(void);
|
void smp_dump_fetch_kw(void);
|
||||||
|
void smp_dump_conv_kw(void);
|
||||||
struct sample_fetch *sample_fetch_getnext(struct sample_fetch *current, int *idx);
|
struct sample_fetch *sample_fetch_getnext(struct sample_fetch *current, int *idx);
|
||||||
struct sample_conv *sample_conv_getnext(struct sample_conv *current, int *idx);
|
struct sample_conv *sample_conv_getnext(struct sample_conv *current, int *idx);
|
||||||
int smp_resolve_args(struct proxy *p, char **err);
|
int smp_resolve_args(struct proxy *p, char **err);
|
||||||
|
@ -1828,6 +1828,7 @@ static void dump_registered_keywords(void)
|
|||||||
printf("acl: ACL keywords\n");
|
printf("acl: ACL keywords\n");
|
||||||
printf("cfg: configuration keywords\n");
|
printf("cfg: configuration keywords\n");
|
||||||
printf("cli: CLI keywords\n");
|
printf("cli: CLI keywords\n");
|
||||||
|
printf("cnv: sample converter keywords\n");
|
||||||
printf("flt: filter names\n");
|
printf("flt: filter names\n");
|
||||||
printf("smp: sample fetch functions\n");
|
printf("smp: sample fetch functions\n");
|
||||||
printf("svc: service names\n");
|
printf("svc: service names\n");
|
||||||
@ -1852,6 +1853,11 @@ static void dump_registered_keywords(void)
|
|||||||
cli_list_keywords();
|
cli_list_keywords();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (all || strcmp(kwd_dump, "cnv") == 0) {
|
||||||
|
printf("# List of registered sample converter functions:\n");
|
||||||
|
smp_dump_conv_kw();
|
||||||
|
}
|
||||||
|
|
||||||
if (all || strcmp(kwd_dump, "flt") == 0) {
|
if (all || strcmp(kwd_dump, "flt") == 0) {
|
||||||
printf("# List of registered filter names:\n");
|
printf("# List of registered filter names:\n");
|
||||||
flt_dump_kws(NULL);
|
flt_dump_kws(NULL);
|
||||||
|
39
src/sample.c
39
src/sample.c
@ -495,6 +495,45 @@ void smp_dump_fetch_kw(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* dump list of registered sample converter keywords on stdout */
|
||||||
|
void smp_dump_conv_kw(void)
|
||||||
|
{
|
||||||
|
struct sample_conv_kw_list *kwl;
|
||||||
|
struct sample_conv *kw;
|
||||||
|
uint64_t mask;
|
||||||
|
int index;
|
||||||
|
int arg;
|
||||||
|
|
||||||
|
list_for_each_entry(kwl, &sample_convs.list, list) {
|
||||||
|
for (index = 0; kwl->kw[index].kw != NULL; index++) {
|
||||||
|
kw = &kwl->kw[index];
|
||||||
|
printf("%s", kw->kw);
|
||||||
|
if (kw->arg_mask) {
|
||||||
|
mask = kw->arg_mask >> ARGM_BITS;
|
||||||
|
printf("(");
|
||||||
|
for (arg = 0;
|
||||||
|
arg < ARGM_NBARGS && ((mask >> (arg * ARGT_BITS)) & ARGT_MASK);
|
||||||
|
arg++) {
|
||||||
|
if (arg == (kw->arg_mask & ARGM_MASK)) {
|
||||||
|
/* now dumping extra args */
|
||||||
|
printf("[");
|
||||||
|
}
|
||||||
|
if (arg)
|
||||||
|
printf(",");
|
||||||
|
printf("%s", arg_type_names[(mask >> (arg * ARGT_BITS)) & ARGT_MASK]);
|
||||||
|
}
|
||||||
|
if (arg > (kw->arg_mask & ARGM_MASK)) {
|
||||||
|
/* extra args were dumped */
|
||||||
|
printf("]");
|
||||||
|
}
|
||||||
|
printf(")");
|
||||||
|
}
|
||||||
|
printf(": %s => %s", smp_to_type[kw->out_type], smp_to_type[kw->in_type]);
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* This function browses the list of available sample fetches. <current> is
|
/* This function browses the list of available sample fetches. <current> is
|
||||||
* the last used sample fetch. If it is the first call, it must set to NULL.
|
* the last used sample fetch. If it is the first call, it must set to NULL.
|
||||||
* <idx> is the index of the next sample fetch entry. It is used as private
|
* <idx> is the index of the next sample fetch entry. It is used as private
|
||||||
|
Loading…
x
Reference in New Issue
Block a user