netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [nft PATCH 0/16] introduce libnftables
@ 2017-08-16 20:42 Eric Leblond
  2017-08-16 20:42 ` [nft PATH 01/16] libnftables: introduce library Eric Leblond
                   ` (16 more replies)
  0 siblings, 17 replies; 37+ messages in thread
From: Eric Leblond @ 2017-08-16 20:42 UTC (permalink / raw)
  To: pablo; +Cc: netfilter-devel


Hello,

This patchset adds a basi high level libnftables to nftables code.
It is currently supporting running a command from a buffer or from
a file as well as batch support allowing to chain commands and commit
them at once.

The API is mostly using existing structures such as nft_ctx that are
updated to contain enough information. It also adds a structure
dedicated to batch.

A simple program running a command is the following:

 	nft_global_init();
	nft = nft_context_new();
	nft_context_set_print_func(nft, my_print, buf);
	rc = nft_run_command_from_buffer(nft, CMD, sizeof(CMD));
	if (rc != NFT_EXIT_SUCCESS) {
		nft_get_error(nft, err_buf, sizeof(err_buf));
		printf("%s\n", err_buf);
		return -1;
	}
	nft_context_free(nft);
	nft_global_deinit(); 

Transaction support is similar with:

	nft = nft_context_new();
	batch = nft_batch_start(nft);
	if (nft_batch_add(nft, batch, ADD1, strlen(ADD1)) !=0) {
		printf("FAIL add 1\n");
		goto out;
	}
	if (nft_batch_add(nft, batch, ADD2, strlen(ADD2)) !=0) {
		printf("FAIL add 2\n");
		goto out;
	}
	if (nft_batch_commit(nft, batch) != 0) {
		goto out;
	}

out:	
	nft_batch_free(batch);
	nft_context_free(nft);
	nft_global_deinit();

The library provides a way to get standard output via nft_context_set_print_func
and error handling is done via nft_get_error that get error message in a buffer.

This is early stage code as it does not feature things like set handling but IMO
it can already be used as a starting point to build more things.

BR,
--
Eric

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2017-08-21  8:19 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-16 20:42 [nft PATCH 0/16] introduce libnftables Eric Leblond
2017-08-16 20:42 ` [nft PATH 01/16] libnftables: introduce library Eric Leblond
2017-08-17  8:57   ` Phil Sutter
2017-08-17 17:09     ` Eric Leblond
2017-08-17 17:13       ` Phil Sutter
2017-08-19  8:43         ` Eric Leblond
2017-08-19 19:07           ` Jan Engelhardt
2017-08-21  8:19             ` Pablo Neira Ayuso
2017-08-16 20:42 ` [nft PATH 02/16] libnftables: add context new and free Eric Leblond
2017-08-17  9:04   ` Phil Sutter
2017-08-16 20:42 ` [nft PATH 03/16] libnftables: add nft_run_command_from_buffer Eric Leblond
2017-08-17  9:21   ` Phil Sutter
2017-08-16 20:42 ` [nft PATH 04/16] libnftables: add nft_run_command_from_filename Eric Leblond
2017-08-16 20:42 ` [nft PATH 05/16] libnftables: put nft_run in library Eric Leblond
2017-08-16 20:43 ` [nft PATH 06/16] libnftables: add missing variable to library Eric Leblond
2017-08-17  9:35   ` Phil Sutter
2017-08-19 11:02     ` Eric Leblond
2017-08-16 20:43 ` [nft PATH 07/16] libnftables: add NFT_EXIT_* " Eric Leblond
2017-08-16 20:43 ` [nft PATH 08/16] libnftables: add a nft_cache to nft_ctx Eric Leblond
2017-08-17  9:43   ` Phil Sutter
2017-08-16 20:43 ` [nft PATH 09/16] libnftables: move iface_cache_release to deinit Eric Leblond
2017-08-16 20:43 ` [nft PATH 10/16] libnftables: get rid of printf Eric Leblond
2017-08-17 10:01   ` Phil Sutter
2017-08-19  8:59     ` Eric Leblond
2017-08-16 20:43 ` [nft PATH 11/16] libnftables: add nft_context_set_print Eric Leblond
2017-08-16 20:43 ` [nft PATH 12/16] libnftables: transaction support Eric Leblond
2017-08-17 10:11   ` Phil Sutter
2017-08-16 20:43 ` [nft PATH 13/16] libnftables: set max_errors to 1 in library Eric Leblond
2017-08-16 20:43 ` [nft PATH 14/16] erec: add function to free list Eric Leblond
2017-08-16 20:43 ` [nft PATH 15/16] libnftables: add error handling Eric Leblond
2017-08-17 10:32   ` Phil Sutter
2017-08-19  9:04     ` Eric Leblond
2017-08-16 20:43 ` [nft PATH 16/16] libnftables: basic doxygen documentation Eric Leblond
2017-08-17  8:32 ` [nft PATCH 0/16] introduce libnftables Arturo Borrero Gonzalez
2017-08-17  8:58   ` Eric Leblond
2017-08-17 10:35     ` Florian Westphal
2017-08-17 10:47   ` Phil Sutter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).