netfilter: nftables: allow re-computing sctp CRC-32C in 'payload' statements
authorDavide Caratti <dcaratti@redhat.com>
Thu, 15 Oct 2020 16:39:27 +0000 (18:39 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 15 Oct 2020 18:45:19 +0000 (11:45 -0700)
commit346e320cb2103edef709c4466a29140c4a8e527a
tree405af21ad80b77a0bfda44fa68bbf92051c9c979
parent54086c5a7f159749bc521706bae329cbce3971e9
netfilter: nftables: allow re-computing sctp CRC-32C in 'payload' statements

nftables payload statements are used to mangle SCTP headers, but they can
only replace the Internet Checksum. As a consequence, nftables rules that
mangle sport/dport/vtag in SCTP headers potentially generate packets that
are discarded by the receiver, unless the CRC-32C is "offloaded" (e.g the
rule mangles a skb having 'ip_summed' equal to 'CHECKSUM_PARTIAL'.

Fix this extending uAPI definitions and L4 checksum update function, in a
way that userspace programs (e.g. nft) can instruct the kernel to compute
CRC-32C in SCTP headers. Also ensure that LIBCRC32C is built if NF_TABLES
is 'y' or 'm' in the kernel build configuration.

Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/uapi/linux/netfilter/nf_tables.h
net/netfilter/Kconfig
net/netfilter/nft_payload.c