void table_cache_add(struct table *table, struct nft_cache *cache)
{
- uint32_t hash;
-
- hash = djb_hash(table->handle.table.name) % NFT_CACHE_HSIZE;
- cache_add(&table->cache, &cache->table_cache, hash);
+ cache_add(&table->cache, &cache->table_cache, table->handle.table.name);
}
void table_cache_del(struct table *table)
{
struct chain_cache_dump_ctx *ctx = arg;
const char *chain_name, *table_name;
- uint32_t hash, family;
struct chain *chain;
+ uint32_t family;
table_name = nftnl_chain_get_str(nlc, NFTNL_CHAIN_TABLE);
family = nftnl_chain_get_u32(nlc, NFTNL_CHAIN_FAMILY);
return 0;
chain_name = nftnl_chain_get_str(nlc, NFTNL_CHAIN_NAME);
- hash = djb_hash(chain_name) % NFT_CACHE_HSIZE;
- chain = netlink_delinearize_chain(ctx->nlctx, nlc);
+ chain = netlink_delinearize_chain(ctx->nlctx, nlc);
if (chain->flags & CHAIN_F_BINDING) {
list_add_tail(&chain->cache.list, &ctx->table->chain_bindings);
} else {
- cache_add(&chain->cache, &ctx->table->chain_cache, hash);
+ cache_add(&chain->cache, &ctx->table->chain_cache, chain_name);
}
nftnl_chain_list_del(nlc);
void chain_cache_add(struct chain *chain, struct table *table)
{
- uint32_t hash;
-
- hash = djb_hash(chain->handle.chain.name) % NFT_CACHE_HSIZE;
- cache_add(&chain->cache, &table->chain_cache, hash);
+ cache_add(&chain->cache, &table->chain_cache, chain->handle.chain.name);
}
void chain_cache_del(struct chain *chain)
const char *set_name;
uint32_t set_family;
struct set *set;
- uint32_t hash;
set_table = nftnl_set_get_str(nls, NFTNL_SET_TABLE);
set_family = nftnl_set_get_u32(nls, NFTNL_SET_FAMILY);
return -1;
set_name = nftnl_set_get_str(nls, NFTNL_SET_NAME);
- hash = djb_hash(set_name) % NFT_CACHE_HSIZE;
- cache_add(&set->cache, &ctx->table->set_cache, hash);
+ cache_add(&set->cache, &ctx->table->set_cache, set_name);
nftnl_set_list_del(nls);
nftnl_set_free(nls);
void set_cache_add(struct set *set, struct table *table)
{
- uint32_t hash;
-
- hash = djb_hash(set->handle.set.name) % NFT_CACHE_HSIZE;
- cache_add(&set->cache, &table->set_cache, hash);
+ cache_add(&set->cache, &table->set_cache, set->handle.set.name);
}
void set_cache_del(struct set *set)
const char *obj_name;
uint32_t obj_family;
struct obj *obj;
- uint32_t hash;
obj_table = nftnl_obj_get_str(nlo, NFTNL_OBJ_TABLE);
obj_family = nftnl_obj_get_u32(nlo, NFTNL_OBJ_FAMILY);
obj = netlink_delinearize_obj(ctx->nlctx, nlo);
if (obj) {
obj_name = nftnl_obj_get_str(nlo, NFTNL_OBJ_NAME);
- hash = djb_hash(obj_name) % NFT_CACHE_HSIZE;
- cache_add(&obj->cache, &ctx->table->obj_cache, hash);
+ cache_add(&obj->cache, &ctx->table->obj_cache, obj_name);
}
nftnl_obj_list_del(nlo);
void obj_cache_add(struct obj *obj, struct table *table)
{
- uint32_t hash;
-
- hash = djb_hash(obj->handle.obj.name) % NFT_CACHE_HSIZE;
- cache_add(&obj->cache, &table->obj_cache, hash);
+ cache_add(&obj->cache, &table->obj_cache, obj->handle.obj.name);
}
void obj_cache_del(struct obj *obj)
const char *ft_table;
const char *ft_name;
uint32_t ft_family;
- uint32_t hash;
ft_family = nftnl_flowtable_get_u32(nlf, NFTNL_FLOWTABLE_FAMILY);
ft_table = nftnl_flowtable_get_str(nlf, NFTNL_FLOWTABLE_TABLE);
return -1;
ft_name = nftnl_flowtable_get_str(nlf, NFTNL_FLOWTABLE_NAME);
- hash = djb_hash(ft_name) % NFT_CACHE_HSIZE;
- cache_add(&ft->cache, &ctx->table->ft_cache, hash);
+ cache_add(&ft->cache, &ctx->table->ft_cache, ft_name);
nftnl_flowtable_list_del(nlf);
nftnl_flowtable_free(nlf);
void ft_cache_add(struct flowtable *ft, struct table *table)
{
- uint32_t hash;
-
- hash = djb_hash(ft->handle.flowtable.name) % NFT_CACHE_HSIZE;
- cache_add(&ft->cache, &table->ft_cache, hash);
+ cache_add(&ft->cache, &table->ft_cache, ft->handle.flowtable.name);
}
void ft_cache_del(struct flowtable *ft)
free(cache->ht);
}
-void cache_add(struct cache_item *item, struct cache *cache, uint32_t hash)
+void cache_add(struct cache_item *item, struct cache *cache, const char *name)
{
+ uint32_t hash;
+
+ hash = djb_hash(name) % NFT_CACHE_HSIZE;
list_add_tail(&item->hlist, &cache->ht[hash]);
list_add_tail(&item->list, &cache->list);
}