aboutgitcodebugslistschat
diff options
context:
space:
mode:
-rw-r--r--conf.c3
-rw-r--r--fwd_rule.c16
-rw-r--r--fwd_rule.h20
3 files changed, 21 insertions, 18 deletions
diff --git a/conf.c b/conf.c
index 5aacfe0..0586107 100644
--- a/conf.c
+++ b/conf.c
@@ -902,7 +902,8 @@ dns6:
dir = "Inbound";
info("%s forwarding rules (%s):", dir, pif_name(i));
- fwd_rules_info(c->fwd[i]->rules, c->fwd[i]->count);
+ fwd_rules_dump(info, c->fwd[i]->rules, c->fwd[i]->count,
+ " ", "");
}
}
diff --git a/fwd_rule.c b/fwd_rule.c
index 1413584..777282d 100644
--- a/fwd_rule.c
+++ b/fwd_rule.c
@@ -124,7 +124,6 @@ const union inany_addr *fwd_rule_addr(const struct fwd_rule *rule)
*/
__attribute__((noinline))
#endif
-/* cppcheck-suppress staticFunction */
const char *fwd_rule_fmt(const struct fwd_rule *rule, char *dst, size_t size)
{
const char *percent = *rule->ifname ? "%" : "";
@@ -159,21 +158,6 @@ const char *fwd_rule_fmt(const struct fwd_rule *rule, char *dst, size_t size)
}
/**
- * fwd_rules_info() - Print forwarding rules for debugging
- * @fwd: Table to print
- */
-void fwd_rules_info(const struct fwd_rule *rules, size_t count)
-{
- unsigned i;
-
- for (i = 0; i < count; i++) {
- char buf[FWD_RULE_STRLEN];
-
- info(" %s", fwd_rule_fmt(&rules[i], buf, sizeof(buf)));
- }
-}
-
-/**
* fwd_rule_conflicts() - Test if two rules conflict with each other
* @a, @b: Rules to test
*/
diff --git a/fwd_rule.h b/fwd_rule.h
index f0f4efd..5855138 100644
--- a/fwd_rule.h
+++ b/fwd_rule.h
@@ -97,7 +97,25 @@ void fwd_probe_ephemeral(void);
const union inany_addr *fwd_rule_addr(const struct fwd_rule *rule);
const char *fwd_rule_fmt(const struct fwd_rule *rule, char *dst, size_t size);
-void fwd_rules_info(const struct fwd_rule *rules, size_t count);
void fwd_rule_parse(char optname, const char *optarg, struct fwd_table *fwd);
+/**
+ * fwd_rules_dump() - Dump forwarding rules
+ * @fn: Printing/logging function to call
+ * @rules: Array of rules to dump
+ * @count: Number of rules to dump
+ * @prefix: String to print at the start of each rule
+ * @suffix: String to print at the end of each rule
+ */
+#define fwd_rules_dump(fn, rules, count, prefix, suffix) \
+ do { \
+ unsigned i_; \
+ for (i_ = 0; i_ < (count); i_++) { \
+ char buf_[FWD_RULE_STRLEN]; \
+ fn("%s%s%s", prefix, \
+ fwd_rule_fmt(&(rules)[i_], buf_, sizeof(buf_)), \
+ suffix); \
+ } \
+ } while (0)
+
#endif /* FWD_RULE_H */