From 20a52295775126d1bd5740b6543d1ea8ea239b1b Mon Sep 17 00:00:00 2001 From: Jozsef Kadlecsik Date: Wed, 31 Aug 2011 15:56:34 +0200 Subject: Propagate "expose userspace-relevant parts in ip_set.h" to ipset source With the header file restructuring, the ipset userspace enums IPSET_DIM_* clash with the kernel ones. In this patch the userspace is converted to use the kernel part enums and thus we got rid of userspace enums IPSET_DIM_*. --- include/libipset/linux_ip_set.h | 28 ++++++++++++++++++++++++++++ include/libipset/types.h | 11 +++-------- 2 files changed, 31 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/libipset/linux_ip_set.h b/include/libipset/linux_ip_set.h index fb4b69e..b336d43 100644 --- a/include/libipset/linux_ip_set.h +++ b/include/libipset/linux_ip_set.h @@ -11,6 +11,8 @@ * published by the Free Software Foundation. */ +#include + /* The protocol version */ #define IPSET_PROTOCOL 6 @@ -168,4 +170,30 @@ enum ipset_adt { IPSET_CADT_MAX, }; +/* Sets are identified by an index in kernel space. Tweak with ip_set_id_t + * and IPSET_INVALID_ID if you want to increase the max number of sets. + */ +typedef __u16 ip_set_id_t; + +#define IPSET_INVALID_ID 65535 + +enum ip_set_dim { + IPSET_DIM_ZERO = 0, + IPSET_DIM_ONE, + IPSET_DIM_TWO, + IPSET_DIM_THREE, + /* Max dimension in elements. + * If changed, new revision of iptables match/target is required. + */ + IPSET_DIM_MAX = 6, +}; + +/* Option flags for kernel operations */ +enum ip_set_kopt { + IPSET_INV_MATCH = (1 << IPSET_DIM_ZERO), + IPSET_DIM_ONE_SRC = (1 << IPSET_DIM_ONE), + IPSET_DIM_TWO_SRC = (1 << IPSET_DIM_TWO), + IPSET_DIM_THREE_SRC = (1 << IPSET_DIM_THREE), +}; + #endif /* __IP_SET_H */ diff --git a/include/libipset/types.h b/include/libipset/types.h index d3a0b4c..d2801f1 100644 --- a/include/libipset/types.h +++ b/include/libipset/types.h @@ -24,13 +24,8 @@ * - AF_INET46: type supports both IPv4 and IPv6 */ -/* Set dimensions */ -enum { - IPSET_DIM_ONE, /* foo */ - IPSET_DIM_TWO, /* foo,bar */ - IPSET_DIM_THREE, /* foo,bar,fie */ - IPSET_DIM_MAX, -}; +/* The maximal type dimension userspace supports */ +#define IPSET_DIM_UMAX 3 /* Parser options */ enum { @@ -76,7 +71,7 @@ struct ipset_type { uint8_t dimension; /* elem dimension */ int8_t kernel_check; /* kernel check */ bool last_elem_optional; /* last element optional */ - struct ipset_elem elem[IPSET_DIM_MAX]; /* parse elem */ + struct ipset_elem elem[IPSET_DIM_UMAX]; /* parse elem */ ipset_parsefn compat_parse_elem; /* compatibility parser */ const struct ipset_arg *args[IPSET_CADT_MAX]; /* create/ADT args besides elem */ uint64_t mandatory[IPSET_CADT_MAX]; /* create/ADT mandatory flags */ -- cgit v1.2.3