From e7b6180fcf9061852a06f6d98e7618f44fd0eeec Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Thu, 7 May 2020 18:53:47 +0200 Subject: nft: Merge nft_*_rule_find() functions Both ebtables and arptables are fine with using nft_ipv46_rule_find() instead of their own implementations. Take the chance and move the former into nft.c as a static helper since it is used in a single place, only. Then get rid of the callback from family_ops. Signed-off-by: Phil Sutter --- iptables/nft-shared.c | 39 --------------------------------------- 1 file changed, 39 deletions(-) (limited to 'iptables/nft-shared.c') diff --git a/iptables/nft-shared.c b/iptables/nft-shared.c index bfc7bc22..53cd4cae 100644 --- a/iptables/nft-shared.c +++ b/iptables/nft-shared.c @@ -989,45 +989,6 @@ void nft_ipv46_parse_target(struct xtables_target *t, void *data) cs->target = t; } -bool nft_ipv46_rule_find(struct nft_handle *h, struct nftnl_rule *r, - struct nftnl_rule *rule) -{ - struct iptables_command_state _cs = {}, this = {}, *cs = &_cs; - bool ret = false; - - nft_rule_to_iptables_command_state(h, r, &this); - nft_rule_to_iptables_command_state(h, rule, cs); - - DEBUGP("comparing with... "); -#ifdef DEBUG_DEL - nft_rule_print_save(h, r, NFT_RULE_APPEND, 0); -#endif - if (!h->ops->is_same(cs, &this)) - goto out; - - if (!compare_matches(cs->matches, this.matches)) { - DEBUGP("Different matches\n"); - goto out; - } - - if (!compare_targets(cs->target, this.target)) { - DEBUGP("Different target\n"); - goto out; - } - - if ((!cs->target || !this.target) && - strcmp(cs->jumpto, this.jumpto) != 0) { - DEBUGP("Different verdict\n"); - goto out; - } - - ret = true; -out: - h->ops->clear_cs(&this); - h->ops->clear_cs(cs); - return ret; -} - void nft_check_xt_legacy(int family, bool is_ipt_save) { static const char tables6[] = "/proc/net/ip6_tables_names"; -- cgit v1.2.3