From: Pablo Neira Ayuso <pablo@netfilter.org>
To: "Carlos Falgueras García" <carlosfg@riseup.net>
Cc: netfilter-devel@vger.kernel.org, kaber@trash.net
Subject: Re: [PATCH 2/4 v6] libnftnl: rule: Change the "userdata" attribute to use new TLV buffer
Date: Thu, 14 Apr 2016 01:59:18 +0200 [thread overview]
Message-ID: <20160413235918.GA12737@salvia> (raw)
In-Reply-To: <1458675987-32398-2-git-send-email-carlosfg@riseup.net>
On Tue, Mar 22, 2016 at 08:46:25PM +0100, Carlos Falgueras García wrote:
> diff --git a/src/rule.c b/src/rule.c
> index 3a32bf6..db96e5b 100644
> --- a/src/rule.c
> +++ b/src/rule.c
> @@ -28,6 +28,7 @@
> #include <libnftnl/rule.h>
> #include <libnftnl/set.h>
> #include <libnftnl/expr.h>
> +#include <libnftnl/udata.h>
>
> struct nftnl_rule {
> struct list_head head;
> @@ -38,10 +39,7 @@ struct nftnl_rule {
> const char *chain;
> uint64_t handle;
> uint64_t position;
> - struct {
> - void *data;
> - uint32_t len;
> - } user;
> + struct nftnl_udata_buf *userdata;
This change, we don't need it, see below.
> @@ -162,8 +171,14 @@ void nftnl_rule_set_data(struct nftnl_rule *r, uint16_t attr,
> r->position = *((uint64_t *)data);
> break;
> case NFTNL_RULE_USERDATA:
> - r->user.data = (void *)data;
> - r->user.len = data_len;
> + if (r->flags & (1 << NFTNL_RULE_USERDATA))
> + nftnl_udata_buf_free(r->userdata);
> + r->userdata = nftnl_udata_buf_alloc(data_len);
> + if (!r->userdata) {
> + perror("nftnl_rule_set_data - userdata");
> + return;
> + }
> + nftnl_udata_buf_put(r->userdata, data, data_len);
Think about this: From nft, we allocate the udata_buf, then we add the
attributes. Once we have the TLV area ready, we pass it as a pointer
via nftnl_rule_set_data().
Then, from libnftnl you allocate nftnl_udata_buf_alloc() again, but we
actually don't need this. The reason is that udata_buf is *only*
needed to build the sequence of TLVs. Once we're done with it, we can
just pass the memory blob area that contains this info.
For this reason, I'm entirely keeping back this patch.
Good thing though is that we don't need it to get this working :-)
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-04-13 23:59 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-22 19:46 [PATCH 1/4 v6] libnftnl: Implement new buffer of TLV objects Carlos Falgueras García
2016-03-22 19:46 ` [PATCH 2/4 v6] libnftnl: rule: Change the "userdata" attribute to use new TLV buffer Carlos Falgueras García
2016-04-13 23:59 ` Pablo Neira Ayuso [this message]
2016-04-14 17:55 ` Carlos Falgueras García
2016-04-15 10:38 ` Pablo Neira Ayuso
2016-03-22 19:46 ` [PATCH 3/4 v6] libnftnl: test: Update test to check new nftnl_udata features of nftnl_rule Carlos Falgueras García
2016-04-14 0:00 ` Pablo Neira Ayuso
2016-03-22 19:46 ` [PATCH 4/4 v6] nftables: rule: Change the field "rule->comment" for an nftnl_udata_buf Carlos Falgueras García
2016-04-14 0:01 ` Pablo Neira Ayuso
2016-04-13 23:13 ` [PATCH 1/4 v6] libnftnl: Implement new buffer of TLV objects Pablo Neira Ayuso
2016-04-13 23:55 ` Pablo Neira Ayuso
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160413235918.GA12737@salvia \
--to=pablo@netfilter.org \
--cc=carlosfg@riseup.net \
--cc=kaber@trash.net \
--cc=netfilter-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).