[Bug 262622] [pf][patch] fix showing rules in (some) nested anchors
- In reply to: bugzilla-noreply_a_freebsd.org: "[Bug 262622] [pf][patch] fix showing rules in (some) nested anchors"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 17 Mar 2022 16:56:55 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=262622 --- Comment #5 from Kristof Provost <kp@freebsd.org> --- Can you try this: diff --git a/lib/libpfctl/libpfctl.c b/lib/libpfctl/libpfctl.c index 8f064594260b..884431aa73fc 100644 --- a/lib/libpfctl/libpfctl.c +++ b/lib/libpfctl/libpfctl.c @@ -894,7 +894,7 @@ pfctl_add_rule(int dev, const struct pfctl_rule *r, const char *anchor, int pfctl_get_rules_info(int dev, struct pfctl_rules_info *rules, uint32_t ruleset, - const char *path) + const char *path, char *anchor_call) { struct pfioc_rule pr; int ret; @@ -911,6 +911,9 @@ pfctl_get_rules_info(int dev, struct pfctl_rules_info *rules, uint32_t ruleset, rules->nr = pr.nr; rules->ticket = pr.ticket; + if (anchor_call) + strlcpy(anchor_call, pr.anchor_call, MAXPATHLEN); + return (0); } diff --git a/lib/libpfctl/libpfctl.h b/lib/libpfctl/libpfctl.h index b7f703b64def..536377c38404 100644 --- a/lib/libpfctl/libpfctl.h +++ b/lib/libpfctl/libpfctl.h @@ -364,7 +364,7 @@ int pfctl_get_eth_rule(int dev, uint32_t nr, uint32_t ticket, int pfctl_add_eth_rule(int dev, const struct pfctl_eth_rule *r, const char *anchor, const char *anchor_call, uint32_t ticket); int pfctl_get_rules_info(int dev, struct pfctl_rules_info *rules, - uint32_t ruleset, const char *path); + uint32_t ruleset, const char *path, char *anchor_call); int pfctl_get_rule(int dev, uint32_t nr, uint32_t ticket, const char *anchor, uint32_t ruleset, struct pfctl_rule *rule, char *anchor_call); diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index ffd978b304cb..6b0ed98aeb77 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -1150,14 +1150,16 @@ pfctl_show_rules(int dev, char *path, int opts, enum pfctl_show format, snprintf(&path[len], MAXPATHLEN - len, "%s", anchorname); if (opts & PF_OPT_SHOWALL) { - ret = pfctl_get_rules_info(dev, &ri, PF_PASS, anchorname); + ret = pfctl_get_rules_info(dev, &ri, PF_PASS, path, + anchor_call); if (ret != 0) { warn("DIOCGETRULES"); goto error; } header++; } - ret = pfctl_get_rules_info(dev, &ri, PF_SCRUB, anchorname); + ret = pfctl_get_rules_info(dev, &ri, PF_SCRUB, path, + anchor_call); if (ret != 0) { warn("DIOCGETRULES"); goto error; @@ -1195,7 +1197,8 @@ pfctl_show_rules(int dev, char *path, int opts, enum pfctl_show format, } pfctl_clear_pool(&rule.rpool); } - ret = pfctl_get_rules_info(dev, &ri, PF_PASS, anchorname); + ret = pfctl_get_rules_info(dev, &ri, PF_PASS, path, + anchor_call); if (ret != 0) { warn("DIOCGETRULES"); goto error; @@ -1294,7 +1297,8 @@ pfctl_show_nat(int dev, char *path, int opts, char *anchorname, int depth) char *p; for (i = 0; i < 3; i++) { - ret = pfctl_get_rules_info(dev, &ri, nattype[i], anchorname); + ret = pfctl_get_rules_info(dev, &ri, nattype[i], anchorname, + anchor_call); if (ret != 0) { warn("DIOCGETRULES"); return (-1); That should restore the previous behaviour, and appears to be working for me. -- You are receiving this mail because: You are the assignee for the bug.