]> git.ipfire.org Git - thirdparty/nftables.git/commit
src: add rule batching support
authorPablo Neira Ayuso <pablo@netfilter.org>
Sun, 22 Sep 2013 18:41:03 +0000 (20:41 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 23 Sep 2013 18:28:22 +0000 (20:28 +0200)
commita72315d2bad47d99a18376290dd62336ca94ed95
treef0c194f4ac38b1363b58fc33cd83c2b547b52bcb
parente391b72b611403d184bbb26e3d076d543c7ea7c6
src: add rule batching support

This patch allows nft to put all rule update messages into one
single batch that is sent to the kernel if `-f' option is used.
In order to provide fine grain error reporting, I decided to
to correlate the netlink message sequence number with the
correspoding command sequence number, which is the same. Thus,
nft can identify what rules trigger problems inside a batch
and report them accordingly.

Moreover, to avoid playing buffer size games at batch building
stage, ie. guess what is the final size of the batch for this
ruleset update will be, this patch collects batch pages that
are converted to iovec to ensure linearization when the batch
is sent to the kernel. This reduces the amount of unnecessary
memory usage that is allocated for the batch.

This patch uses the libmnl nlmsg batching infrastructure and it
requires the kernel patch entitled (netfilter: nfnetlink: add batch
support and use it from nf_tables).

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/mnl.h
include/netlink.h
include/rule.h
src/main.c
src/mnl.c
src/netlink.c
src/rule.c