]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: acl: add a function to dump the list of known ACL keywords
authorWilly Tarreau <w@1wt.eu>
Tue, 29 Mar 2022 13:36:56 +0000 (15:36 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 29 Mar 2022 16:01:37 +0000 (18:01 +0200)
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".

include/haproxy/acl.h
src/acl.c
src/haproxy.c

index ab96d1995e4f9eb08c37eb7915e998b6e9ec4031..07a23153d0f570ee1d35297772f6d4965f88c017 100644 (file)
@@ -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 */
index 480dd11a8c621b8aba991beca46e9740e2621d0a..77d67172fe51f356ca6335890deaea8999cdd183 100644 (file)
--- 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;
index 16fafc393f307c51446aacc8070ac293fab1c5b0..72c065ea598dd670dcf68b10fc43562696e6e9d8 100644 (file)
@@ -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();