netfilter: nf_tables: honor NFT_SET_OBJECT in set backend selection
[sfrench/cifs-2.6.git] / net / netfilter / nft_set_rbtree.c
index f06f55ee516de44d3b0367cc52afb32173a2d0e8..71e8fb886a73b70489e635c63957cb9f8642ec5d 100644 (file)
@@ -151,7 +151,8 @@ static int nft_rbtree_insert(const struct net *net, const struct nft_set *set,
        return err;
 }
 
-static void nft_rbtree_remove(const struct nft_set *set,
+static void nft_rbtree_remove(const struct net *net,
+                             const struct nft_set *set,
                              const struct nft_set_elem *elem)
 {
        struct nft_rbtree *priv = nft_set_priv(set);
@@ -171,8 +172,8 @@ static void nft_rbtree_activate(const struct net *net,
        nft_set_elem_change_active(net, set, &rbe->ext);
 }
 
-static bool nft_rbtree_deactivate_one(const struct net *net,
-                                     const struct nft_set *set, void *priv)
+static bool nft_rbtree_flush(const struct net *net,
+                            const struct nft_set *set, void *priv)
 {
        struct nft_rbtree_elem *rbe = priv;
 
@@ -213,7 +214,7 @@ static void *nft_rbtree_deactivate(const struct net *net,
                                parent = parent->rb_right;
                                continue;
                        }
-                       nft_rbtree_deactivate_one(net, set, rbe);
+                       nft_rbtree_flush(net, set, rbe);
                        return rbe;
                }
        }
@@ -290,7 +291,8 @@ static bool nft_rbtree_estimate(const struct nft_set_desc *desc, u32 features,
        else
                est->size = nsize;
 
-       est->class = NFT_SET_CLASS_O_LOG_N;
+       est->lookup = NFT_SET_CLASS_O_LOG_N;
+       est->space  = NFT_SET_CLASS_O_N;
 
        return true;
 }
@@ -304,11 +306,11 @@ static struct nft_set_ops nft_rbtree_ops __read_mostly = {
        .insert         = nft_rbtree_insert,
        .remove         = nft_rbtree_remove,
        .deactivate     = nft_rbtree_deactivate,
-       .deactivate_one = nft_rbtree_deactivate_one,
+       .flush          = nft_rbtree_flush,
        .activate       = nft_rbtree_activate,
        .lookup         = nft_rbtree_lookup,
        .walk           = nft_rbtree_walk,
-       .features       = NFT_SET_INTERVAL | NFT_SET_MAP,
+       .features       = NFT_SET_INTERVAL | NFT_SET_MAP | NFT_SET_OBJECT,
        .owner          = THIS_MODULE,
 };