From 4c15b4008c249b768ca1ec958747a9033f8235b9 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Mon, 23 Oct 2017 17:33:18 +0200 Subject: cli: Use nft_run_cmd_from_buffer() Make CLI code adhere to intended libnftables API by not open coding what nft_run_cmd_from_buffer() does. This way, nft_run() has no users outside of src/libnftables.c anymore and therefore can become static. Since nft_run_cmd_from_buffer() takes care of scanner initialization and libmnl socket passed to cli_init() is present as nft_ctx field as well, signature of cli_init() can be reduced to just take nft_ctx pointer as single argument. Note that this change introduces two (possibly unwanted) side-effects: * Input descriptor passed to scanner_push_buffer() is changed from the CLI-specific one to the one used by nft_run_cmd_from_buffer(). In practice though, this doesn't make a difference: input descriptor types INDESC_CLI and INDESC_BUFFER are treated equally by erec_print(). Also, scanner_push_buffer() NULLs input descriptor name, so that is not used at all in latter code. * Error messages are printed to stderr instead of cli_nft->output. This could be fixed by introducing an 'error_output' field in nft_ctx for nft_run_cmd_from_buffer() to use when printing error messages. Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- src/main.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index b9938c9c..a2856417 100644 --- a/src/main.c +++ b/src/main.c @@ -20,7 +20,7 @@ #include #include -#include +#include #include static struct nft_ctx *nft; @@ -169,7 +169,6 @@ int main(int argc, char * const *argv) char *buf = NULL, *filename = NULL; unsigned int len; bool interactive = false; - struct parser_state state; int i, val, rc; nft = nft_ctx_new(NFT_CTX_DEFAULT); @@ -273,7 +272,7 @@ int main(int argc, char * const *argv) } else if (filename != NULL) { rc = nft_run_cmd_from_filename(nft, filename); } else if (interactive) { - if (cli_init(nft, nft->nf_sock, &state) < 0) { + if (cli_init(nft) < 0) { fprintf(stderr, "%s: interactive CLI not supported in this build\n", argv[0]); exit(NFT_EXIT_FAILURE); -- cgit v1.2.3