]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
Introduce a counter for number of user defined chains.
authorJesper Dangaard Brouer <hawk@comx.dk>
Tue, 15 Jan 2008 17:06:48 +0000 (17:06 +0000)
committerPatrick McHardy <kaber@trash.net>
Tue, 15 Jan 2008 17:06:48 +0000 (17:06 +0000)
Introduce a counter for number of user defined chains.

Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
libiptc/libiptc.c

index 5afaf4079489db6c0fa492e7a55b7b9ac3024052..b4d865e6af3cae194d61c872f5a4d8e9145df545 100644 (file)
@@ -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);