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.
This commit is contained in:
Willy Tarreau 2022-03-30 11:19:22 +02:00
parent 3ff476e9ef
commit 2100b383ab
2 changed files with 26 additions and 0 deletions

View File

@ -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 */

View File

@ -321,3 +321,28 @@ void free_act_rules(struct list *rules)
free_act_rule(rule);
}
}
/* dumps all known actions registered in action rules <rules> after prefix
* <pfx> 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) ? "*" : "");
}
}