netfilter: accounting rework: ct_extend + 64bit counters (v4)
authorKrzysztof Piotr Oledzki <ole@ans.pl>
Mon, 21 Jul 2008 17:01:34 +0000 (10:01 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 21 Jul 2008 17:10:58 +0000 (10:10 -0700)
commit584015727a3b88b46602b20077b46cd04f8b4ab3
treea9b4ec18e2181e03ee24b59b30f7408bcbcf140c
parent07a7c1070ed382ad4562e3a0d453fd2001d92f7b
netfilter: accounting rework: ct_extend + 64bit counters (v4)

Initially netfilter has had 64bit counters for conntrack-based accounting, but
it was changed in 2.6.14 to save memory. Unfortunately in-kernel 64bit counters are
still required, for example for "connbytes" extension. However, 64bit counters
waste a lot of memory and it was not possible to enable/disable it runtime.

This patch:
 - reimplements accounting with respect to the extension infrastructure,
 - makes one global version of seq_print_acct() instead of two seq_print_counters(),
 - makes it possible to enable it at boot time (for CONFIG_SYSCTL/CONFIG_SYSFS=n),
 - makes it possible to enable/disable it at runtime by sysctl or sysfs,
 - extends counters from 32bit to 64bit,
 - renames ip_conntrack_counter -> nf_conn_counter,
 - enables accounting code unconditionally (no longer depends on CONFIG_NF_CT_ACCT),
 - set initial accounting enable state based on CONFIG_NF_CT_ACCT
 - removes buggy IPCT_COUNTER_FILLING event handling.

If accounting is enabled newly created connections get additional acct extend.
Old connections are not changed as it is not possible to add a ct_extend area
to confirmed conntrack. Accounting is performed for all connections with
acct extend regardless of a current state of "net.netfilter.nf_conntrack_acct".

Signed-off-by: Krzysztof Piotr Oledzki <ole@ans.pl>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 files changed:
Documentation/feature-removal-schedule.txt
Documentation/kernel-parameters.txt
include/linux/netfilter/nf_conntrack_common.h
include/linux/netfilter/nfnetlink_conntrack.h
include/net/netfilter/nf_conntrack.h
include/net/netfilter/nf_conntrack_acct.h [new file with mode: 0644]
include/net/netfilter/nf_conntrack_extend.h
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
net/netfilter/Kconfig
net/netfilter/Makefile
net/netfilter/nf_conntrack_acct.c [new file with mode: 0644]
net/netfilter/nf_conntrack_core.c
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_standalone.c
net/netfilter/xt_connbytes.c