Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

netfilter: nft_set_rbtree: Introduce and use nft_rbtree_interval_start()

Replace negations of nft_rbtree_interval_end() with a new helper,
nft_rbtree_interval_start(), wherever this helps to visualise the
problem at hand, that is, for all the occurrences except for the
comparison against given flags in __nft_rbtree_get().

This gets especially useful in the next patch.

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>

authored by

Stefano Brivio and committed by
Pablo Neira Ayuso
6f7c9caf 0eb4b5ee

+11 -6
+11 -6
net/netfilter/nft_set_rbtree.c
··· 33 33 (*nft_set_ext_flags(&rbe->ext) & NFT_SET_ELEM_INTERVAL_END); 34 34 } 35 35 36 + static bool nft_rbtree_interval_start(const struct nft_rbtree_elem *rbe) 37 + { 38 + return !nft_rbtree_interval_end(rbe); 39 + } 40 + 36 41 static bool nft_rbtree_equal(const struct nft_set *set, const void *this, 37 42 const struct nft_rbtree_elem *interval) 38 43 { ··· 69 64 if (interval && 70 65 nft_rbtree_equal(set, this, interval) && 71 66 nft_rbtree_interval_end(rbe) && 72 - !nft_rbtree_interval_end(interval)) 67 + nft_rbtree_interval_start(interval)) 73 68 continue; 74 69 interval = rbe; 75 70 } else if (d > 0) ··· 94 89 95 90 if (set->flags & NFT_SET_INTERVAL && interval != NULL && 96 91 nft_set_elem_active(&interval->ext, genmask) && 97 - !nft_rbtree_interval_end(interval)) { 92 + nft_rbtree_interval_start(interval)) { 98 93 *ext = &interval->ext; 99 94 return true; 100 95 } ··· 229 224 p = &parent->rb_right; 230 225 else { 231 226 if (nft_rbtree_interval_end(rbe) && 232 - !nft_rbtree_interval_end(new)) { 227 + nft_rbtree_interval_start(new)) { 233 228 p = &parent->rb_left; 234 - } else if (!nft_rbtree_interval_end(rbe) && 229 + } else if (nft_rbtree_interval_start(rbe) && 235 230 nft_rbtree_interval_end(new)) { 236 231 p = &parent->rb_right; 237 232 } else if (nft_set_elem_active(&rbe->ext, genmask)) { ··· 322 317 parent = parent->rb_right; 323 318 else { 324 319 if (nft_rbtree_interval_end(rbe) && 325 - !nft_rbtree_interval_end(this)) { 320 + nft_rbtree_interval_start(this)) { 326 321 parent = parent->rb_left; 327 322 continue; 328 - } else if (!nft_rbtree_interval_end(rbe) && 323 + } else if (nft_rbtree_interval_start(rbe) && 329 324 nft_rbtree_interval_end(this)) { 330 325 parent = parent->rb_right; 331 326 continue;