diff options
37 files changed, 94 insertions, 48 deletions
diff --git a/include/libipset/utils.h b/include/libipset/utils.h index ceedd45..3cd29da 100644 --- a/include/libipset/utils.h +++ b/include/libipset/utils.h @@ -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) diff --git a/kernel/include/linux/netfilter/ipset/ip_set.h b/kernel/include/linux/netfilter/ipset/ip_set.h index f54389b..0ed3ac5 100644 --- a/kernel/include/linux/netfilter/ipset/ip_set.h +++ b/kernel/include/linux/netfilter/ipset/ip_set.h @@ -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 */ diff --git a/kernel/include/linux/netfilter/ipset/ip_set_bitmap.h b/kernel/include/linux/netfilter/ipset/ip_set_bitmap.h index 5e4662a..366d6c0 100644 --- a/kernel/include/linux/netfilter/ipset/ip_set_bitmap.h +++ b/kernel/include/linux/netfilter/ipset/ip_set_bitmap.h @@ -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, }; diff --git a/kernel/net/netfilter/ipset/ip_set_bitmap_gen.h b/kernel/net/netfilter/ipset/ip_set_bitmap_gen.h index b984bcf..efe87cf 100644 --- a/kernel/net/netfilter/ipset/ip_set_bitmap_gen.h +++ b/kernel/net/netfilter/ipset/ip_set_bitmap_gen.h @@ -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); diff --git a/kernel/net/netfilter/ipset/ip_set_hash_gen.h b/kernel/net/netfilter/ipset/ip_set_hash_gen.h index 2b59b20..191707d 100644 --- a/kernel/net/netfilter/ipset/ip_set_hash_gen.h +++ b/kernel/net/netfilter/ipset/ip_set_hash_gen.h @@ -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; diff --git a/kernel/net/netfilter/ipset/ip_set_list_set.c b/kernel/net/netfilter/ipset/ip_set_list_set.c index db55d58..db0198d 100644 --- a/kernel/net/netfilter/ipset/ip_set_list_set.c +++ b/kernel/net/netfilter/ipset/ip_set_list_set.c @@ -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; diff --git a/lib/errcode.c b/lib/errcode.c index 3881121..60220c7 100644 --- a/lib/errcode.c +++ b/lib/errcode.c @@ -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 diff --git a/lib/session.c b/lib/session.c index 2650755..95c253e 100644 --- a/lib/session.c +++ b/lib/session.c @@ -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"); diff --git a/src/ipset.8 b/src/ipset.8 index 7c8f56e..b97ea41 100644 --- a/src/ipset.8 +++ b/src/ipset.8 @@ -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 diff --git a/tests/bitmap:ip.t.list0 b/tests/bitmap:ip.t.list0 index c316603..ad9a693 100644 --- a/tests/bitmap:ip.t.list0 +++ b/tests/bitmap:ip.t.list0 @@ -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 diff --git a/tests/bitmap:ip.t.list1 b/tests/bitmap:ip.t.list1 index 3c94983..a9504f6 100644 --- a/tests/bitmap:ip.t.list1 +++ b/tests/bitmap:ip.t.list1 @@ -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 diff --git a/tests/bitmap:ip.t.list2 b/tests/bitmap:ip.t.list2 index 78bce6c..ddf8100 100644 --- a/tests/bitmap:ip.t.list2 +++ b/tests/bitmap:ip.t.list2 @@ -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 diff --git a/tests/bitmap:ip.t.list3 b/tests/bitmap:ip.t.list3 index 3f4e064..e1a4d43 100644 --- a/tests/bitmap:ip.t.list3 +++ b/tests/bitmap:ip.t.list3 @@ -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 diff --git a/tests/bitmap:ip.t.list4 b/tests/bitmap:ip.t.list4 index e706b67..7148a8d 100644 --- a/tests/bitmap:ip.t.list4 +++ b/tests/bitmap:ip.t.list4 @@ -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 diff --git a/tests/bitmap:ip.t.list5 b/tests/bitmap:ip.t.list5 index 2d91635..1d22665 100644 --- a/tests/bitmap:ip.t.list5 +++ b/tests/bitmap:ip.t.list5 @@ -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 diff --git a/tests/bitmap:ip.t.list6 b/tests/bitmap:ip.t.list6 index 68b1b07..c3eb347 100644 --- a/tests/bitmap:ip.t.list6 +++ b/tests/bitmap:ip.t.list6 @@ -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 diff --git a/tests/comment.t.list0 b/tests/comment.t.list0 index 86bcacd..6d44c91 100644 --- a/tests/comment.t.list0 +++ b/tests/comment.t.list0 @@ -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" diff --git a/tests/comment.t.list1 b/tests/comment.t.list1 index 607b65a..1a09672 100644 --- a/tests/comment.t.list1 +++ b/tests/comment.t.list1 @@ -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" diff --git a/tests/comment.t.list11 b/tests/comment.t.list11 index 19168a8..7d6990f 100644 --- a/tests/comment.t.list11 +++ b/tests/comment.t.list11 @@ -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" diff --git a/tests/comment.t.list12 b/tests/comment.t.list12 index 54b0a3a..9440b75 100644 --- a/tests/comment.t.list12 +++ b/tests/comment.t.list12 @@ -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" diff --git a/tests/ipmap.t.list0 b/tests/ipmap.t.list0 index c1c4360..d3b99a8 100644 --- a/tests/ipmap.t.list0 +++ b/tests/ipmap.t.list0 @@ -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 diff --git a/tests/ipmap.t.list1 b/tests/ipmap.t.list1 index abfc98d..f9b311d 100644 --- a/tests/ipmap.t.list1 +++ b/tests/ipmap.t.list1 @@ -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 diff --git a/tests/ipmap.t.list2 b/tests/ipmap.t.list2 index 932cad2..c2c5691 100644 --- a/tests/ipmap.t.list2 +++ b/tests/ipmap.t.list2 @@ -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 diff --git a/tests/ipmap.t.list3 b/tests/ipmap.t.list3 index ab391d0..3586211 100644 --- a/tests/ipmap.t.list3 +++ b/tests/ipmap.t.list3 @@ -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 diff --git a/tests/ipmap.t.list4 b/tests/ipmap.t.list4 index eaff220..2042ee6 100644 --- a/tests/ipmap.t.list4 +++ b/tests/ipmap.t.list4 @@ -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 diff --git a/tests/macipmap.t.list0 b/tests/macipmap.t.list0 index d37e560..4268a2c 100644 --- a/tests/macipmap.t.list0 +++ b/tests/macipmap.t.list0 @@ -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 diff --git a/tests/macipmap.t.list1 b/tests/macipmap.t.list1 index 0447c41..a568148 100644 --- a/tests/macipmap.t.list1 +++ b/tests/macipmap.t.list1 @@ -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 diff --git a/tests/macipmap.t.list2 b/tests/macipmap.t.list2 index 0c8bf6f..f6a78c7 100644 --- a/tests/macipmap.t.list2 +++ b/tests/macipmap.t.list2 @@ -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 diff --git a/tests/macipmap.t.list3 b/tests/macipmap.t.list3 index bf78821..78c78d3 100644 --- a/tests/macipmap.t.list3 +++ b/tests/macipmap.t.list3 @@ -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 diff --git a/tests/portmap.t.list0 b/tests/portmap.t.list0 index 4ff6b1f..7f8657e 100644 --- a/tests/portmap.t.list0 +++ b/tests/portmap.t.list0 @@ -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 diff --git a/tests/portmap.t.list1 b/tests/portmap.t.list1 index a34caba..55ba0d0 100644 --- a/tests/portmap.t.list1 +++ b/tests/portmap.t.list1 @@ -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 diff --git a/tests/portmap.t.list2 b/tests/portmap.t.list2 index 6afaf02..d5756e6 100644 --- a/tests/portmap.t.list2 +++ b/tests/portmap.t.list2 @@ -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 diff --git a/tests/portmap.t.list3 b/tests/portmap.t.list3 index 441da01..d5756e6 100644 --- a/tests/portmap.t.list3 +++ b/tests/portmap.t.list3 @@ -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 diff --git a/tests/setlist.t.list0 b/tests/setlist.t.list0 index c413c26..2925a73 100644 --- a/tests/setlist.t.list0 +++ b/tests/setlist.t.list0 @@ -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 diff --git a/tests/setlist.t.list1 b/tests/setlist.t.list1 index 47ba175..5446c14 100644 --- a/tests/setlist.t.list1 +++ b/tests/setlist.t.list1 @@ -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 diff --git a/tests/setlist.t.list2 b/tests/setlist.t.list2 index d1bb378..70fb52b 100644 --- a/tests/setlist.t.list2 +++ b/tests/setlist.t.list2 @@ -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 diff --git a/tests/setlist.t.list3 b/tests/setlist.t.list3 index 0a9e0b4..6be4b37 100644 --- a/tests/setlist.t.list3 +++ b/tests/setlist.t.list3 @@ -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 |