From 4677971a01dc4d92087dab139428cf4eaa189536 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Mon, 18 Jun 2018 10:11:46 +0200 Subject: libnftables: Simplify nft_run_cmd_from_buffer footprint With libnftables documentation being upstream and one confirmed external user (nftlb), time to break the API! First of all, the command buffer passed to nft_run_cmd_from_buffer may (and should) be const. One should consider it a bug if that function ever changed it's content. On the other hand, there is no point in passing the buffer's length as separate argument: NULL bytes are not expected to occur in the input, so it is safe to rely upon strlen(). Also, the actual parsers don't require a buffer length passed to them, either. The only use-case for it is when reallocating the buffer to append a final newline character, there strlen() is perfectly sufficient. Suggested-by: Harald Welte Cc: Laura Garcia Liebana Cc: Eric Leblond Cc: Arturo Borrero Gonzalez Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- include/json.h | 5 +++-- include/nftables/libnftables.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/json.h b/include/json.h index 0a93bca8..b75512b8 100644 --- a/include/json.h +++ b/include/json.h @@ -78,7 +78,7 @@ json_t *connlimit_stmt_json(const struct stmt *stmt, struct output_ctx *octx); int do_command_list_json(struct netlink_ctx *ctx, struct cmd *cmd); -int nft_parse_json_buffer(struct nft_ctx *nft, char *buf, size_t buflen, +int nft_parse_json_buffer(struct nft_ctx *nft, const char *buf, struct list_head *msgs, struct list_head *cmds); int nft_parse_json_filename(struct nft_ctx *nft, const char *filename, struct list_head *msgs, struct list_head *cmds); @@ -168,11 +168,12 @@ static inline int do_command_list_json(struct netlink_ctx *ctx, struct cmd *cmd) } static inline int -nft_parse_json_buffer(struct nft_ctx *nft, char *buf, size_t buflen, +nft_parse_json_buffer(struct nft_ctx *nft, const char *buf, struct list_head *msgs, struct list_head *cmds) { return -EINVAL; } + static inline int nft_parse_json_filename(struct nft_ctx *nft, const char *filename, struct list_head *msgs, struct list_head *cmds) diff --git a/include/nftables/libnftables.h b/include/nftables/libnftables.h index 4bfdaf9a..13ec3927 100644 --- a/include/nftables/libnftables.h +++ b/include/nftables/libnftables.h @@ -71,7 +71,7 @@ const char *nft_ctx_get_error_buffer(struct nft_ctx *ctx); int nft_ctx_add_include_path(struct nft_ctx *ctx, const char *path); void nft_ctx_clear_include_paths(struct nft_ctx *ctx); -int nft_run_cmd_from_buffer(struct nft_ctx *nft, char *buf, size_t buflen); +int nft_run_cmd_from_buffer(struct nft_ctx *nft, const char *buf); int nft_run_cmd_from_filename(struct nft_ctx *nft, const char *filename); #endif /* LIB_NFTABLES_H */ -- cgit v1.2.3