/* Calculate the actual memory size of the set data */
static size_t
-mtype_memsize(const struct mtype *map)
+mtype_memsize(const struct mtype *map, size_t dsize)
{
- return sizeof(*map) + map->memsize;
+ size_t memsize = sizeof(*map) +
+ map->memsize +
+ map->elements * dsize;
+ return memsize;
}
static int
{
const struct mtype *map = set->data;
struct nlattr *nested;
- size_t memsize = mtype_memsize(map) + set->ext_size;
+ size_t memsize = mtype_memsize(map, set->dsize) + set->ext_size;
nested = ipset_nest_start(skb, IPSET_ATTR_DATA);
if (!nested)
{
struct bitmap_ipmac *map = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct bitmap_ipmac_adt_elem e = { .id = 0, .add_mac = 1 };
+ struct bitmap_ipmac_adt_elem e = { .id = 0, .add_mac = 1 };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
u32 ip;