aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2015-04-11 05:46:39 -0400
committerPablo Neira Ayuso <pablo@netfilter.org>2015-04-13 14:12:31 -0400
commitf25ad2e907f110378159fe5e088aa13176faaa5b (patch)
tree9f3f8353dc536847f3d95cc58cbc0d9ae183fe0c /include
parent0b2d8a7b638b5034d2d68f6add8af94daaa1d4cd (diff)
netfilter: nf_tables: prepare for expressions associated to set elements
Preparation to attach expressions to set elements: add a set extension type to hold an expression and dump the expression information with the set element. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include')
-rw-r--r--include/net/netfilter/nf_tables.h7
-rw-r--r--include/uapi/linux/netfilter/nf_tables.h2
2 files changed, 9 insertions, 0 deletions
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index e21623cb7b20..d45a871b3da6 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -371,6 +371,7 @@ void nf_tables_unbind_set(const struct nft_ctx *ctx, struct nft_set *set,
371 * @NFT_SET_EXT_TIMEOUT: element timeout 371 * @NFT_SET_EXT_TIMEOUT: element timeout
372 * @NFT_SET_EXT_EXPIRATION: element expiration time 372 * @NFT_SET_EXT_EXPIRATION: element expiration time
373 * @NFT_SET_EXT_USERDATA: user data associated with the element 373 * @NFT_SET_EXT_USERDATA: user data associated with the element
374 * @NFT_SET_EXT_EXPR: expression assiociated with the element
374 * @NFT_SET_EXT_NUM: number of extension types 375 * @NFT_SET_EXT_NUM: number of extension types
375 */ 376 */
376enum nft_set_extensions { 377enum nft_set_extensions {
@@ -380,6 +381,7 @@ enum nft_set_extensions {
380 NFT_SET_EXT_TIMEOUT, 381 NFT_SET_EXT_TIMEOUT,
381 NFT_SET_EXT_EXPIRATION, 382 NFT_SET_EXT_EXPIRATION,
382 NFT_SET_EXT_USERDATA, 383 NFT_SET_EXT_USERDATA,
384 NFT_SET_EXT_EXPR,
383 NFT_SET_EXT_NUM 385 NFT_SET_EXT_NUM
384}; 386};
385 387
@@ -491,6 +493,11 @@ static inline struct nft_userdata *nft_set_ext_userdata(const struct nft_set_ext
491 return nft_set_ext(ext, NFT_SET_EXT_USERDATA); 493 return nft_set_ext(ext, NFT_SET_EXT_USERDATA);
492} 494}
493 495
496static inline struct nft_expr *nft_set_ext_expr(const struct nft_set_ext *ext)
497{
498 return nft_set_ext(ext, NFT_SET_EXT_EXPR);
499}
500
494static inline bool nft_set_elem_expired(const struct nft_set_ext *ext) 501static inline bool nft_set_elem_expired(const struct nft_set_ext *ext)
495{ 502{
496 return nft_set_ext_exists(ext, NFT_SET_EXT_EXPIRATION) && 503 return nft_set_ext_exists(ext, NFT_SET_EXT_EXPIRATION) &&
diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
index be8584c95297..f9c5af22a6af 100644
--- a/include/uapi/linux/netfilter/nf_tables.h
+++ b/include/uapi/linux/netfilter/nf_tables.h
@@ -322,6 +322,7 @@ enum nft_set_elem_flags {
322 * @NFTA_SET_ELEM_TIMEOUT: timeout value (NLA_U64) 322 * @NFTA_SET_ELEM_TIMEOUT: timeout value (NLA_U64)
323 * @NFTA_SET_ELEM_EXPIRATION: expiration time (NLA_U64) 323 * @NFTA_SET_ELEM_EXPIRATION: expiration time (NLA_U64)
324 * @NFTA_SET_ELEM_USERDATA: user data (NLA_BINARY) 324 * @NFTA_SET_ELEM_USERDATA: user data (NLA_BINARY)
325 * @NFTA_SET_ELEM_EXPR: expression (NLA_NESTED: nft_expr_attributes)
325 */ 326 */
326enum nft_set_elem_attributes { 327enum nft_set_elem_attributes {
327 NFTA_SET_ELEM_UNSPEC, 328 NFTA_SET_ELEM_UNSPEC,
@@ -331,6 +332,7 @@ enum nft_set_elem_attributes {
331 NFTA_SET_ELEM_TIMEOUT, 332 NFTA_SET_ELEM_TIMEOUT,
332 NFTA_SET_ELEM_EXPIRATION, 333 NFTA_SET_ELEM_EXPIRATION,
333 NFTA_SET_ELEM_USERDATA, 334 NFTA_SET_ELEM_USERDATA,
335 NFTA_SET_ELEM_EXPR,
334 __NFTA_SET_ELEM_MAX 336 __NFTA_SET_ELEM_MAX
335}; 337};
336#define NFTA_SET_ELEM_MAX (__NFTA_SET_ELEM_MAX - 1) 338#define NFTA_SET_ELEM_MAX (__NFTA_SET_ELEM_MAX - 1)