From 4d38878b39be44ea3d6a146a7dd678c269a9804a Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sun, 27 Nov 2016 23:34:53 +0100 Subject: src: add/create/delete stateful objects This patch allows you to add and to delete objects, eg. # nft add quota filter test 1234567 bytes # nft list quotas table ip filter { quota test { 1234567 bytes } } # nft delete quota filter test Signed-off-by: Pablo Neira Ayuso --- include/mnl.h | 5 +++++ include/netlink.h | 5 +++++ include/rule.h | 3 ++- 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/mnl.h b/include/mnl.h index ad036aef..d178bd27 100644 --- a/include/mnl.h +++ b/include/mnl.h @@ -88,6 +88,11 @@ 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); +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, + uint32_t seqnum); + struct nftnl_ruleset *mnl_nft_ruleset_dump(struct mnl_socket *nf_sock, uint32_t family); int mnl_nft_event_listener(struct mnl_socket *nf_sock, diff --git a/include/netlink.h b/include/netlink.h index ce577871..841211c4 100644 --- a/include/netlink.h +++ b/include/netlink.h @@ -171,12 +171,17 @@ extern int netlink_flush_setelems(struct netlink_ctx *ctx, const struct handle * extern int netlink_list_objs(struct netlink_ctx *ctx, const struct handle *h, const struct location *loc); +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); extern void netlink_dump_table(const struct nftnl_table *nlt); extern void netlink_dump_chain(const struct nftnl_chain *nlc); extern void netlink_dump_rule(const struct nftnl_rule *nlr); extern void netlink_dump_expr(const struct nftnl_expr *nle); extern void netlink_dump_set(const struct nftnl_set *nls); +extern void netlink_dump_obj(struct nftnl_obj *nlo); extern int netlink_batch_send(struct list_head *err_list); diff --git a/include/rule.h b/include/rule.h index e0f89139..88acbcc7 100644 --- a/include/rule.h +++ b/include/rule.h @@ -282,7 +282,7 @@ struct obj *obj_alloc(const struct location *loc); void obj_free(struct obj *obj); void obj_add_hash(struct obj *obj, struct table *table); void obj_print(const struct obj *n); -const char *obj_type_name(enum stmt_types type); +const char *obj_type_name(uint32_t type); /** * enum cmd_ops - command operations @@ -415,6 +415,7 @@ struct cmd { struct table *table; struct monitor *monitor; struct export *export; + struct obj *object; }; const void *arg; }; -- cgit v1.2.3