From 8ec2e8438a7c4c48c8005a5f352c8ea6cd40d2fe Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sun, 27 Nov 2016 23:42:54 +0100 Subject: src: reset internal stateful objects This patch allows you to atomically dump and reset stateful objects, eg. # nft list counters table ip filter { counter test { packets 1024 bytes 100000 } } # nft reset quotas table filter counter test { packets 1024 bytes 100000 } # nft reset quotas table filter counter test { packets 0 bytes 0 } Signed-off-by: Pablo Neira Ayuso --- include/mnl.h | 3 ++- include/netlink.h | 6 ++++-- include/rule.h | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/mnl.h b/include/mnl.h index d178bd27..4a99972d 100644 --- a/include/mnl.h +++ b/include/mnl.h @@ -87,7 +87,8 @@ int mnl_nft_setelem_batch_flush(struct nftnl_set *nls, unsigned int flags, int mnl_nft_setelem_get(struct mnl_socket *nf_sock, struct nftnl_set *nls); struct nftnl_obj_list *mnl_nft_obj_dump(struct mnl_socket *nf_sock, int family, - const char *table); + const char *table, uint32_t type, + bool reset); int mnl_nft_obj_batch_add(struct nftnl_obj *nln, unsigned int flags, uint32_t seqnum); int mnl_nft_obj_batch_del(struct nftnl_obj *nln, unsigned int flags, diff --git a/include/netlink.h b/include/netlink.h index 841211c4..450aba57 100644 --- a/include/netlink.h +++ b/include/netlink.h @@ -170,11 +170,13 @@ extern int netlink_flush_setelems(struct netlink_ctx *ctx, const struct handle * const struct location *loc); extern int netlink_list_objs(struct netlink_ctx *ctx, const struct handle *h, - const struct location *loc); + const struct location *loc); +extern int netlink_reset_objs(struct netlink_ctx *ctx, const struct handle *h, + const struct location *loc, uint32_t type); extern int netlink_add_obj(struct netlink_ctx *ctx, const struct handle *h, struct obj *obj, bool excl); extern int netlink_delete_obj(struct netlink_ctx *ctx, const struct handle *h, - struct location *loc, enum stmt_types type); + struct location *loc, uint32_t type); extern void netlink_dump_table(const struct nftnl_table *nlt); extern void netlink_dump_chain(const struct nftnl_chain *nlc); diff --git a/include/rule.h b/include/rule.h index 88acbcc7..9028c84b 100644 --- a/include/rule.h +++ b/include/rule.h @@ -294,6 +294,7 @@ const char *obj_type_name(uint32_t type); * @CMD_INSERT: insert object * @CMD_DELETE: delete object * @CMD_LIST: list container + * @CMD_RESET: reset container * @CMD_FLUSH: flush container * @CMD_RENAME: rename object * @CMD_EXPORT: export the ruleset in a given format @@ -308,6 +309,7 @@ enum cmd_ops { CMD_INSERT, CMD_DELETE, CMD_LIST, + CMD_RESET, CMD_FLUSH, CMD_RENAME, CMD_EXPORT, -- cgit v1.2.3