netfilter: nf_tables: add nft_dup expression
This new expression uses the nf_dup engine to clone packets to a given gateway. Unlike xt_TEE, we use an index to indicate output interface which should be fine at this stage. Moreover, change to the preemtion-safe this_cpu_read(nf_skb_duplicated) from nf_dup_ipv{4,6} to silence a lockdep splat. Based on the original tee expression from Arturo Borrero Gonzalez, although this patch has diverted quite a bit from this initial effort due to the change to support maps. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
@@ -935,6 +935,20 @@ enum nft_redir_attributes {
|
||||
};
|
||||
#define NFTA_REDIR_MAX (__NFTA_REDIR_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum nft_dup_attributes - nf_tables dup expression netlink attributes
|
||||
*
|
||||
* @NFTA_DUP_SREG_ADDR: source register of address (NLA_U32: nft_registers)
|
||||
* @NFTA_DUP_SREG_DEV: source register of output interface (NLA_U32: nft_register)
|
||||
*/
|
||||
enum nft_dup_attributes {
|
||||
NFTA_DUP_UNSPEC,
|
||||
NFTA_DUP_SREG_ADDR,
|
||||
NFTA_DUP_SREG_DEV,
|
||||
__NFTA_DUP_MAX
|
||||
};
|
||||
#define NFTA_DUP_MAX (__NFTA_DUP_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum nft_gen_attributes - nf_tables ruleset generation attributes
|
||||
*
|
||||
|
Reference in New Issue
Block a user