From: Willy Tarreau Date: Tue, 29 Mar 2022 13:36:56 +0000 (+0200) Subject: MINOR: acl: add a function to dump the list of known ACL keywords X-Git-Tag: v2.6-dev5~110 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6ff7d1b9a50ceb2032068d102abd390b33cc3885;p=thirdparty%2Fhaproxy.git MINOR: acl: add a function to dump the list of known ACL keywords New function acl_dump_kwd() dumps the registered ACL keywords and their sample-fetch equivalent to stdout. It's called by dump_registered_keywords() for keyword class "acl". --- diff --git a/include/haproxy/acl.h b/include/haproxy/acl.h index ab96d1995e..07a23153d0 100644 --- a/include/haproxy/acl.h +++ b/include/haproxy/acl.h @@ -146,6 +146,8 @@ void acl_unregister_keywords(struct acl_kw_list *kwl); */ int init_acl(void); +void acl_dump_kwd(void); + void free_acl_cond(struct acl_cond *cond); #endif /* _HAPROXY_ACL_H */ diff --git a/src/acl.c b/src/acl.c index 480dd11a8c..77d67172fe 100644 --- a/src/acl.c +++ b/src/acl.c @@ -1308,6 +1308,24 @@ int init_acl() return err; } +/* dump known ACL keywords on stdout */ +void acl_dump_kwd(void) +{ + struct acl_kw_list *kwl; + const char *name; + int index; + + list_for_each_entry(kwl, &acl_keywords.list, list) { + for (index = 0; kwl->kw[index].kw != NULL; index++) { + name = kwl->kw[index].fetch_kw; + if (!name) + name = kwl->kw[index].kw; + + printf("%s = %s -m %s\n", kwl->kw[index].kw, name, pat_match_names[kwl->kw[index].match_type]); + } + } +} + void free_acl_cond(struct acl_cond *cond) { struct acl_term_suite *suite, *suiteb; diff --git a/src/haproxy.c b/src/haproxy.c index 16fafc393f..72c065ea59 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1825,6 +1825,7 @@ static void dump_registered_keywords(void) if (strcmp(kwd_dump, "help") == 0) { printf("# List of supported keyword classes:\n"); printf("all: list all keywords\n"); + printf("acl: ACL keywords\n"); printf("cfg: configuration keywords\n"); printf("cli: CLI keywords\n"); printf("flt: filter names\n"); @@ -1835,6 +1836,11 @@ static void dump_registered_keywords(void) all = 1; } + if (all || strcmp(kwd_dump, "acl") == 0) { + printf("# List of registered ACL keywords:\n"); + acl_dump_kwd(); + } + if (all || strcmp(kwd_dump, "cfg") == 0) { printf("# List of registered configuration keywords:\n"); cfg_dump_registered_keywords();