linux/net
Jozsef Kadlecsik a7b4f989a6 netfilter: ipset: IP set core support
The patch adds the IP set core support to the kernel.

The IP set core implements a netlink (nfnetlink) based protocol by which
one can create, destroy, flush, rename, swap, list, save, restore sets,
and add, delete, test elements from userspace. For simplicity (and backward
compatibilty and for not to force ip(6)tables to be linked with a netlink
library) reasons a small getsockopt-based protocol is also kept in order
to communicate with the ip(6)tables match and target.

The netlink protocol passes all u16, etc values in network order with
NLA_F_NET_BYTEORDER flag. The protocol enforces the proper use of the
NLA_F_NESTED and NLA_F_NET_BYTEORDER flags.

For other kernel subsystems (netfilter match and target) the API contains
the functions to add, delete and test elements in sets and the required calls
to get/put refereces to the sets before those operations can be performed.

The set types (which are implemented in independent modules) are stored
in a simple RCU protected list. A set type may have variants: for example
without timeout or with timeout support, for IPv4 or for IPv6. The sets
(i.e. the pointers to the sets) are stored in an array. The sets are
identified by their index in the array, which makes possible easy and
fast swapping of sets. The array is protected indirectly by the nfnl
mutex from nfnetlink. The content of the sets are protected by the rwlock
of the set.

There are functional differences between the add/del/test functions
for the kernel and userspace:

- kernel add/del/test: works on the current packet (i.e. one element)
- kernel test: may trigger an "add" operation  in order to fill
  out unspecified parts of the element from the packet (like MAC address)
- userspace add/del: works on the netlink message and thus possibly
  on multiple elements from the IPSET_ATTR_ADT container attribute.
- userspace add: may trigger resizing of a set

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Patrick McHardy <kaber@trash.net>
2011-02-01 15:28:35 +01:00
..
9p net: cleanup unused macros in net directory 2011-01-19 23:20:04 -08:00
802
8021q
appletalk
atm
ax25
batman-adv batman-adv: Use "__attribute__" shortcut macros 2011-01-16 03:25:19 +01:00
bluetooth
bridge netfilter: ebt_ip6: allow matching on ipv6-icmp types/codes 2011-01-13 12:05:12 +01:00
caif net: cleanup unused macros in net directory 2011-01-19 23:20:04 -08:00
can can: test size of struct sockaddr in sendmsg 2011-01-15 20:56:42 -08:00
ceph Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2011-01-13 10:25:24 -08:00
core net: implement mechanism for HW based QOS 2011-01-19 23:31:10 -08:00
dcb
dccp Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
decnet net: cleanup unused macros in net directory 2011-01-19 23:20:04 -08:00
dns_resolver
dsa
econet
ethernet eth: fix new kernel-doc warning 2011-01-12 19:00:40 -08:00
ieee802154
ipv4 netfilter: nf_nat: place conntrack in source hash after SNAT is done 2011-01-20 15:49:52 +01:00
ipv6 netfilter: add a missing include in nf_conntrack_reasm.c 2011-01-20 21:00:38 +01:00
ipx
irda
iucv
key
l2tp
lapb
llc
mac80211 mac80211: use maximum number of AMPDU frames as default in BA RX 2011-01-13 15:46:45 -05:00
netfilter netfilter: ipset: IP set core support 2011-02-01 15:28:35 +01:00
netlabel
netlink
netrom
packet net: cleanup unused macros in net directory 2011-01-19 23:20:04 -08:00
phonet
rds net: cleanup unused macros in net directory 2011-01-19 23:20:04 -08:00
rfkill
rose
rxrpc rxrpc: rxrpc_workqueue isn't used during memory reclaim 2011-01-14 09:25:11 -08:00
sched Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 2011-01-20 00:06:15 -08:00
sctp
sunrpc Merge branch 'for-2.6.38' of git://linux-nfs.org/~bfields/linux 2011-01-14 13:17:26 -08:00
tipc
unix af_unix: coding style: remove one level of indentation in unix_shutdown() 2011-01-19 23:31:11 -08:00
wanrouter net: cleanup unused macros in net directory 2011-01-19 23:20:04 -08:00
wimax
wireless
x25
xfrm
compat.c
Kconfig Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
Makefile
nonet.c
socket.c
sysctl_net.c
TUNABLE