summaryrefslogtreecommitdiffstats
path: root/kernel/include/linux/netfilter_ipv4/ip_set_bitmaps.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include/linux/netfilter_ipv4/ip_set_bitmaps.h')
-rw-r--r--kernel/include/linux/netfilter_ipv4/ip_set_bitmaps.h21
1 files changed, 10 insertions, 11 deletions
diff --git a/kernel/include/linux/netfilter_ipv4/ip_set_bitmaps.h b/kernel/include/linux/netfilter_ipv4/ip_set_bitmaps.h
index 90e87e3..da3493f 100644
--- a/kernel/include/linux/netfilter_ipv4/ip_set_bitmaps.h
+++ b/kernel/include/linux/netfilter_ipv4/ip_set_bitmaps.h
@@ -77,22 +77,21 @@ type##_list_header(const struct ip_set *set, void *data) \
__##type##_list_header(map, header); \
}
-#define BITMAP_LIST_MEMBERS_SIZE(type) \
+#define BITMAP_LIST_MEMBERS_SIZE(type, dtype, sizeid, testfn) \
static int \
-type##_list_members_size(const struct ip_set *set) \
+type##_list_members_size(const struct ip_set *set, char dont_align) \
{ \
const struct ip_set_##type *map = set->data; \
+ ip_set_ip_t i, elements = 0; \
\
- return map->size; \
-}
-
-#define BITMAP_LIST_MEMBERS(type) \
-static void \
-type##_list_members(const struct ip_set *set, void *data) \
-{ \
- const struct ip_set_##type *map = set->data; \
+ if (dont_align) \
+ return map->size; \
+ \
+ for (i = 0; i < sizeid; i++) \
+ if (testfn) \
+ elements++; \
\
- memcpy(data, map->members, map->size); \
+ return elements * IPSET_ALIGN(sizeof(dtype)); \
}
#define IP_SET_TYPE(type, __features) \