diff options
| author | Kristof Provost <kp@FreeBSD.org> | 2022-03-04 14:50:43 +0000 |
|---|---|---|
| committer | Kristof Provost <kp@FreeBSD.org> | 2022-03-08 12:57:45 +0000 |
| commit | f0c334e4deca08b56b4226539c844a7018e9182d (patch) | |
| tree | d01945c81d5179c86763023ed9ff2fc97185de90 /sbin/pfctl | |
| parent | 45b6c31a3801555cd7d46620b8aadcd9dd3a607d (diff) | |
Diffstat (limited to 'sbin/pfctl')
| -rw-r--r-- | sbin/pfctl/pfctl.c | 58 |
1 files changed, 24 insertions, 34 deletions
diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index b1d6c6899716..e0d839c6b8ba 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -75,9 +75,9 @@ int pfctl_get_skip_ifaces(void); int pfctl_check_skip_ifaces(char *); int pfctl_adjust_skip_ifaces(struct pfctl *); int pfctl_clear_interface_flags(int, int); -int pfctl_clear_eth_rules(int, int, char *); -int pfctl_clear_rules(int, int, char *); -int pfctl_clear_nat(int, int, char *); +int pfctl_flush_eth_rules(int, int, char *); +int pfctl_flush_rules(int, int, char *); +int pfctl_flush_nat(int, int, char *); int pfctl_clear_altq(int, int); int pfctl_clear_src_nodes(int, int); int pfctl_clear_iface_states(int, const char *, int); @@ -460,32 +460,27 @@ pfctl_clear_interface_flags(int dev, int opts) } int -pfctl_clear_eth_rules(int dev, int opts, char *anchorname) +pfctl_flush_eth_rules(int dev, int opts, char *anchorname) { - struct pfr_buffer t; + int ret; - memset(&t, 0, sizeof(t)); - t.pfrb_type = PFRB_TRANS; - if (pfctl_add_trans(&t, PF_RULESET_ETH, anchorname) || - pfctl_trans(dev, &t, DIOCXBEGIN, 0) || - pfctl_trans(dev, &t, DIOCXCOMMIT, 0)) + ret = pfctl_clear_eth_rules(dev, anchorname); + if (ret != 0) err(1, "pfctl_clear_eth_rules"); + if ((opts & PF_OPT_QUIET) == 0) fprintf(stderr, "Ethernet rules cleared\n"); - return (0); + + return (ret); } int -pfctl_clear_rules(int dev, int opts, char *anchorname) +pfctl_flush_rules(int dev, int opts, char *anchorname) { - struct pfr_buffer t; + int ret; - memset(&t, 0, sizeof(t)); - t.pfrb_type = PFRB_TRANS; - if (pfctl_add_trans(&t, PF_RULESET_SCRUB, anchorname) || - pfctl_add_trans(&t, PF_RULESET_FILTER, anchorname) || - pfctl_trans(dev, &t, DIOCXBEGIN, 0) || - pfctl_trans(dev, &t, DIOCXCOMMIT, 0)) + ret = pfctl_clear_rules(dev, anchorname); + if (ret != 0) err(1, "pfctl_clear_rules"); if ((opts & PF_OPT_QUIET) == 0) fprintf(stderr, "rules cleared\n"); @@ -493,17 +488,12 @@ pfctl_clear_rules(int dev, int opts, char *anchorname) } int -pfctl_clear_nat(int dev, int opts, char *anchorname) +pfctl_flush_nat(int dev, int opts, char *anchorname) { - struct pfr_buffer t; + int ret; - memset(&t, 0, sizeof(t)); - t.pfrb_type = PFRB_TRANS; - if (pfctl_add_trans(&t, PF_RULESET_NAT, anchorname) || - pfctl_add_trans(&t, PF_RULESET_BINAT, anchorname) || - pfctl_add_trans(&t, PF_RULESET_RDR, anchorname) || - pfctl_trans(dev, &t, DIOCXBEGIN, 0) || - pfctl_trans(dev, &t, DIOCXCOMMIT, 0)) + ret = pfctl_clear_nat(dev, anchorname); + if (ret != 0) err(1, "pfctl_clear_nat"); if ((opts & PF_OPT_QUIET) == 0) fprintf(stderr, "nat cleared\n"); @@ -2926,13 +2916,13 @@ main(int argc, char *argv[]) switch (*clearopt) { case 'e': - pfctl_clear_eth_rules(dev, opts, anchorname); + pfctl_flush_eth_rules(dev, opts, anchorname); break; case 'r': - pfctl_clear_rules(dev, opts, anchorname); + pfctl_flush_rules(dev, opts, anchorname); break; case 'n': - pfctl_clear_nat(dev, opts, anchorname); + pfctl_flush_nat(dev, opts, anchorname); break; case 'q': pfctl_clear_altq(dev, opts); @@ -2947,9 +2937,9 @@ main(int argc, char *argv[]) pfctl_clear_stats(dev, opts); break; case 'a': - pfctl_clear_eth_rules(dev, opts, anchorname); - pfctl_clear_rules(dev, opts, anchorname); - pfctl_clear_nat(dev, opts, anchorname); + pfctl_flush_eth_rules(dev, opts, anchorname); + pfctl_flush_rules(dev, opts, anchorname); + pfctl_flush_nat(dev, opts, anchorname); pfctl_clear_tables(anchorname, opts); if (!*anchorname) { pfctl_clear_altq(dev, opts); |
