Skip to content

Commit

Permalink
netfilter: ipset: list:set set type support
Browse files Browse the repository at this point in the history
The module implements the list:set type support in two flavours:
without and with timeout. The sets has two sides: for the userspace,
they store the names of other (non list:set type of) sets: one can add,
delete and test set names. For the kernel, it forms an ordered union of
the member sets: the members sets are tried in order when elements are
added, deleted and tested and the process stops at the first success.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Patrick McHardy <kaber@trash.net>
  • Loading branch information
Jozsef Kadlecsik authored and kaber committed Feb 1, 2011
1 parent 21f4502 commit f830837
Show file tree
Hide file tree
Showing 4 changed files with 624 additions and 0 deletions.
27 changes: 27 additions & 0 deletions include/linux/netfilter/ipset/ip_set_list.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#ifndef __IP_SET_LIST_H
#define __IP_SET_LIST_H

/* List type specific error codes */
enum {
/* Set name to be added/deleted/tested does not exist. */
IPSET_ERR_NAME = IPSET_ERR_TYPE_SPECIFIC,
/* list:set type is not permitted to add */
IPSET_ERR_LOOP,
/* Missing reference set */
IPSET_ERR_BEFORE,
/* Reference set does not exist */
IPSET_ERR_NAMEREF,
/* Set is full */
IPSET_ERR_LIST_FULL,
/* Reference set is not added to the set */
IPSET_ERR_REF_EXIST,
};

#ifdef __KERNEL__

#define IP_SET_LIST_DEFAULT_SIZE 8
#define IP_SET_LIST_MIN_SIZE 4

#endif /* __KERNEL__ */

#endif /* __IP_SET_LIST_H */
10 changes: 10 additions & 0 deletions net/netfilter/ipset/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -108,4 +108,14 @@ config IP_SET_HASH_NETPORT

To compile it as a module, choose M here. If unsure, say N.

config IP_SET_LIST_SET
tristate "list:set set support"
depends on IP_SET
help
This option adds the list:set set type support. In this
kind of set one can store the name of other sets and it forms
an ordered union of the member sets.

To compile it as a module, choose M here. If unsure, say N.

endif # IP_SET
3 changes: 3 additions & 0 deletions net/netfilter/ipset/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,6 @@ obj-$(CONFIG_IP_SET_HASH_IPPORTIP) += ip_set_hash_ipportip.o
obj-$(CONFIG_IP_SET_HASH_IPPORTNET) += ip_set_hash_ipportnet.o
obj-$(CONFIG_IP_SET_HASH_NET) += ip_set_hash_net.o
obj-$(CONFIG_IP_SET_HASH_NETPORT) += ip_set_hash_netport.o

# list types
obj-$(CONFIG_IP_SET_LIST_SET) += ip_set_list_set.o
Loading

0 comments on commit f830837

Please sign in to comment.