]> granicus.if.org Git - ipset/commitdiff
Add element count to all set types header
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Thu, 25 Jun 2015 07:29:20 +0000 (09:29 +0200)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Thu, 25 Jun 2015 07:29:20 +0000 (09:29 +0200)
It is better to list the set elements for all set types, thus the
header information is uniform. Element counts are therefore added
to the bitmap and list types.

37 files changed:
include/libipset/utils.h
kernel/include/linux/netfilter/ipset/ip_set.h
kernel/include/linux/netfilter/ipset/ip_set_bitmap.h
kernel/net/netfilter/ipset/ip_set_bitmap_gen.h
kernel/net/netfilter/ipset/ip_set_hash_gen.h
kernel/net/netfilter/ipset/ip_set_list_set.c
lib/errcode.c
lib/session.c
src/ipset.8
tests/bitmap:ip.t.list0
tests/bitmap:ip.t.list1
tests/bitmap:ip.t.list2
tests/bitmap:ip.t.list3
tests/bitmap:ip.t.list4
tests/bitmap:ip.t.list5
tests/bitmap:ip.t.list6
tests/comment.t.list0
tests/comment.t.list1
tests/comment.t.list11
tests/comment.t.list12
tests/ipmap.t.list0
tests/ipmap.t.list1
tests/ipmap.t.list2
tests/ipmap.t.list3
tests/ipmap.t.list4
tests/macipmap.t.list0
tests/macipmap.t.list1
tests/macipmap.t.list2
tests/macipmap.t.list3
tests/portmap.t.list0
tests/portmap.t.list1
tests/portmap.t.list2
tests/portmap.t.list3
tests/setlist.t.list0
tests/setlist.t.list1
tests/setlist.t.list2
tests/setlist.t.list3

index ceedd45967d31932209d6c8754a5bc635a416d96..3cd29da56bf422d02aecd2c981191ce31bdd6896 100644 (file)
@@ -19,9 +19,6 @@
 #define STRCASEQ(a, b)         (strcasecmp(a, b) == 0)
 #define STRNCASEQ(a, b, n)     (strncasecmp(a, b, n) == 0)
 
-/* Match set type names */
-#define MATCH_TYPENAME(a, b)    STRNEQ(a, b, strlen(b))
-
 /* Stringify tokens */
 #define _STR(c)                        #c
 #define STR(c)                 _STR(c)
index f54389b85fd1218b8b44d8f83dafe06ba14b8e1b..0ed3ac5f8720d8a1888196ad4aa819f357cffda0 100644 (file)
@@ -247,6 +247,8 @@ struct ip_set {
        u8 flags;
        /* Default timeout value, if enabled */
        u32 timeout;
+       /* Number of elements (vs timeout) */
+       u32 elements;
        /* Element data size */
        size_t dsize;
        /* Offsets to extensions in elements */
index 5e4662a71e011d5dc5dbfa222df54c35d293ed26..366d6c0ea04fe5c028fbda7413145d9f4d34b7d6 100644 (file)
@@ -6,8 +6,8 @@
 #define IPSET_BITMAP_MAX_RANGE 0x0000FFFF
 
 enum {
+       IPSET_ADD_STORE_PLAIN_TIMEOUT = -1,
        IPSET_ADD_FAILED = 1,
-       IPSET_ADD_STORE_PLAIN_TIMEOUT,
        IPSET_ADD_START_STORED_TIMEOUT,
 };
 
index b984bcf08d10332ba1349977f141818b15ae8ccc..efe87cf15fa80440a9eb9b06ea6e86b73c2bedaa 100644 (file)
@@ -86,6 +86,7 @@ mtype_flush(struct ip_set *set)
        if (set->extensions & IPSET_EXT_DESTROY)
                mtype_ext_cleanup(set);
        memset(map->members, 0, map->memsize);
+       set->elements = 0;
 }
 
 /* Calculate the actual memory size of the set data */
@@ -111,7 +112,8 @@ mtype_head(struct ip_set *set, struct sk_buff *skb)
                goto nla_put_failure;
        if (mtype_do_head(skb, map) ||
            nla_put_net32(skb, IPSET_ATTR_REFERENCES, htonl(set->ref - 1)) ||
-           nla_put_net32(skb, IPSET_ATTR_MEMSIZE, htonl(memsize)))
+           nla_put_net32(skb, IPSET_ATTR_MEMSIZE, htonl(memsize)) ||
+           nla_put_net32(skb, IPSET_ATTR_ELEMENTS, htonl(set->elements)))
                goto nla_put_failure;
        if (unlikely(ip_set_put_flags(skb, set)))
                goto nla_put_failure;
@@ -155,6 +157,7 @@ mtype_add(struct ip_set *set, void *value, const struct ip_set_ext *ext,
        if (ret == IPSET_ADD_FAILED) {
                if (SET_WITH_TIMEOUT(set) &&
                    ip_set_timeout_expired(ext_timeout(x, set))) {
+                       set->elements--;
                        ret = 0;
                } else if (!(flags & IPSET_FLAG_EXIST)) {
                        set_bit(e->id, map->members);
@@ -163,6 +166,8 @@ mtype_add(struct ip_set *set, void *value, const struct ip_set_ext *ext,
                /* Element is re-added, cleanup extensions */
                ip_set_ext_destroy(set, x);
        }
+       if (ret > 0)
+               set->elements--;
 
        if (SET_WITH_TIMEOUT(set))
 #ifdef IP_SET_BITMAP_STORED_TIMEOUT
@@ -180,6 +185,7 @@ mtype_add(struct ip_set *set, void *value, const struct ip_set_ext *ext,
 
        /* Activate element */
        set_bit(e->id, map->members);
+       set->elements++;
 
        return 0;
 }
@@ -196,6 +202,7 @@ mtype_del(struct ip_set *set, void *value, const struct ip_set_ext *ext,
                return -IPSET_ERR_EXIST;
 
        ip_set_ext_destroy(set, x);
+       set->elements--;
        if (SET_WITH_TIMEOUT(set) &&
            ip_set_timeout_expired(ext_timeout(x, set)))
                return -IPSET_ERR_EXIST;
@@ -291,6 +298,7 @@ mtype_gc(unsigned long ul_set)
                        if (ip_set_timeout_expired(ext_timeout(x, set))) {
                                clear_bit(id, map->members);
                                ip_set_ext_destroy(set, x);
+                               set->elements--;
                        }
                }
        spin_unlock_bh(&set->lock);
index 2b59b203ba519fe70d10476e965955ab7d9d29dd..191707df7092173523ebd5b8a0bdbed7287f3f07 100644 (file)
@@ -272,7 +272,6 @@ htable_bits(u32 hashsize)
 struct htype {
        struct htable __rcu *table; /* the hash table */
        u32 maxelem;            /* max elements in the hash */
-       u32 elements;           /* current element (vs timeout) */
        u32 initval;            /* random jhash init value */
 #ifdef IP_SET_HASH_WITH_MARKMASK
        u32 markmask;           /* markmask value for mark mask to store */
@@ -397,7 +396,7 @@ mtype_flush(struct ip_set *set)
 #ifdef IP_SET_HASH_WITH_NETS
        memset(h->nets, 0, sizeof(struct net_prefixes) * NLEN(set->family));
 #endif
-       h->elements = 0;
+       set->elements = 0;
 }
 
 /* Destroy the hashtable part of the set */
@@ -503,7 +502,7 @@ mtype_expire(struct ip_set *set, struct htype *h, u8 nets_length, size_t dsize)
                                                nets_length, k);
 #endif
                                ip_set_ext_destroy(set, data);
-                               h->elements--;
+                               set->elements--;
                                d++;
                        }
                }
@@ -707,11 +706,11 @@ mtype_add(struct ip_set *set, void *value, const struct ip_set_ext *ext,
        bool deleted = false, forceadd = false, reuse = false;
        u32 key, multi = 0;
 
-       if (h->elements >= h->maxelem) {
+       if (set->elements >= h->maxelem) {
                if (SET_WITH_TIMEOUT(set))
                        /* FIXME: when set is full, we slow down here */
                        mtype_expire(set, h, NLEN(set->family), set->dsize);
-               if (h->elements >= h->maxelem && SET_WITH_FORCEADD(set))
+               if (set->elements >= h->maxelem && SET_WITH_FORCEADD(set))
                        forceadd = true;
        }
 
@@ -724,7 +723,7 @@ mtype_add(struct ip_set *set, void *value, const struct ip_set_ext *ext,
                                pr_warn("Set %s is full, maxelem %u reached\n",
                                        set->name, h->maxelem);
                        return -IPSET_ERR_HASH_FULL;
-               } else if (h->elements >= h->maxelem) {
+               } else if (set->elements >= h->maxelem) {
                        goto set_full;
                }
                old = NULL;
@@ -773,11 +772,11 @@ mtype_add(struct ip_set *set, void *value, const struct ip_set_ext *ext,
                                        NLEN(set->family), i);
 #endif
                        ip_set_ext_destroy(set, data);
-                       h->elements--;
+                       set->elements--;
                }
                goto copy_data;
        }
-       if (h->elements >= h->maxelem)
+       if (set->elements >= h->maxelem)
                goto set_full;
        /* Create a new slot */
        if (n->pos >= n->size) {
@@ -802,7 +801,7 @@ copy_elem:
        j = n->pos++;
        data = ahash_data(n, j, set->dsize);
 copy_data:
-       h->elements++;
+       set->elements++;
 #ifdef IP_SET_HASH_WITH_NETS
        for (i = 0; i < IPSET_NET_COUNT; i++)
                mtype_add_cidr(h, NCIDR_PUT(DCIDR_GET(d->cidr, i)),
@@ -875,7 +874,7 @@ mtype_del(struct ip_set *set, void *value, const struct ip_set_ext *ext,
                smp_mb__after_atomic();
                if (i + 1 == n->pos)
                        n->pos--;
-               h->elements--;
+               set->elements--;
 #ifdef IP_SET_HASH_WITH_NETS
                for (j = 0; j < IPSET_NET_COUNT; j++)
                        mtype_del_cidr(h, NCIDR_PUT(DCIDR_GET(d->cidr, j)),
@@ -1076,7 +1075,7 @@ mtype_head(struct ip_set *set, struct sk_buff *skb)
 #endif
        if (nla_put_net32(skb, IPSET_ATTR_REFERENCES, htonl(set->ref - 1)) ||
            nla_put_net32(skb, IPSET_ATTR_MEMSIZE, htonl(memsize)) ||
-           nla_put_net32(skb, IPSET_ATTR_ELEMENTS, htonl(h->elements)))
+           nla_put_net32(skb, IPSET_ATTR_ELEMENTS, htonl(set->elements)))
                goto nla_put_failure;
        if (unlikely(ip_set_put_flags(skb, set)))
                goto nla_put_failure;
index db55d585aaef53747f6b7dfed9ef0d2581c1f6ea..db0198d1d1a62bdd17510d1561b802a843c575ee 100644 (file)
@@ -166,6 +166,7 @@ __list_set_del(struct ip_set *set, struct set_elem *e)
 static inline void
 list_set_del(struct ip_set *set, struct set_elem *e)
 {
+       set->elements--;
        list_del_rcu(&e->list);
        __list_set_del(set, e);
 }
@@ -311,6 +312,7 @@ list_set_uadd(struct ip_set *set, void *value, const struct ip_set_ext *ext,
                list_add_rcu(&e->list, &prev->list);
        else
                list_add_tail_rcu(&e->list, &map->members);
+       set->elements++;
 
        return 0;
 }
@@ -421,6 +423,7 @@ list_set_flush(struct ip_set *set)
 
        list_for_each_entry_safe(e, n, &map->members, list)
                list_set_del(set, e);
+       set->elements = 0;
 }
 
 static void
@@ -470,7 +473,8 @@ list_set_head(struct ip_set *set, struct sk_buff *skb)
                goto nla_put_failure;
        if (nla_put_net32(skb, IPSET_ATTR_SIZE, htonl(map->size)) ||
            nla_put_net32(skb, IPSET_ATTR_REFERENCES, htonl(set->ref - 1)) ||
-           nla_put_net32(skb, IPSET_ATTR_MEMSIZE, htonl(memsize)))
+           nla_put_net32(skb, IPSET_ATTR_MEMSIZE, htonl(memsize)) ||
+           nla_put_net32(skb, IPSET_ATTR_ELEMENTS, htonl(set->elements)))
                goto nla_put_failure;
        if (unlikely(ip_set_put_flags(skb, set)))
                goto nla_put_failure;
index 38811211c7d5a88b509807af0c0cb06d71502143..60220c709b55311c49d0e0126e162409d8132078 100644 (file)
@@ -148,6 +148,9 @@ static const struct ipset_errcode_table list_errcode_table[] = {
        { },
 };
 
+/* Match set type names */
+#define MATCH_TYPENAME(a, b)    STRNEQ(a, b, strlen(b))
+
 /**
  * ipset_errcode - interpret a kernel error code
  * @session: session structure
index 2650755ac4af84c932d88244de48420212547706..95c253ecd71e7d6f385240f208767a8c83e3f496 100644 (file)
@@ -931,7 +931,7 @@ list_create(struct ipset_session *session, struct nlattr *nla[])
                safe_dprintf(session, ipset_print_number, IPSET_OPT_MEMSIZE);
                safe_snprintf(session, "\nReferences: ");
                safe_dprintf(session, ipset_print_number, IPSET_OPT_REFERENCES);
-               if (MATCH_TYPENAME(type->name , "hash:")) {
+               if (ipset_data_test(data, IPSET_OPT_ELEMENTS)) {
                        safe_snprintf(session, "\nNumber of entries: ");
                        safe_dprintf(session, ipset_print_number, IPSET_OPT_ELEMENTS);
                }
@@ -945,7 +945,7 @@ list_create(struct ipset_session *session, struct nlattr *nla[])
                safe_snprintf(session, "</memsize>\n<references>");
                safe_dprintf(session, ipset_print_number, IPSET_OPT_REFERENCES);
                safe_snprintf(session, "</references>\n");
-               if (MATCH_TYPENAME(type->name , "hash:")) {
+               if (ipset_data_test(data, IPSET_OPT_ELEMENTS)) {
                        safe_snprintf(session, "<numentries>");
                        safe_dprintf(session, ipset_print_number, IPSET_OPT_ELEMENTS);
                        safe_snprintf(session, "</numentries>\n");
index 7c8f56e66b3a63a664c28a2cc1f6aefdf79b6981..b97ea41a052ef3d99db2c1b1764809d33ec96376 100644 (file)
@@ -279,6 +279,11 @@ ipset add test 192.168.0.1 timeout 60
 .IP
 ipset \-exist add test 192.168.0.1 timeout 600
 .PP
+When listing the set, the number of entries printed in the header might be
+larger than the listed number of entries for sets with the timeout extensions:
+the number of entries in the set is updated when elements added/deleted to the
+set and periodically when the garbage colletor evicts the timed out entries.
+.PP
 .SS "counters, packets, bytes"
 All set types support the optional \fBcounters\fR
 option when creating a set. If the option is specified then the set is created
index c3166037f31e0533f830530edbc5cbdc1a3b681f..ad9a693eee4c337f20d866d9fc9e7bde1101bbb2 100644 (file)
@@ -1,7 +1,8 @@
 Name: test
 Type: bitmap:ip
 Header: range 2.0.0.1-2.1.0.0 timeout 5
-Size in memory: 524408
+Size in memory: 532640
 References: 0
+Number of entries: 1
 Members:
 2.1.0.0 timeout 0
index 3c94983d5e9519ac13909d8e64e4a300c5e47c6f..a9504f62923bee4c78213480421c5eb362b3876c 100644 (file)
@@ -1,7 +1,8 @@
 Name: test
 Type: bitmap:ip
 Header: range 2.0.0.0-2.0.255.255 timeout 5
-Size in memory: 524408
+Size in memory: 532640
 References: 0
+Number of entries: 1
 Members:
 2.0.0.0 timeout 0
index 78bce6c24ae1555ea6c9bfed14d3d829ab53e7e0..ddf81000cc8d09d4cc57387fefe345fd61c217ad 100644 (file)
@@ -1,7 +1,8 @@
 Name: test
 Type: bitmap:ip
 Header: range 10.0.0.0-10.255.255.255 netmask 24 timeout 5
-Size in memory: 524408
+Size in memory: 532640
 References: 0
+Number of entries: 1
 Members:
 10.255.255.0 timeout 0
index 3f4e06447a3e6c4a7828eb63679e81e85a734180..e1a4d432716d518b74be0f8db0c1d3f6f522bea1 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 0.0.0.0-255.255.255.255 netmask 16 timeout 5
-Size in memory: 524408
+Size in memory: 532640
 References: 0
+Number of entries: 2
 Members:
 0.0.0.0 timeout 0
 255.255.0.0 timeout 0
index e706b67e6d971403256d675881ce1c62927a58a6..7148a8de7b394cc34ab929767575888b5dae0e66 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 2.0.0.1-2.1.0.0 timeout x
-Size in memory: 524408
+Size in memory: 532640
 References: 0
+Number of entries: 6
 Members:
 2.0.0.1 timeout x
 2.0.0.128 timeout x
index 2d916352e181986d58348769c8305f08fea2ccbc..1d226653ab4c72fd314c65354f3a7bc087e81c48 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 2.0.0.0-2.0.255.255 timeout x
-Size in memory: 524408
+Size in memory: 532640
 References: 0
+Number of entries: 2
 Members:
 2.0.0.0 timeout x
 2.0.255.255 timeout x
index 68b1b0739ad630ddf8cf08eeb1483af890898f8a..c3eb34774d5ad2d4cdb25ec46f134450a02595cd 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 10.0.0.0-10.255.255.255 netmask 24 timeout x
-Size in memory: 524408
+Size in memory: 532640
 References: 0
+Number of entries: 258
 Members:
 10.0.0.0 timeout x
 10.8.0.0 timeout x
index 86bcacdd8c7a09305c03720fadcc5b671b590676..6d44c918ed90238b871950d005281b583a1e0187 100644 (file)
@@ -3,5 +3,6 @@ Type: bitmap:ip
 Header: range 2.0.0.1-2.1.0.0 comment
 Size in memory: 532640
 References: 0
+Number of entries: 1
 Members:
 2.0.0.1 comment "text message"
index 607b65a912e7febc90dbcda104b6cfe9f3ba09cb..1a096722b1a2930b107e590ae4a832fcf9a39a73 100644 (file)
@@ -3,6 +3,7 @@ Type: bitmap:ip
 Header: range 2.0.0.1-2.1.0.0 comment
 Size in memory: 532640
 References: 0
+Number of entries: 255
 Members:
 2.0.0.1 comment "text message 1"
 2.0.0.2 comment "text message 2"
index 19168a847a84e908f3fd0690b3f1dae91e706c64..7d6990f4814cdb9c85e9c15cbfcd5923e606d73b 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 2.0.0.1-2.1.0.0 timeout x comment
-Size in memory: 1581216
+Size in memory: 1056928
 References: 0
+Number of entries: 510
 Members:
 2.0.0.1 timeout x comment "text message 1"
 2.0.0.2 timeout x comment "text message 2"
index 54b0a3abc875f44effef8ed82c9e1b11b676b15a..9440b75ec310a00943e83b799be6e755c6c5ce3f 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 2.0.0.1-2.1.0.0 timeout x comment
-Size in memory: 1581216
+Size in memory: 1056928
 References: 0
+Number of entries: 510
 Members:
 2.0.1.1 timeout x comment "text message 1"
 2.0.1.2 timeout x comment "text message 2"
index c1c4360e7c0f13668f0e31a3b20761927bd4dfac..d3b99a89394a21fa8f9d3a4f6fc67a59010e0189 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 2.0.0.1-2.1.0.0
-Size in memory: 8232
+Size in memory: 8352
 References: 0
+Number of entries: 6
 Members:
 2.0.0.1
 2.0.0.128
index abfc98d4a75c064624b5ddf22badf5417bc07cc4..f9b311ddaad926aa5339a723b24aa7829a333a49 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 2.0.0.1-2.1.0.0
-Size in memory: 8232
+Size in memory: 8352
 References: 0
+Number of entries: 2
 Members:
 2.0.0.1
 2.1.0.0
index 932cad28f6dcefe83bf017ff357e2e7dd98aab96..c2c56913ae6455fe832e037cdf1868a6f308bc4a 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 2.0.0.0-2.0.255.255
-Size in memory: 8232
+Size in memory: 8352
 References: 0
+Number of entries: 2
 Members:
 2.0.0.0
 2.0.255.255
index ab391d01a3ac5104a1544d547c3c67c4b0a4ff20..3586211865ecde22c264274061e247892e4b01dc 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 10.0.0.0-10.255.255.255 netmask 24
-Size in memory: 8232
+Size in memory: 8352
 References: 0
+Number of entries: 258
 Members:
 10.0.0.0
 10.8.0.0
index eaff22091f55aff53d14f3319fd2330e8ec4e3b4..2042ee684ba54631b477205c9f7c23f7cd895d6d 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip
 Header: range 0.0.0.0-255.255.255.255 netmask 16
-Size in memory: 8232
+Size in memory: 8352
 References: 0
+Number of entries: 2
 Members:
 0.0.0.0
 255.255.0.0
index d37e5601c7a61d54d9bc5a2e29c09c3344c6628a..4268a2c58376dfdd27b47ea51dd8cce7ebeab95e 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip,mac
 Header: range 2.0.0.1-2.1.0.0
-Size in memory: 458864
+Size in memory: 532632
 References: 0
+Number of entries: 3
 Members:
 2.0.0.1,00:11:22:33:44:56
 2.0.0.2,00:11:22:33:44:55
index 0447c41d6f79ced07437ef5c615614a84ff0842f..a568148f821c876607ab93f58534367a7b0c2b24 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip,mac
 Header: range 2.0.0.0-2.0.255.255
-Size in memory: 458864
+Size in memory: 532632
 References: 0
+Number of entries: 3
 Members:
 2.0.0.0
 2.0.0.2,00:11:22:33:44:55
index 0c8bf6f692d49c4b43e1f8b7c54227f12e945fb4..f6a78c770ad76b0d68f42816803441b17acfc299 100644 (file)
@@ -1,7 +1,8 @@
 Name: test
 Type: bitmap:ip,mac
 Header: range 2.0.0.1-2.1.0.0 timeout x
-Size in memory: 1048688
+Size in memory: 1056920
 References: 0
+Number of entries: 1
 Members:
 2.1.0.0 timeout x
index bf78821447158787b04a8197d1d35679ebb446f9..78c78d354c4fac55761e2b091d669741e99dfd5a 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:ip,mac
 Header: range 2.0.0.1-2.1.0.0 timeout x
-Size in memory: 1048688
+Size in memory: 1056920
 References: 0
+Number of entries: 3
 Members:
 2.0.0.1,00:11:22:33:44:56 timeout x
 2.0.0.2,00:11:22:33:44:55 timeout x
index 4ff6b1faaeb8d0ebf2309c03f7fee45670a9815e..7f8657e00a5425c280fdaf2643f125da43fe412b 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:port
 Header: range 1-1024
-Size in memory: 152
+Size in memory: 276
 References: 0
+Number of entries: 2
 Members:
 1
 1024
index a34caba622b175c8fb8349e4c7f3676670fdb9e7..55ba0d0804659ec558cb738417c131ae343bd76a 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:port
 Header: range 0-65535
-Size in memory: 8216
+Size in memory: 8340
 References: 0
+Number of entries: 2
 Members:
 0
 65535
index 6afaf023b0f313d1bbeec368f11bc935fe8ba48a..d5756e6a29e6e50faa84122f9a40fad4d81f14b4 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:port
-Header: range 0-65535 timeout 8
-Elements: 1
-Size in memory: 524288
+Header: range 0-65535 timeout x
+Size in memory: 532628
 References: 0
+Number of entries: 2
 Members:
-65535 timeout 0
+0 timeout x
+65535 timeout x
index 441da01fcf35b7e1cabb38b3f416cadfc4b902c4..d5756e6a29e6e50faa84122f9a40fad4d81f14b4 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: bitmap:port
 Header: range 0-65535 timeout x
-Size in memory: 524400
+Size in memory: 532628
 References: 0
+Number of entries: 2
 Members:
 0 timeout x
 65535 timeout x
index c413c26a2262b96a455ccec176895ec4e262eed6..2925a73883064409bf6baa315f897f743f781dc3 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: list:set
 Header: size 8
-Size in memory: 112
+Size in memory: 224
 References: 0
+Number of entries: 2
 Members:
 foo
 bar
index 47ba1752fcaa3b8d87c59b70aa552127ee5b9e23..5446c14c828bc9a108ba234120c4e2e9f89ad07f 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: list:set
 Header: size 8
-Size in memory: 120
+Size in memory: 264
 References: 0
+Number of entries: 3
 Members:
 a
 b
index d1bb378e1e72bd5967e5eb0736fd7c40a5a0fed6..70fb52b5c6c11079efe3cdeb503865b5fe351b41 100644 (file)
@@ -1,8 +1,9 @@
 Name: test
 Type: list:set
 Header: size 8
-Size in memory: 120
+Size in memory: 224
 References: 0
+Number of entries: 2
 Members:
 a
 c
index 0a9e0b4a55dfc20a0276976c5a5a2699d050b22e..6be4b37425c63fa6617d7e7cdb680219718de4e4 100644 (file)
@@ -1,7 +1,8 @@
 Name: test
 Type: list:set
 Header: size 8
-Size in memory: 120
+Size in memory: 184
 References: 0
+Number of entries: 1
 Members:
 a