]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
src: add nft_*_attr_is_set
authorPablo Neira Ayuso <pablo@netfilter.org>
Sun, 16 Jun 2013 22:39:38 +0000 (00:39 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 17 Jun 2013 19:07:43 +0000 (21:07 +0200)
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
12 files changed:
include/libnftables/chain.h
include/libnftables/expr.h
include/libnftables/rule.h
include/libnftables/set.h
include/libnftables/table.h
src/chain.c
src/expr.c
src/libnftables.map
src/rule.c
src/set.c
src/set_elem.c
src/table.c

index 313c26ada51a39cf5931e5a77398f0de3f70ef16..29f7bc755707d9570fa178974438457f4e47fc20 100644 (file)
@@ -2,6 +2,7 @@
 #define _CHAIN_H_
 
 #include <stdint.h>
+#include <stdbool.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -26,6 +27,7 @@ enum {
        NFT_CHAIN_ATTR_TYPE,
 };
 
+bool nft_chain_attr_is_set(struct nft_chain *c, uint16_t attr);
 void nft_chain_attr_unset(struct nft_chain *c, uint16_t attr);
 void nft_chain_attr_set(struct nft_chain *t, uint16_t attr, const void *data);
 void nft_chain_attr_set_u32(struct nft_chain *t, uint16_t attr, uint32_t data);
index bd3fd6efd3728a72e1eea91e46cd3d4552766ec9..1ab559057aaf79c62635269766c0614b1558ba49 100644 (file)
@@ -15,6 +15,7 @@ enum {
 struct nft_rule_expr *nft_rule_expr_alloc(const char *name);
 void nft_rule_expr_free(struct nft_rule_expr *expr);
 
+bool nft_rule_expr_is_set(const struct nft_rule_expr *expr, uint16_t type);
 void nft_rule_expr_set(struct nft_rule_expr *expr, uint16_t type, const void *data, size_t data_len);
 void nft_rule_expr_set_u8(struct nft_rule_expr *expr, uint16_t type, uint8_t data);
 void nft_rule_expr_set_u32(struct nft_rule_expr *expr, uint16_t type, uint32_t data);
index ce8bd1f3d5cc8de9863ad6f69ba79e412fb81a89..242ea073ece51cd98bae0c413087c2963323e338 100644 (file)
@@ -2,6 +2,7 @@
 #define _RULE_H_
 
 #include <stdint.h>
+#include <stdbool.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -24,6 +25,7 @@ enum {
 };
 
 void nft_rule_attr_unset(struct nft_rule *r, uint16_t attr);
+bool nft_rule_attr_is_set(struct nft_rule *r, uint16_t attr);
 void nft_rule_attr_set(struct nft_rule *r, uint16_t attr, const void *data);
 void nft_rule_attr_set_u32(struct nft_rule *r, uint16_t attr, uint32_t val);
 void nft_rule_attr_set_u64(struct nft_rule *r, uint16_t attr, uint64_t val);
index f337f604ebda8ff77d2196540426e90bd6c2e1bc..bcd4db7cca1405113f0664195e40bf989c932698 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef _NFT_SET_H_
 #define _NFT_SET_H_
 
+#include <stdint.h>
+#include <stdbool.h>
+
 enum {
        NFT_SET_ATTR_TABLE,
        NFT_SET_ATTR_NAME,
@@ -16,6 +19,7 @@ struct nft_set;
 struct nft_set *nft_set_alloc(void);
 void nft_set_free(struct nft_set *s);
 
+bool nft_set_attr_is_set(struct nft_set *s, uint16_t attr);
 void nft_set_attr_unset(struct nft_set *s, uint16_t attr);
 void nft_set_attr_set(struct nft_set *s, uint16_t attr, const void *data);
 void nft_set_attr_set_u32(struct nft_set *s, uint16_t attr, uint32_t val);
@@ -73,6 +77,8 @@ void *nft_set_elem_attr_get(struct nft_set_elem *s, uint16_t attr, size_t *data_
 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);
 
+bool nft_set_elem_attr_is_set(struct nft_set_elem *s, uint16_t attr);
+
 struct nlmsghdr *nft_set_elem_nlmsg_build_hdr(char *buf, uint16_t cmd, uint16_t family, uint16_t type, uint32_t seq);
 void nft_set_elems_nlmsg_build_payload(struct nlmsghdr *nlh, struct nft_set *s);
 void nft_set_elem_nlmsg_build_payload(struct nlmsghdr *nlh, struct nft_set_elem *e);
index 8a4778f0f8585c34421b8e596852020e06234684..9445879ed00626b319129ccaa17f98c65bbd2974 100644 (file)
@@ -2,6 +2,7 @@
 #define _TABLE_H_
 
 #include <stdint.h>
+#include <stdbool.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -18,6 +19,7 @@ enum {
        NFT_TABLE_ATTR_FLAGS,
 };
 
+bool nft_table_attr_is_set(struct nft_table *t, uint16_t attr);
 void nft_table_attr_unset(struct nft_table *t, uint16_t attr);
 void nft_table_attr_set(struct nft_table *t, uint16_t attr, const void *data);
 const void *nft_table_attr_get(struct nft_table *t, uint16_t attr);
index 62a6ddd2a524ade7b139fb51c24b992af14201c3..4f856068025b5e7cc16b86475d60622431b0870c 100644 (file)
@@ -59,6 +59,12 @@ void nft_chain_free(struct nft_chain *c)
 }
 EXPORT_SYMBOL(nft_chain_free);
 
+bool nft_chain_attr_is_set(struct nft_chain *c, uint16_t attr)
+{
+       return c->flags & (1 << attr);
+}
+EXPORT_SYMBOL(nft_chain_attr_is_set);
+
 void nft_chain_attr_unset(struct nft_chain *c, uint16_t attr)
 {
        switch (attr) {
index 3a669860759b9d038cddf84ae4fdc49b40b11764..0ee2c4bcff867554fe5f9052abbfa43e782ecf47 100644 (file)
@@ -53,6 +53,12 @@ void nft_rule_expr_free(struct nft_rule_expr *expr)
 }
 EXPORT_SYMBOL(nft_rule_expr_free);
 
+bool nft_rule_expr_is_set(const struct nft_rule_expr *expr, uint16_t type)
+{
+       return expr->flags & (1 << type);
+}
+EXPORT_SYMBOL(nft_rule_expr_is_set);
+
 void
 nft_rule_expr_set(struct nft_rule_expr *expr, uint16_t type,
                  const void *data, size_t data_len)
index 6ee7a36a9e353adedc21aba0f7089dbb719038c7..7be65880ffc82f9a6b08e8e3788ea1be1dfddaec 100644 (file)
@@ -2,6 +2,7 @@ LIBNFTABLES_1.0 {
 global:
   nft_table_alloc;
   nft_table_free;
+  nft_table_attr_is_set;
   nft_table_attr_unset;
   nft_table_attr_set;
   nft_table_attr_get;
@@ -24,6 +25,7 @@ global:
 
   nft_chain_alloc;
   nft_chain_free;
+  nft_chain_attr_is_set;
   nft_chain_attr_unset;
   nft_chain_attr_set;
   nft_chain_attr_set_u32;
@@ -51,6 +53,7 @@ global:
 
   nft_rule_alloc;
   nft_rule_free;
+  nft_rule_attr_is_set;
   nft_rule_attr_unset;
   nft_rule_attr_set;
   nft_rule_attr_set_u32;
@@ -74,6 +77,7 @@ global:
   nft_rule_expr_iter_destroy;
 
   nft_rule_expr_alloc;
+  nft_rule_expr_is_set;
   nft_rule_expr_set;
   nft_rule_expr_set_u8;
   nft_rule_expr_set_u32;
@@ -99,6 +103,7 @@ global:
   nft_set_alloc;
   nft_set_free;
   nft_set_attr_unset;
+  nft_set_attr_is_set;
   nft_set_attr_set;
   nft_set_attr_set_u32;
   nft_set_attr_set_str;
@@ -124,6 +129,7 @@ global:
   nft_set_elem_free;
   nft_set_elem_add;
   nft_set_elem_foreach;
+  nft_set_elem_attr_is_set;
   nft_set_elem_attr_unset;
   nft_set_elem_attr_set;
   nft_set_elem_attr_set_u32;
index 13b5a1169cb9ad7fe6bcbe01e36dcdbb42696ac6..67062cf23d3a0b1867b693560f13a9501f77dcea 100644 (file)
@@ -71,6 +71,12 @@ void nft_rule_free(struct nft_rule *r)
 }
 EXPORT_SYMBOL(nft_rule_free);
 
+bool nft_rule_attr_is_set(struct nft_rule *r, uint16_t attr)
+{
+       return r->flags & (1 << attr);
+}
+EXPORT_SYMBOL(nft_rule_attr_is_set);
+
 void nft_rule_attr_unset(struct nft_rule *r, uint16_t attr)
 {
        switch (attr) {
index 4d160623b1fe363e209f570f4d76b4c96ccaa98b..61a0c2ecaf98df1e39bfd02ffb1efd22a0ca8094 100644 (file)
--- a/src/set.c
+++ b/src/set.c
@@ -56,6 +56,12 @@ void nft_set_free(struct nft_set *s)
 }
 EXPORT_SYMBOL(nft_set_free);
 
+bool nft_set_attr_is_set(struct nft_set *s, uint16_t attr)
+{
+       return s->flags & (1 << attr);
+}
+EXPORT_SYMBOL(nft_set_attr_is_set);
+
 void nft_set_attr_unset(struct nft_set *s, uint16_t attr)
 {
        switch (attr) {
index 209227f45dcb6881f29f1d367120fed4b9830f2f..eb9cb7afe74d549693220572661f71de7f0d8b45 100644 (file)
@@ -44,6 +44,12 @@ void nft_set_elem_free(struct nft_set_elem *s)
 }
 EXPORT_SYMBOL(nft_set_elem_free);
 
+bool nft_set_elem_attr_is_set(struct nft_set_elem *s, uint16_t attr)
+{
+       return s->flags & (1 << attr);
+}
+EXPORT_SYMBOL(nft_set_elem_attr_is_set);
+
 void nft_set_elem_attr_unset(struct nft_set_elem *s, uint16_t attr)
 {
        switch (attr) {
index 3e8d4c91873f00ba6cb52ac046eafa7cf4f66946..c33f01c178832f9020b917a14ecfde5633a7c3a9 100644 (file)
@@ -49,6 +49,12 @@ void nft_table_free(struct nft_table *t)
 }
 EXPORT_SYMBOL(nft_table_free);
 
+bool nft_table_attr_is_set(struct nft_table *t, uint16_t attr)
+{
+       return t->flags & (1 << attr);
+}
+EXPORT_SYMBOL(nft_table_attr_is_set);
+
 void nft_table_attr_unset(struct nft_table *t, uint16_t attr)
 {
        switch (attr) {