From: Willy Tarreau Date: Wed, 30 Mar 2022 09:19:22 +0000 (+0200) Subject: MINOR: action: add a function to dump the list of actions for a ruleset X-Git-Tag: v2.6-dev5~106 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2100b383ab849ae88090909b1654afdf87aa7885;p=thirdparty%2Fhaproxy.git MINOR: action: add a function to dump the list of actions for a ruleset The new function dump_act_rules() now dumps the list of actions supported by a ruleset. These actions are alphanumerically sorted first so that the produced output is easy to compare. --- diff --git a/include/haproxy/action.h b/include/haproxy/action.h index eed440d8e3..8a35664f40 100644 --- a/include/haproxy/action.h +++ b/include/haproxy/action.h @@ -114,5 +114,6 @@ static inline void release_timeout_action(struct act_rule *rule) struct act_rule *new_act_rule(enum act_from from, const char *file, int linenum); void free_act_rules(struct list *rules); +void dump_act_rules(const struct list *rules, const char *pfx); #endif /* _HAPROXY_ACTION_H */ diff --git a/src/action.c b/src/action.c index 74f5387b9c..4ee23c5479 100644 --- a/src/action.c +++ b/src/action.c @@ -321,3 +321,28 @@ void free_act_rules(struct list *rules) free_act_rule(rule); } } + +/* dumps all known actions registered in action rules after prefix + * to stdout. The actions are alphabetically sorted. Those with the + * KWF_MATCH_PREFIX flag have their name suffixed with '*'. + */ +void dump_act_rules(const struct list *rules, const char *pfx) +{ + const struct action_kw *akwp, *akwn; + struct action_kw_list *akwl; + int index; + + for (akwn = akwp = NULL;; akwp = akwn) { + list_for_each_entry(akwl, rules, list) { + for (index = 0; akwl->kw[index].kw != NULL; index++) + if (strordered(akwp ? akwp->kw : NULL, + akwl->kw[index].kw, + akwn != akwp ? akwn->kw : NULL)) + akwn = &akwl->kw[index]; + } + if (akwn == akwp) + break; + printf("%s%s%s\n", pfx ? pfx : "", akwn->kw, + (akwn->flags & KWF_MATCH_PREFIX) ? "*" : ""); + } +}