Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef1d20e0 authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso
Browse files

netfilter: nft_rbtree: introduce nft_rbtree_interval_end() helper



Add this new nft_rbtree_interval_end() helper function to check in the
end interval is set.

Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 3971ca14
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -29,6 +29,11 @@ struct nft_rbtree_elem {
	struct nft_set_ext	ext;
};

static bool nft_rbtree_interval_end(const struct nft_rbtree_elem *rbe)
{
	return nft_set_ext_exists(&rbe->ext, NFT_SET_EXT_FLAGS) &&
	       (*nft_set_ext_flags(&rbe->ext) & NFT_SET_ELEM_INTERVAL_END);
}

static bool nft_rbtree_lookup(const struct nft_set *set, const u32 *key,
			      const struct nft_set_ext **ext)
@@ -56,9 +61,7 @@ static bool nft_rbtree_lookup(const struct nft_set *set, const u32 *key,
				parent = parent->rb_left;
				continue;
			}
			if (nft_set_ext_exists(&rbe->ext, NFT_SET_EXT_FLAGS) &&
			    *nft_set_ext_flags(&rbe->ext) &
			    NFT_SET_ELEM_INTERVAL_END)
			if (nft_rbtree_interval_end(rbe))
				goto out;
			spin_unlock_bh(&nft_rbtree_lock);