mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
netfilter: ipset: list:set set type support
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>
This commit is contained in:
committed by
Patrick McHardy
parent
21f45020a3
commit
f830837f0e
27
include/linux/netfilter/ipset/ip_set_list.h
Normal file
27
include/linux/netfilter/ipset/ip_set_list.h
Normal file
@@ -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 */
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
584
net/netfilter/ipset/ip_set_list_set.c
Normal file
584
net/netfilter/ipset/ip_set_list_set.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user