Lines Matching refs:set

41 static int nft_rbtree_cmp(const struct nft_set *set,  in nft_rbtree_cmp()  argument
46 set->klen); in nft_rbtree_cmp()
55 static bool __nft_rbtree_lookup(const struct net *net, const struct nft_set *set, in __nft_rbtree_lookup() argument
59 struct nft_rbtree *priv = nft_set_priv(set); in __nft_rbtree_lookup()
72 d = memcmp(nft_set_ext_key(&rbe->ext), key, set->klen); in __nft_rbtree_lookup()
76 !nft_rbtree_cmp(set, rbe, interval) && in __nft_rbtree_lookup()
93 if (nft_set_is_anonymous(set)) in __nft_rbtree_lookup()
105 if (set->flags & NFT_SET_INTERVAL && interval != NULL && in __nft_rbtree_lookup()
117 bool nft_rbtree_lookup(const struct net *net, const struct nft_set *set, in nft_rbtree_lookup() argument
120 struct nft_rbtree *priv = nft_set_priv(set); in nft_rbtree_lookup()
124 ret = __nft_rbtree_lookup(net, set, key, ext, seq); in nft_rbtree_lookup()
130 ret = __nft_rbtree_lookup(net, set, key, ext, seq); in nft_rbtree_lookup()
136 static bool __nft_rbtree_get(const struct net *net, const struct nft_set *set, in __nft_rbtree_get() argument
141 struct nft_rbtree *priv = nft_set_priv(set); in __nft_rbtree_get()
154 d = memcmp(this, key, set->klen); in __nft_rbtree_get()
186 if (set->flags & NFT_SET_INTERVAL && interval != NULL && in __nft_rbtree_get()
200 static void *nft_rbtree_get(const struct net *net, const struct nft_set *set, in nft_rbtree_get() argument
203 struct nft_rbtree *priv = nft_set_priv(set); in nft_rbtree_get()
210 ret = __nft_rbtree_get(net, set, key, &rbe, seq, flags, genmask); in nft_rbtree_get()
216 ret = __nft_rbtree_get(net, set, key, &rbe, seq, flags, genmask); in nft_rbtree_get()
224 static void nft_rbtree_gc_remove(struct net *net, struct nft_set *set, in nft_rbtree_gc_remove() argument
232 nft_setelem_data_deactivate(net, set, &elem); in nft_rbtree_gc_remove()
240 struct nft_set *set = (struct nft_set *)__set; in nft_rbtree_gc_elem() local
242 struct net *net = read_pnet(&set->net); in nft_rbtree_gc_elem()
246 gc = nft_trans_gc_alloc(set, 0, GFP_ATOMIC); in nft_rbtree_gc_elem()
266 nft_rbtree_gc_remove(net, set, priv, rbe_prev); in nft_rbtree_gc_elem()
280 nft_rbtree_gc_remove(net, set, priv, rbe); in nft_rbtree_gc_elem()
292 static bool nft_rbtree_update_first(const struct nft_set *set, in nft_rbtree_update_first() argument
302 if (nft_rbtree_cmp(set, rbe, first_elem) < 0) in nft_rbtree_update_first()
308 static int __nft_rbtree_insert(const struct net *net, const struct nft_set *set, in __nft_rbtree_insert() argument
314 struct nft_rbtree *priv = nft_set_priv(set); in __nft_rbtree_insert()
328 d = nft_rbtree_cmp(set, rbe, new); in __nft_rbtree_insert()
334 nft_rbtree_update_first(set, rbe, first)) in __nft_rbtree_insert()
368 removed_end = nft_rbtree_gc_elem(set, priv, rbe); in __nft_rbtree_insert()
378 d = nft_rbtree_cmp(set, rbe, new); in __nft_rbtree_insert()
395 if (nft_rbtree_cmp(set, rbe_ge, new) != 0) { in __nft_rbtree_insert()
425 if (rbe_ge && !nft_rbtree_cmp(set, new, rbe_ge) && in __nft_rbtree_insert()
434 if (rbe_le && !nft_rbtree_cmp(set, new, rbe_le) && in __nft_rbtree_insert()
445 if (!nft_set_is_anonymous(set) && rbe_le && in __nft_rbtree_insert()
469 d = nft_rbtree_cmp(set, rbe, new); in __nft_rbtree_insert()
486 static int nft_rbtree_insert(const struct net *net, const struct nft_set *set, in nft_rbtree_insert() argument
490 struct nft_rbtree *priv = nft_set_priv(set); in nft_rbtree_insert()
502 err = __nft_rbtree_insert(net, set, rbe, ext); in nft_rbtree_insert()
511 const struct nft_set *set, in nft_rbtree_remove() argument
514 struct nft_rbtree *priv = nft_set_priv(set); in nft_rbtree_remove()
525 const struct nft_set *set, in nft_rbtree_activate() argument
530 nft_set_elem_change_active(net, set, &rbe->ext); in nft_rbtree_activate()
534 const struct nft_set *set, void *priv) in nft_rbtree_flush() argument
538 nft_set_elem_change_active(net, set, &rbe->ext); in nft_rbtree_flush()
544 const struct nft_set *set, in nft_rbtree_deactivate() argument
547 const struct nft_rbtree *priv = nft_set_priv(set); in nft_rbtree_deactivate()
557 set->klen); in nft_rbtree_deactivate()
577 nft_rbtree_flush(net, set, rbe); in nft_rbtree_deactivate()
585 struct nft_set *set, in nft_rbtree_walk() argument
588 struct nft_rbtree *priv = nft_set_priv(set); in nft_rbtree_walk()
604 iter->err = iter->fn(ctx, set, iter, &elem); in nft_rbtree_walk()
622 struct nft_set *set; in nft_rbtree_gc() local
627 set = nft_set_container_of(priv); in nft_rbtree_gc()
628 net = read_pnet(&set->net); in nft_rbtree_gc()
632 if (nft_set_gc_is_pending(set)) in nft_rbtree_gc()
635 gc = nft_trans_gc_alloc(set, gc_seq, GFP_KERNEL); in nft_rbtree_gc()
695 nft_set_gc_interval(set)); in nft_rbtree_gc()
704 static int nft_rbtree_init(const struct nft_set *set, in nft_rbtree_init() argument
708 struct nft_rbtree *priv = nft_set_priv(set); in nft_rbtree_init()
715 if (set->flags & NFT_SET_TIMEOUT) in nft_rbtree_init()
717 nft_set_gc_interval(set)); in nft_rbtree_init()
723 const struct nft_set *set) in nft_rbtree_destroy() argument
725 struct nft_rbtree *priv = nft_set_priv(set); in nft_rbtree_destroy()
734 nf_tables_set_elem_destroy(ctx, set, rbe); in nft_rbtree_destroy()