path: root/include
diff options
authorPablo Neira Ayuso <>2015-07-06 14:29:33 +0200
committerPablo Neira Ayuso <>2015-08-18 01:13:35 +0200
commit327554218c59902965a160b71c7b6021a0d8bf4b (patch)
tree5af22ea3f55a3fde432e2e01f983df92728336c2 /include
parentc54fbd53c73fd0426329bfbeaa99bdda244542a9 (diff)
rule: add chain reference counter
When adding declared chains to the cache, we may hold more than one single reference from struct cmd and the cache. Signed-off-by: Pablo Neira Ayuso <>
Diffstat (limited to 'include')
1 files changed, 3 insertions, 0 deletions
diff --git a/include/rule.h b/include/rule.h
index 4e688794..f137a4c8 100644
--- a/include/rule.h
+++ b/include/rule.h
@@ -110,6 +110,7 @@ enum chain_flags {
* @list: list node in table list
* @handle: chain handle
* @location: location the chain was defined at
+ * @refcnt: reference counter
* @flags: chain flags
* @hookstr: unified and human readable hook name (base chains)
* @hooknum: hook number (base chains)
@@ -123,6 +124,7 @@ struct chain {
struct list_head list;
struct handle handle;
struct location location;
+ unsigned int refcnt;
uint32_t flags;
const char *hookstr;
unsigned int hooknum;
@@ -137,6 +139,7 @@ struct chain {
extern const char *chain_type_name_lookup(const char *name);
extern const char *chain_hookname_lookup(const char *name);
extern struct chain *chain_alloc(const char *name);
+extern struct chain *chain_get(struct chain *chain);
extern void chain_free(struct chain *chain);
extern void chain_add_hash(struct chain *chain, struct table *table);
extern struct chain *chain_lookup(const struct table *table,