From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Holger Eitzenberger <heitzenberger@astaro.com>
Cc: netfilter-devel@vger.kernel.org, holger@eitzenberger.org
Subject: Re: [patch 1/1] Add subsystem accessors
Date: Sat, 02 Feb 2008 22:06:59 +0100 [thread overview]
Message-ID: <47A4DB73.7070404@netfilter.org> (raw)
In-Reply-To: <47A3534A.90006@astaro.com>
Holger Eitzenberger wrote:
> Pablo Neira Ayuso wrote:
>
>>> Need by newer ulogd v2.
>>
>> Why do you need this? If I apply this, I'll have to provide support for
>> people mixing calls to libnfnetlink and libnetfilter_conntrack which can
>> be a problematic. The subsys handles are encapsulated for that reason.
>>
>> If you really need them, I suggest you to use libnfnetlink together with
>> the low level functions libnetfilter_conntrack functions:
>> nfct_[build|parse]_conntrack and nfct_build_query.
>
> Which would nullify the use of libnetfilter-conntrack with ulogd.
No way. You're abusing the library APIs. The proper way for what you
want to do is the following:
1) open a nfnl handle
2) open a nfnl_subsys_handle
3) register the callback
4) use nfct_parse_conntrack inside the callback to get the conntrack
object while you can still access netlink details (such as the sequence
number).
5) use nfct_build_query plus nfnl_query if you want to send request to
ctnetlink.
This is the way to work in "low level" with libnfnetlink and
libnetfilter_conntrack. As said, with "low level" I mean if you require
netlink details. This is pretty similar to libnl.
If you require "high level", ie. no netlink details, you only have to
use the libnetfilter_conntrack API. Sorry, your patch violates layering
since you're doing some in "the wrong way(tm)", your want to mix low and
high level.
> BTW, after using the new libnetfilter-conntrack I get this:
>
> ulogd_inpflow_NFCT.c:455: warning: passing argument 1 of 'nfnl_send'
> discards qualifiers from pointer target type
> ulogd_inpflow_NFCT.c: In function 'read_cb_nfct':
> ulogd_inpflow_NFCT.c:1043: warning: passing argument 1 of
> 'nfnl_recv_msgs' discards qualifiers from pointer target type
> ulogd_inpflow_NFCT.c: In function 'nfct_start':
> ulogd_inpflow_NFCT.c:1156: warning: passing argument 1 of
> 'nfnl_rcvbufsiz' discards qualifiers from pointer target type
> ulogd_inpflow_NFCT.c: In function 'read_cb_nfct':
> ulogd_inpflow_NFCT.c:1043: warning: passing argument 1 of
> 'nfnl_recv_msgs' discards qualifiers from pointer target type
> ...
>
> Do you accept patches for that or should I just cast-away the wrong
> const there?
I'm going to apply a patch to constify nfnl_send. The const in
nfct_nfnlh() is fine, it's there to warn people about improper use of
the API, ie. those that want to violate encapsulation.
--
"Los honestos son inadaptados sociales" -- Les Luthiers
next prev parent reply other threads:[~2008-02-02 21:07 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-30 18:21 [patch 0/1] [libnetfilter-conntrack] Add subsystem accessors heitzenberger
2008-01-30 18:21 ` [patch 1/1] " heitzenberger
2008-02-01 16:59 ` Pablo Neira Ayuso
2008-02-01 17:13 ` Holger Eitzenberger
2008-02-02 21:06 ` Pablo Neira Ayuso [this message]
2008-02-02 21:16 ` 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=47A4DB73.7070404@netfilter.org \
--to=pablo@netfilter.org \
--cc=heitzenberger@astaro.com \
--cc=holger@eitzenberger.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.