On Wed, Aug 16, 2017 at 10:43:09PM +0200, Eric Leblond wrote:
[...]
> diff --git a/src/libnftables.c b/src/libnftables.c
> index c50c068..a42e8f1 100644
> --- a/src/libnftables.c
> +++ b/src/libnftables.c
> @@ -86,6 +86,7 @@ struct nft_ctx *nft_context_new(void)
>       ctx->nf_sock = netlink_open_sock();
>  
>       init_list_head(&ctx->cache.list);
> +     init_list_head(&ctx->output.msgs);
>  
>       ctx->output.ctx = ctx;
>       ctx->output.print = nft_print;
> @@ -108,6 +109,7 @@ void nft_context_free(struct nft_ctx *nft)
>               return;
>       netlink_close_sock(nft->nf_sock);
>       cache_release(&nft->cache);
> +     erec_free_list(&nft->output.msgs);
>       xfree(nft);
>  }
>  
> @@ -116,23 +118,30 @@ static const struct input_descriptor indesc_cmdline = {
>       .name   = "<cmdline>",
>  };
>  
> +int nft_get_error(struct nft_ctx *nft, char *err_buf, size_t err_buf_len)
> +{
> +     FILE *errfile = fmemopen(err_buf, err_buf_len, "w");
> +     erec_print_list(errfile, &nft->output.msgs);
> +     fclose(errfile);
> +     return 0;       
> +}
> +
>  int nft_run_command_from_buffer(struct nft_ctx *nft,
>                               char *buf, size_t buflen)
>  {
>       int rc = NFT_EXIT_SUCCESS;
>       struct parser_state state;
> -     LIST_HEAD(msgs);
>       void *scanner;
>  
> -     parser_init(nft->nf_sock, &nft->cache, &state, &msgs);
> +     parser_init(nft->nf_sock, &nft->cache, &state, &nft->output.msgs);

Change signature to take struct nft_ctx as first parameter and get rid
of everything but struct parser_state?

>       scanner = scanner_init(&state);
>       scanner_push_buffer(scanner, &indesc_cmdline, buf);
>               
> -     if (nft_run(nft, nft->nf_sock, &nft->cache, scanner, &state, &msgs) != 
> 0)
> +     if (nft_run(nft, nft->nf_sock, &nft->cache, scanner,
> +                 &state, &nft->output.msgs) != 0)

Just use nft->output.msg directly in nft_run() and drop the parameter?

Cheers, Phil
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to