From dde5db44bea43b1134eb7361388d6a1a821efa22 Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Thu, 26 Mar 2015 13:10:20 +0000 Subject: set_elem: add timeout support Signed-off-by: Patrick McHardy Signed-off-by: Pablo Neira Ayuso --- include/libnftnl/set.h | 4 ++++ include/linux/netfilter/nf_tables.h | 4 ++++ include/set_elem.h | 2 ++ 3 files changed, 10 insertions(+) (limited to 'include') diff --git a/include/libnftnl/set.h b/include/libnftnl/set.h index 5c4109f..db38d6b 100644 --- a/include/libnftnl/set.h +++ b/include/libnftnl/set.h @@ -90,6 +90,8 @@ enum { NFT_SET_ELEM_ATTR_VERDICT, NFT_SET_ELEM_ATTR_CHAIN, NFT_SET_ELEM_ATTR_DATA, + NFT_SET_ELEM_ATTR_TIMEOUT, + NFT_SET_ELEM_ATTR_EXPIRATION, }; struct nft_set_elem; @@ -104,11 +106,13 @@ void nft_set_elem_add(struct nft_set *s, struct nft_set_elem *elem); void nft_set_elem_attr_unset(struct nft_set_elem *s, uint16_t attr); void nft_set_elem_attr_set(struct nft_set_elem *s, uint16_t attr, const void *data, uint32_t data_len); void nft_set_elem_attr_set_u32(struct nft_set_elem *s, uint16_t attr, uint32_t val); +void nft_set_elem_attr_set_u64(struct nft_set_elem *s, uint16_t attr, uint64_t val); void nft_set_elem_attr_set_str(struct nft_set_elem *s, uint16_t attr, const char *str); const void *nft_set_elem_attr_get(struct nft_set_elem *s, uint16_t attr, uint32_t *data_len); const char *nft_set_elem_attr_get_str(struct nft_set_elem *s, uint16_t attr); uint32_t nft_set_elem_attr_get_u32(struct nft_set_elem *s, uint16_t attr); +uint64_t nft_set_elem_attr_get_u64(struct nft_set_elem *s, uint16_t attr); bool nft_set_elem_attr_is_set(const struct nft_set_elem *s, uint16_t attr); diff --git a/include/linux/netfilter/nf_tables.h b/include/linux/netfilter/nf_tables.h index 8671505..6894ba3 100644 --- a/include/linux/netfilter/nf_tables.h +++ b/include/linux/netfilter/nf_tables.h @@ -289,12 +289,16 @@ enum nft_set_elem_flags { * @NFTA_SET_ELEM_KEY: key value (NLA_NESTED: nft_data) * @NFTA_SET_ELEM_DATA: data value of mapping (NLA_NESTED: nft_data_attributes) * @NFTA_SET_ELEM_FLAGS: bitmask of nft_set_elem_flags (NLA_U32) + * @NFTA_SET_ELEM_TIMEOUT: timeout value (NLA_U64) + * @NFTA_SET_ELEM_EXPIRATION: expiration time (NLA_U64) */ enum nft_set_elem_attributes { NFTA_SET_ELEM_UNSPEC, NFTA_SET_ELEM_KEY, NFTA_SET_ELEM_DATA, NFTA_SET_ELEM_FLAGS, + NFTA_SET_ELEM_TIMEOUT, + NFTA_SET_ELEM_EXPIRATION, __NFTA_SET_ELEM_MAX }; #define NFTA_SET_ELEM_MAX (__NFTA_SET_ELEM_MAX - 1) diff --git a/include/set_elem.h b/include/set_elem.h index 467c1a0..de864db 100644 --- a/include/set_elem.h +++ b/include/set_elem.h @@ -9,6 +9,8 @@ struct nft_set_elem { union nft_data_reg key; union nft_data_reg data; uint32_t flags; + uint64_t timeout; + uint64_t expiration; }; #endif -- cgit v1.2.3