summaryrefslogtreecommitdiffstats
path: root/libiptc
diff options
context:
space:
mode:
authorJesper Dangaard Brouer <hawk@comx.dk>2008-01-15 17:06:48 +0000
committerPatrick McHardy <kaber@trash.net>2008-01-15 17:06:48 +0000
commit48bde40e73b45ad134d32cde88b779fe509faf64 (patch)
tree66765ca502016875145bc38c1eb818216e085798 /libiptc
parent910939897ea0cb9be2729a98c60a92e807aad5c3 (diff)
Introduce a counter for number of user defined chains.
Introduce a counter for number of user defined chains. Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Diffstat (limited to 'libiptc')
-rw-r--r--libiptc/libiptc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libiptc/libiptc.c b/libiptc/libiptc.c
index 5afaf407..b4d865e6 100644
--- a/libiptc/libiptc.c
+++ b/libiptc/libiptc.c
@@ -132,6 +132,8 @@ STRUCT_TC_HANDLE
struct chain_head *chain_iterator_cur;
struct rule_head *rule_iterator_cur;
+ unsigned int num_chains; /* number of user defined chains */
+
STRUCT_GETINFO info;
STRUCT_GET_ENTRIES *entries;
};
@@ -475,6 +477,7 @@ static int cache_add_entry(STRUCT_ENTRY *e,
errno = -ENOMEM;
return -1;
}
+ h->num_chains++; /* New user defined chain */
__iptcc_p_add_chain(h, c, offset, num);
@@ -1801,6 +1804,7 @@ TC_CREATE_CHAIN(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle)
return 0;
}
+ (*handle)->num_chains++; /* New user defined chain */
DEBUGP("Creating chain `%s'\n", chain);
iptc_insert_chain(*handle, c); /* Insert sorted */
@@ -1867,13 +1871,15 @@ TC_DELETE_CHAIN(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle)
}
/* If we are about to delete the chain that is the current
- * iterator, move chain iterator firward. */
+ * iterator, move chain iterator forward. */
if (c == (*handle)->chain_iterator_cur)
iptcc_chain_iterator_advance(*handle);
list_del(&c->list);
free(c);
+ (*handle)->num_chains--; /* One user defined chain deleted */
+
DEBUGP("chain `%s' deleted\n", chain);
set_changed(*handle);