]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: cli: add a new keyword dump function
authorWilly Tarreau <w@1wt.eu>
Tue, 29 Mar 2022 13:25:30 +0000 (15:25 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 29 Mar 2022 16:01:37 +0000 (18:01 +0200)
New function cli_list_keywords() scans the list of registered CLI keywords
and dumps them on stdout. It's now called from dump_registered_keywords()
for the class "cli".

Some keywords are valid for the master, they'll be suffixed with
"[MASTER]". Others are valid for the worker, they'll have "[WORKER]".
Those accessible only in expert mode will show "[EXPERT]" and the
experimental ones will show "[EXPERIM]".

include/haproxy/cli.h
src/cli.c
src/haproxy.c

index 6d66157d4f9b181e69d4fc0c86e1f2e20c8146a1..f202a4f43583b42bb0c7acdddfafbff90addebcc 100644 (file)
@@ -33,6 +33,7 @@
 
 void cli_register_kw(struct cli_kw_list *kw_list);
 struct cli_kw* cli_find_kw_exact(char **args);
+void cli_list_keywords(void);
 
 int cli_has_level(struct appctx *appctx, int level);
 
index 6f617b2fd883c544c84e152f7af08b55b9c3bfb0..9f4b8df5a14756db131bfcec3f6b0de17e40f0ee 100644 (file)
--- a/src/cli.c
+++ b/src/cli.c
@@ -368,6 +368,30 @@ void cli_register_kw(struct cli_kw_list *kw_list)
        LIST_APPEND(&cli_keywords.list, &kw_list->list);
 }
 
+/* list all known keywords on stdout, one per line */
+void cli_list_keywords(void)
+{
+       struct cli_kw_list *kw_list;
+       struct cli_kw *kw;
+       int idx;
+
+       list_for_each_entry(kw_list, &cli_keywords.list, list) {
+               for (kw = &kw_list->kw[0]; kw->str_kw[0]; kw++) {
+                       for (idx = 0; kw->str_kw[idx]; idx++) {
+                               printf("%s ", kw->str_kw[idx]);
+                       }
+                       if (kw->level & (ACCESS_MASTER_ONLY|ACCESS_MASTER))
+                               printf("[MASTER] ");
+                       if (!(kw->level & ACCESS_MASTER_ONLY))
+                               printf("[WORKER] ");
+                       if (kw->level & ACCESS_EXPERT)
+                               printf("[EXPERT] ");
+                       if (kw->level & ACCESS_EXPERIMENTAL)
+                               printf("[EXPERIM] ");
+                       printf("\n");
+               }
+       }
+}
 
 /* allocate a new stats frontend named <name>, and return it
  * (or NULL in case of lack of memory).
index a2b7d91932d8d79d3382e1841d2bd5d45a50a886..16fafc393f307c51446aacc8070ac293fab1c5b0 100644 (file)
@@ -1826,6 +1826,7 @@ static void dump_registered_keywords(void)
                        printf("# List of supported keyword classes:\n");
                        printf("all: list all keywords\n");
                        printf("cfg: configuration keywords\n");
+                       printf("cli: CLI keywords\n");
                        printf("flt: filter names\n");
                        printf("svc: service names\n");
                        continue;
@@ -1839,6 +1840,11 @@ static void dump_registered_keywords(void)
                        cfg_dump_registered_keywords();
                }
 
+               if (all || strcmp(kwd_dump, "cli") == 0) {
+                       printf("# List of registered CLI keywords:\n");
+                       cli_list_keywords();
+               }
+
                if (all || strcmp(kwd_dump, "flt") == 0) {
                        printf("# List of registered filter names:\n");
                        flt_dump_kws(NULL);