From e33798478176f97edf2649cd61444e0375fdc12b Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Thu, 6 Dec 2018 17:17:51 +0100 Subject: chain: Support per chain rules list The implementation basically copies expr_list in struct nftnl_rule. Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- include/libnftnl/chain.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'include/libnftnl/chain.h') diff --git a/include/libnftnl/chain.h b/include/libnftnl/chain.h index 237683e..f04f610 100644 --- a/include/libnftnl/chain.h +++ b/include/libnftnl/chain.h @@ -13,6 +13,7 @@ extern "C" { #endif struct nftnl_chain; +struct nftnl_rule; struct nftnl_chain *nftnl_chain_alloc(void); void nftnl_chain_free(const struct nftnl_chain *); @@ -54,6 +55,10 @@ uint32_t nftnl_chain_get_u32(const struct nftnl_chain *c, uint16_t attr); int32_t nftnl_chain_get_s32(const struct nftnl_chain *c, uint16_t attr); uint64_t nftnl_chain_get_u64(const struct nftnl_chain *c, uint16_t attr); +void nftnl_chain_rule_add(struct nftnl_rule *rule, struct nftnl_chain *c); +void nftnl_chain_rule_add_tail(struct nftnl_rule *rule, struct nftnl_chain *c); +void nftnl_chain_rule_insert_at(struct nftnl_rule *rule, struct nftnl_rule *pos); + struct nlmsghdr; void nftnl_chain_nlmsg_build_payload(struct nlmsghdr *nlh, const struct nftnl_chain *t); @@ -68,6 +73,16 @@ int nftnl_chain_fprintf(FILE *fp, const struct nftnl_chain *c, uint32_t type, ui #define nftnl_chain_nlmsg_build_hdr nftnl_nlmsg_build_hdr int nftnl_chain_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_chain *t); +int nftnl_rule_foreach(struct nftnl_chain *c, + int (*cb)(struct nftnl_rule *r, void *data), + void *data); + +struct nftnl_rule_iter; + +struct nftnl_rule_iter *nftnl_rule_iter_create(const struct nftnl_chain *c); +struct nftnl_rule *nftnl_rule_iter_next(struct nftnl_rule_iter *iter); +void nftnl_rule_iter_destroy(struct nftnl_rule_iter *iter); + struct nftnl_chain_list; struct nftnl_chain_list *nftnl_chain_list_alloc(void); -- cgit v1.2.3