netfilter: nft_payload: add packet mangling support
Add support for mangling packet payload. Checksum for the specified base header is updated automatically if requested, however no updates for any kind of pseudo headers are supported, meaning no stateless NAT is supported. For checksum updates different checksumming methods can be specified. The currently supported methods are NONE for no checksum updates, and INET for internet type checksums. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:

committed by
Pablo Neira Ayuso

parent
a9ecfbe7fc
commit
7ec3f7b47b
@@ -597,6 +597,17 @@ enum nft_payload_bases {
|
||||
NFT_PAYLOAD_TRANSPORT_HEADER,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nft_payload_csum_types - nf_tables payload expression checksum types
|
||||
*
|
||||
* @NFT_PAYLOAD_CSUM_NONE: no checksumming
|
||||
* @NFT_PAYLOAD_CSUM_INET: internet checksum (RFC 791)
|
||||
*/
|
||||
enum nft_payload_csum_types {
|
||||
NFT_PAYLOAD_CSUM_NONE,
|
||||
NFT_PAYLOAD_CSUM_INET,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nft_payload_attributes - nf_tables payload expression netlink attributes
|
||||
*
|
||||
@@ -604,6 +615,9 @@ enum nft_payload_bases {
|
||||
* @NFTA_PAYLOAD_BASE: payload base (NLA_U32: nft_payload_bases)
|
||||
* @NFTA_PAYLOAD_OFFSET: payload offset relative to base (NLA_U32)
|
||||
* @NFTA_PAYLOAD_LEN: payload length (NLA_U32)
|
||||
* @NFTA_PAYLOAD_SREG: source register to load data from (NLA_U32: nft_registers)
|
||||
* @NFTA_PAYLOAD_CSUM_TYPE: checksum type (NLA_U32)
|
||||
* @NFTA_PAYLOAD_CSUM_OFFSET: checksum offset relative to base (NLA_U32)
|
||||
*/
|
||||
enum nft_payload_attributes {
|
||||
NFTA_PAYLOAD_UNSPEC,
|
||||
@@ -611,6 +625,9 @@ enum nft_payload_attributes {
|
||||
NFTA_PAYLOAD_BASE,
|
||||
NFTA_PAYLOAD_OFFSET,
|
||||
NFTA_PAYLOAD_LEN,
|
||||
NFTA_PAYLOAD_SREG,
|
||||
NFTA_PAYLOAD_CSUM_TYPE,
|
||||
NFTA_PAYLOAD_CSUM_OFFSET,
|
||||
__NFTA_PAYLOAD_MAX
|
||||
};
|
||||
#define NFTA_PAYLOAD_MAX (__NFTA_PAYLOAD_MAX - 1)
|
||||
|
Reference in New Issue
Block a user