diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2015-07-06 13:52:09 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2015-08-18 01:13:35 +0200 |
commit | c2f7d6a6b0629e521d91d5caed87061a1a697ce9 (patch) | |
tree | 4bf34cb0020e489b0bb5aceabf0333a6cec1849e /src/rule.c | |
parent | 2c6702b391f12723f1d4cf258e4a24100e931da9 (diff) |
rule: add reference counter to the table object
We may hold multiple references to table objects in follow up patches when
adding object declarations to the cache.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/rule.c')
-rw-r--r-- | src/rule.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -588,6 +588,8 @@ struct table *table_alloc(void) init_list_head(&table->chains); init_list_head(&table->sets); init_list_head(&table->scope.symbols); + table->refcnt = 1; + return table; } @@ -595,6 +597,8 @@ void table_free(struct table *table) { struct chain *chain, *next; + if (--table->refcnt > 0) + return; list_for_each_entry_safe(chain, next, &table->chains, list) chain_free(chain); handle_free(&table->handle); @@ -602,6 +606,12 @@ void table_free(struct table *table) xfree(table); } +struct table *table_get(struct table *table) +{ + table->refcnt++; + return table; +} + void table_add_hash(struct table *table) { list_add_tail(&table->list, &table_list); |