From 54254071d12482d0874dead2e49d1cb03076d3f9 Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Sun, 12 Apr 2015 20:17:51 +0100 Subject: expr: add support for the dynset expr Signed-off-by: Patrick McHardy --- include/buffer.h | 3 +++ include/libnftnl/expr.h | 9 +++++++++ include/linux/netfilter/nf_tables.h | 27 +++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) (limited to 'include') diff --git a/include/buffer.h b/include/buffer.h index 9d1cb8b..52942ed 100644 --- a/include/buffer.h +++ b/include/buffer.h @@ -66,12 +66,15 @@ int nft_buf_reg(struct nft_buf *b, int type, union nft_data_reg *reg, #define QTHRESH "qthreshold" #define RATE "rate" #define SET "set" +#define SET_NAME "set_name" #define SIZE "size" #define SNAPLEN "snaplen" #define SREG_ADDR_MAX "sreg_addr_max" #define SREG_ADDR_MIN "sreg_addr_min" #define SREG_PROTO_MAX "sreg_proto_max" #define SREG_PROTO_MIN "sreg_proto_min" +#define SREG_KEY "sreg_key" +#define SREG_DATA "sreg_data" #define SREG "sreg" #define TABLE "table" #define TOTAL "total" diff --git a/include/libnftnl/expr.h b/include/libnftnl/expr.h index 9f25993..7bc0273 100644 --- a/include/libnftnl/expr.h +++ b/include/libnftnl/expr.h @@ -110,6 +110,15 @@ enum { NFT_EXPR_LOOKUP_SET_ID, }; +enum { + NFT_EXPR_DYNSET_SREG_KEY = NFT_RULE_EXPR_ATTR_BASE, + NFT_EXPR_DYNSET_SREG_DATA, + NFT_EXPR_DYNSET_OP, + NFT_EXPR_DYNSET_TIMEOUT, + NFT_EXPR_DYNSET_SET_NAME, + NFT_EXPR_DYNSET_SET_ID, +}; + enum { NFT_EXPR_LOG_PREFIX = NFT_RULE_EXPR_ATTR_BASE, NFT_EXPR_LOG_GROUP, diff --git a/include/linux/netfilter/nf_tables.h b/include/linux/netfilter/nf_tables.h index 334b389..0e96443 100644 --- a/include/linux/netfilter/nf_tables.h +++ b/include/linux/netfilter/nf_tables.h @@ -516,6 +516,33 @@ enum nft_lookup_attributes { }; #define NFTA_LOOKUP_MAX (__NFTA_LOOKUP_MAX - 1) +enum nft_dynset_ops { + NFT_DYNSET_OP_ADD, + NFT_DYNSET_OP_UPDATE, +}; + +/** + * enum nft_dynset_attributes - dynset expression attributes + * + * @NFTA_DYNSET_SET_NAME: name of set the to add data to (NLA_STRING) + * @NFTA_DYNSET_SET_ID: uniquely identifier of the set in the transaction (NLA_U32) + * @NFTA_DYNSET_OP: operation (NLA_U32) + * @NFTA_DYNSET_SREG_KEY: source register of the key (NLA_U32) + * @NFTA_DYNSET_SREG_DATA: source register of the data (NLA_U32) + * @NFTA_DYNSET_TIMEOUT: timeout value for the new element (NLA_U64) + */ +enum nft_dynset_attributes { + NFTA_DYNSET_UNSPEC, + NFTA_DYNSET_SET_NAME, + NFTA_DYNSET_SET_ID, + NFTA_DYNSET_OP, + NFTA_DYNSET_SREG_KEY, + NFTA_DYNSET_SREG_DATA, + NFTA_DYNSET_TIMEOUT, + __NFTA_DYNSET_MAX, +}; +#define NFTA_DYNSET_MAX (__NFTA_DYNSET_MAX - 1) + /** * enum nft_payload_bases - nf_tables payload expression offset bases * -- cgit v1.2.3