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
--
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