diff options
author/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=kadlec/ </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=kadlec/>2005-04-11 07:39:43 +0000
committer/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=kadlec/ </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=kadlec/>2005-04-11 07:39:43 +0000
commitc85ad41ab9078162d42e9bc4e0df66e617f1302d (patch)
parent2a389d744d8957692eb7554402c1f99e161d8a71 (diff)
iptree set type added
3 files changed, 71 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 7305656..a8c189a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,7 @@
- More careful resizing by avoiding locking completely
- stdin stored internally in a temporary file, so we can feed 'ipset -R'
from a pipe
+ - iptree maptype added
- Lock debugging used with debugless lock definiton (Piotr Chytla and
@@ -13,12 +14,14 @@
- Bindings were not properly filled out at listing (kernel)
- When listing sets from kernel, id was not added to the set structure
- - nethash hash type added
+ - nethash maptype added
- ipset manpage corrections (macipmap)
- Missing -fPIC in Makefile (Robert Iakobashvili)
- Cut'n'paste bug at saving macipmap types (Vincent Bernat).
+ - Bug in printing/saving SET targets reported and fixed by Michal
+ Pokrywka
- Chaining of sets are changed: child sets replaced by bindings
diff --git a/Makefile b/Makefile
index 39fe317..694c6e4 100644
--- a/Makefile
+++ b/Makefile
@@ -8,7 +8,7 @@ ifndef KERNEL_DIR
@@ -23,7 +23,7 @@ RELEASE_DIR:=/tmp
CFLAGS:=$(COPT_FLAGS) -Wall -Wunused -I$(KERNEL_DIR)/include -I. #-g -DIPSET_DEBUG #-pg # -DIPTC_DEBUG
-SETTYPES:=ipmap portmap macipmap iphash nethash
+SETTYPES:=ipmap portmap macipmap iphash nethash iptree
SHARED_LIBS=$(foreach T, $(SETTYPES),libipset_$(T).so)
diff --git a/ipset.8 b/ipset.8
index 663d282..e5c4d82 100644
--- a/ipset.8
+++ b/ipset.8
@@ -245,6 +245,18 @@ When the optional
.B "--matchunset"
parameter specified, IP addresses which could be stored
in the set but not set yet, will always match.
+Please note, the
+netfilter kernel modules
+use the source MAC address from the packet to match, add or delete
+entries from a macipmap type of set.
.SS portmap
The portmap set type uses a memory range, where each bit represents
one port. A portmap set type can store up to 65535 ports.
@@ -288,9 +300,62 @@ When the optional
.B "--netmask"
parameter specified, network addresses will be
stored in the set instead of IP addresses.
+.SS nethash
+The nethash set type uses a hash to store different size of
+network addresses. The
+"address" used in the ipset command must be in the form
+where the CIDR block size must be in the inclusive range of 1-31.
+In order to avoid clashes in the hash,
+double-hashing and, as a last resort, dynamic growing of the hash performed.
+Options to use when creating an iphash set:
+.BR "--hashsize " hashsize
+The initial hash size (default 1024)
+.BR "--probes " probes
+How many times try to resolve clashing at adding an IP to the hash
+by double-hashing (default 2).
+.BR "--resize " percent
+Increase the hash size by this many percent (default 50) when adding
+an IP to the hash could not be performed after
+An IP address will be in a nethash type of set if it is in any of the
+netblocks added to the set, where the matching start from the smallest
+size of netblock to the biggest ones. When adding/deleting IP addresses
+to a nethash set by the
+netfilter kernel module, it will be added/deleted by the smallest
+netblock size which can be found in the set.
+.SS iptree
+The iptree set type uses a tree to store IP addresses, optionally
+with timeout values.
+Options to use when creating an iptree set:
+.BR "--timeout " value
+The timeout value for the entries in seconds (default 0)
+When adding an IP address to a set, one may add it with a specific timeout
+value using the syntax
+.I IP%timeout-value.
Setnames starting with colon (:) cannot be defined. Zero valued set
entries cannot be used.
+If you want to store same size subnets from a given network
+(say /24 blocks from a /8 network), use the ipmap set type.
+If you want to store random same size networks (say random /24 blocks),
+use the iphash set type. If you have got random size of netblocks,
+use nethash.
Various error messages are printed to standard error. The exit code
is 0 for correct functioning. Errors which appear to be caused by