diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2016-11-27 23:42:54 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2017-01-03 14:21:53 +0100 |
commit | 8ec2e8438a7c4c48c8005a5f352c8ea6cd40d2fe (patch) | |
tree | 19ba8713e768dcc95d6ca5b65a097f6184e8e069 /include | |
parent | 4d38878b39be44ea3d6a146a7dd678c269a9804a (diff) |
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 <pablo@netfilter.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/mnl.h | 3 | ||||
-rw-r--r-- | include/netlink.h | 6 | ||||
-rw-r--r-- | include/rule.h | 2 |
3 files changed, 8 insertions, 3 deletions
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, |