* libnfnetlink dependency elimination @ 2023-11-12 6:59 Duncan Roe 2023-11-12 6:59 ` [PATCH libnetfilter_queue 1/1] doc: First update for libnfnetlink-based API over libmnl Duncan Roe 2023-11-14 15:24 ` libnfnetlink dependency elimination Pablo Neira Ayuso 0 siblings, 2 replies; 9+ messages in thread From: Duncan Roe @ 2023-11-12 6:59 UTC (permalink / raw) To: pablo; +Cc: netfilter-devel Some of these documented changes haven't happened yet. Duncan Roe (1): doc: First update for libnfnetlink-based API over libmnl src/libnetfilter_queue.c | 56 +++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 18 deletions(-) -- 2.35.8 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH libnetfilter_queue 1/1] doc: First update for libnfnetlink-based API over libmnl 2023-11-12 6:59 libnfnetlink dependency elimination Duncan Roe @ 2023-11-12 6:59 ` Duncan Roe 2023-11-14 15:24 ` libnfnetlink dependency elimination Pablo Neira Ayuso 1 sibling, 0 replies; 9+ messages in thread From: Duncan Roe @ 2023-11-12 6:59 UTC (permalink / raw) To: pablo; +Cc: netfilter-devel - make it clear at the outset that there are 2 APIs - remove DEPRECATED tags, instead insert warning at top of these pages - update gdb options in compile line - remove the Library Setup line that follows - re-work how to increase default socket buffer size (i.e. other than by calling nfnl_rcvbufsiz()). Signed-off-by: Duncan Roe <duncan_roe@optusnet.com.au> --- src/libnetfilter_queue.c | 56 +++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/src/libnetfilter_queue.c b/src/libnetfilter_queue.c index bf67a19..54db391 100644 --- a/src/libnetfilter_queue.c +++ b/src/libnetfilter_queue.c @@ -41,12 +41,22 @@ * libnetfilter_queue is a userspace library providing an API to packets that * have been queued by the kernel packet filter. It is is part of a system that * replaces the old ip_queue / libipq mechanism (withdrawn in kernel 3.5). + * \n + * libnetfilter_queue in fact offers 2 different APIs: + * -# The modern API which provides helper functions for some + * libmnl functions. Users call other libmnl functions directly. + * The documentation calls this the **mnl** API. + * -# An older API which provided wrappers for all relevant + * libnfnetlink functions. + * This API uses libmnl calls now, but its use in new software is discouraged. + * The documentation calls this the **nfnl** API. + * libnfnetlink itself is deprecated and will eventually be removed. * * libnetfilter_queue homepage is: * https://netfilter.org/projects/libnetfilter_queue/ * <h1>Dependencies</h1> - * libnetfilter_queue requires libmnl, libnfnetlink and a kernel that includes + * libnetfilter_queue requires libmnl and a kernel that includes * the Netfilter NFQUEUE over NFNETLINK interface (i.e. 2.6.14 or later). * * <h1>Main Features</h1> @@ -86,18 +96,8 @@ * nf-queue.c source file. * Simple compile line: * \verbatim -gcc -g3 -ggdb -Wall -lmnl -lnetfilter_queue -o nf-queue nf-queue.c +gcc -g3 -gdwarf-4 -Wall -lmnl -lnetfilter_queue -o nf-queue nf-queue.c \endverbatim - *The doxygen documentation - * \htmlonly -<a class="el" href="group__LibrarySetup.html">LibrarySetup </a> -\endhtmlonly - * \manonly -\fBLibrarySetup\fP\ -\endmanonly - * is Deprecated and - * incompatible with non-deprecated functions. It is hoped to produce a - * corresponding non-deprecated (*Current*) topic soon. * * Somewhat outdated but possibly providing some insight into * libnetfilter_queue usage is the following @@ -109,7 +109,7 @@ gcc -g3 -ggdb -Wall -lmnl -lnetfilter_queue -o nf-queue nf-queue.c * recv() may return -1 and errno is set to ENOBUFS in case that your * application is not fast enough to retrieve the packets from the kernel. * In that case, you can increase the socket buffer size by means of - * nfnl_rcvbufsiz(). Although this delays the appearance of ENOBUFS errors, + * setsocketopt(). Although this delays the appearance of ENOBUFS errors, * you may hit it again sooner or later. The next section provides some hints * on how to obtain the best performance for your application. * @@ -117,7 +117,11 @@ gcc -g3 -ggdb -Wall -lmnl -lnetfilter_queue -o nf-queue nf-queue.c * To improve your libnetfilter_queue application in terms of performance, * you may consider the following tweaks: * - * - increase the default socket buffer size by means of nfnl_rcvbufsiz(). + * - increase the default socket buffer size. + * Use setsocketopt() with SOL_SOCKET and SO_RCVBUFFORCE on the netlink socket + * fd returned by mnl_socket_get_fd() + * (software using the old nfnl API calls nfq_fd()). + * Software calling nfnl_rcvbufsiz() will continue to be supported. * - set nice value of your process to -20 (maximum priority). * - set the CPU affinity of your process to a spare core that is not used * to handle NIC interruptions. @@ -247,7 +251,11 @@ struct nfnl_handle *nfq_nfnlh(struct nfq_handle *h) /** * - * \defgroup Queue Queue handling [DEPRECATED] + * \defgroup Queue Queue handling + * + * \warning + * This page describes functions from the old nfnl API. + * Consider using the mnl API for new projects. * * Once libnetfilter_queue library has been initialised (See * \link LibrarySetup \endlink), it is possible to bind the program to a @@ -335,7 +343,11 @@ int nfq_fd(struct nfq_handle *h) */ /** - * \defgroup LibrarySetup Library setup [DEPRECATED] + * \defgroup LibrarySetup Library setup + * + * \warning + * This page describes functions from the old nfnl API. + * Consider using the mnl API for new projects. * * Library initialisation is made in two steps. * @@ -977,7 +989,11 @@ int nfq_set_verdict_mark(struct nfq_q_handle *qh, uint32_t id, *************************************************************/ /** - * \defgroup Parsing Message parsing functions [DEPRECATED] + * \defgroup Parsing Message parsing functions + * + * \warning + * This page describes functions from the old nfnl API. + * Consider using the mnl API for new projects. * * \manonly .SH SYNOPSIS @@ -1385,7 +1401,11 @@ do { \ } while (0) /** - * \defgroup Printing Printing [DEPRECATED] + * \defgroup Printing Printing + * + * \warning + * This page describes functions from the old nfnl API. + * Consider using the mnl API for new projects. * * \manonly .SH SYNOPSIS -- 2.35.8 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: libnfnetlink dependency elimination 2023-11-12 6:59 libnfnetlink dependency elimination Duncan Roe 2023-11-12 6:59 ` [PATCH libnetfilter_queue 1/1] doc: First update for libnfnetlink-based API over libmnl Duncan Roe @ 2023-11-14 15:24 ` Pablo Neira Ayuso 2023-11-14 23:04 ` libnfnetlink dependency elimination (doc) Duncan Roe 2023-11-14 23:14 ` Duncan Roe 1 sibling, 2 replies; 9+ messages in thread From: Pablo Neira Ayuso @ 2023-11-14 15:24 UTC (permalink / raw) To: Duncan Roe; +Cc: netfilter-devel On Sun, Nov 12, 2023 at 05:59:21PM +1100, Duncan Roe wrote: > Some of these documented changes haven't happened yet. Then we have to start by changes first, not the other way around. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libnfnetlink dependency elimination (doc) 2023-11-14 15:24 ` libnfnetlink dependency elimination Pablo Neira Ayuso @ 2023-11-14 23:04 ` Duncan Roe 2023-11-14 23:11 ` *** Scrub that last message Duncan Roe 2023-11-15 9:27 ` libnfnetlink dependency elimination (doc) Pablo Neira Ayuso 2023-11-14 23:14 ` Duncan Roe 1 sibling, 2 replies; 9+ messages in thread From: Duncan Roe @ 2023-11-14 23:04 UTC (permalink / raw) To: Pablo Neira Ayuso; +Cc: Netfilter Development Hi Pablo, On Tue, Nov 14, 2023 at 04:24:11PM +0100, Pablo Neira Ayuso wrote: > On Sun, Nov 12, 2023 at 05:59:21PM +1100, Duncan Roe wrote: > > Some of these documented changes haven't happened yet. > > Then we have to start by changes first, not the other way around. Yes I know that, obviously:) The point here is that nfnl_rcvbufsiz() has been advertised in the main page of libnetfilter_queue HTML for a long time and there are likely a number of systems out there that use it. When libnfnetlink is removed, libnetfilter_queue will have to provide nfnl_rcvbufsiz() or those systems will start failing. I have in mind that although libnetfilter_queue will provide nfnl_rcvbufsiz(), there will be no documentation for it. You will see in https://patchwork.ozlabs.org/project/netfilter-devel/patch/20231112065922.3414-2-duncan_roe@optusnet.com.au/ I replaced the advice to use nfnl_rcvbufsiz() (in 2 places) with advice to use setsocketopt(). I only mentioned that programs calling nfnl_rcvbufsiz() will continue to run. So I offered this patch as the only documentation of how to use nfnl_rcvbufsiz(). I need it for my testing, but it's fine with me if you don't want to take it. Cheers ... Duncan. ^ permalink raw reply [flat|nested] 9+ messages in thread
* *** Scrub that last message 2023-11-14 23:04 ` libnfnetlink dependency elimination (doc) Duncan Roe @ 2023-11-14 23:11 ` Duncan Roe 2023-11-15 9:27 ` libnfnetlink dependency elimination (doc) Pablo Neira Ayuso 1 sibling, 0 replies; 9+ messages in thread From: Duncan Roe @ 2023-11-14 23:11 UTC (permalink / raw) To: Pablo Neira Ayuso; +Cc: Netfilter Development Sorry, that was reply to another message ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libnfnetlink dependency elimination (doc) 2023-11-14 23:04 ` libnfnetlink dependency elimination (doc) Duncan Roe 2023-11-14 23:11 ` *** Scrub that last message Duncan Roe @ 2023-11-15 9:27 ` Pablo Neira Ayuso 2023-11-15 11:43 ` Duncan Roe 1 sibling, 1 reply; 9+ messages in thread From: Pablo Neira Ayuso @ 2023-11-15 9:27 UTC (permalink / raw) To: Netfilter Development On Wed, Nov 15, 2023 at 10:04:47AM +1100, Duncan Roe wrote: > Hi Pablo, > > On Tue, Nov 14, 2023 at 04:24:11PM +0100, Pablo Neira Ayuso wrote: > > On Sun, Nov 12, 2023 at 05:59:21PM +1100, Duncan Roe wrote: > > > Some of these documented changes haven't happened yet. > > > > Then we have to start by changes first, not the other way around. > > Yes I know that, obviously:) > > The point here is that nfnl_rcvbufsiz() has been advertised in the main page of > libnetfilter_queue HTML for a long time and there are likely a number of systems > out there that use it. When libnfnetlink is removed, libnetfilter_queue will > have to provide nfnl_rcvbufsiz() or those systems will start failing. There is nfq_fd() and setsockopt() that you can use: setsockopt(fd, SOL_SOCKET, SO_RCVBUFFORCE, &size, socklen); setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &size, socklen); libnfnetlink is **deprecated** and it will be removed at some point, the git log shows that it has less and less users. main libnfnetlink users are the libnetfilter_* libraries. No new application should be using libnfnetlink in 2023. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libnfnetlink dependency elimination (doc) 2023-11-15 9:27 ` libnfnetlink dependency elimination (doc) Pablo Neira Ayuso @ 2023-11-15 11:43 ` Duncan Roe 2023-11-15 11:46 ` Pablo Neira Ayuso 0 siblings, 1 reply; 9+ messages in thread From: Duncan Roe @ 2023-11-15 11:43 UTC (permalink / raw) To: Pablo Neira Ayuso; +Cc: Netfilter Development On Wed, Nov 15, 2023 at 10:27:34AM +0100, Pablo Neira Ayuso wrote: > On Wed, Nov 15, 2023 at 10:04:47AM +1100, Duncan Roe wrote: > > Hi Pablo, > > > > On Tue, Nov 14, 2023 at 04:24:11PM +0100, Pablo Neira Ayuso wrote: > > > On Sun, Nov 12, 2023 at 05:59:21PM +1100, Duncan Roe wrote: > > > > Some of these documented changes haven't happened yet. > > > > > > Then we have to start by changes first, not the other way around. > > > > Yes I know that, obviously:) > > > > The point here is that nfnl_rcvbufsiz() has been advertised in the main page of > > libnetfilter_queue HTML for a long time and there are likely a number of systems > > out there that use it. When libnfnetlink is removed, libnetfilter_queue will > > have to provide nfnl_rcvbufsiz() or those systems will start failing. > > There is nfq_fd() and setsockopt() that you can use: > > setsockopt(fd, SOL_SOCKET, SO_RCVBUFFORCE, &size, socklen); > setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &size, socklen); Yes > > libnfnetlink is **deprecated** and it will be removed at some point, > the git log shows that it has less and less users. Good to know > > main libnfnetlink users are the libnetfilter_* libraries. Yes > > No new application should be using libnfnetlink in 2023. Yes But please see thread starting > [PATCH libnetfilter_queue] utils: Add example of setting socket buffer size I meant to send my reply to that email, not this one. Again sorry for the confusion I've caused. Cheers ... Duncan. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libnfnetlink dependency elimination (doc) 2023-11-15 11:43 ` Duncan Roe @ 2023-11-15 11:46 ` Pablo Neira Ayuso 0 siblings, 0 replies; 9+ messages in thread From: Pablo Neira Ayuso @ 2023-11-15 11:46 UTC (permalink / raw) To: Netfilter Development On Wed, Nov 15, 2023 at 10:43:52PM +1100, Duncan Roe wrote: > On Wed, Nov 15, 2023 at 10:27:34AM +0100, Pablo Neira Ayuso wrote: > > On Wed, Nov 15, 2023 at 10:04:47AM +1100, Duncan Roe wrote: > > > Hi Pablo, > > > > > > On Tue, Nov 14, 2023 at 04:24:11PM +0100, Pablo Neira Ayuso wrote: > > > > On Sun, Nov 12, 2023 at 05:59:21PM +1100, Duncan Roe wrote: > > > > > Some of these documented changes haven't happened yet. > > > > > > > > Then we have to start by changes first, not the other way around. > > > > > > Yes I know that, obviously:) > > > > > > The point here is that nfnl_rcvbufsiz() has been advertised in the main page of > > > libnetfilter_queue HTML for a long time and there are likely a number of systems > > > out there that use it. When libnfnetlink is removed, libnetfilter_queue will > > > have to provide nfnl_rcvbufsiz() or those systems will start failing. > > > > There is nfq_fd() and setsockopt() that you can use: > > > > setsockopt(fd, SOL_SOCKET, SO_RCVBUFFORCE, &size, socklen); > > setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &size, socklen); > > Yes > > > > libnfnetlink is **deprecated** and it will be removed at some point, > > the git log shows that it has less and less users. > > Good to know > > > > main libnfnetlink users are the libnetfilter_* libraries. > > Yes > > > > No new application should be using libnfnetlink in 2023. > > Yes > > But please see thread starting > > [PATCH libnetfilter_queue] utils: Add example of setting socket buffer size > I meant to send my reply to that email, not this one. > > Again sorry for the confusion I've caused. Apologies, I got lost. Huge burden here. I suggest to restart from scratch and only one submission and thread at a time :) Thanks. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libnfnetlink dependency elimination (doc) 2023-11-14 15:24 ` libnfnetlink dependency elimination Pablo Neira Ayuso 2023-11-14 23:04 ` libnfnetlink dependency elimination (doc) Duncan Roe @ 2023-11-14 23:14 ` Duncan Roe 1 sibling, 0 replies; 9+ messages in thread From: Duncan Roe @ 2023-11-14 23:14 UTC (permalink / raw) To: Pablo Neira Ayuso; +Cc: Netfilter Development Hi Pablo, On Tue, Nov 14, 2023 at 04:24:11PM +0100, Pablo Neira Ayuso wrote: > On Sun, Nov 12, 2023 at 05:59:21PM +1100, Duncan Roe wrote: > > Some of these documented changes haven't happened yet. > > Then we have to start by changes first, not the other way around. It's my development model to document before coding. That way: - I know what I'm working towards - The documentation often improves with time. That would be unlikely if I left it until last Could you therefore just treat these patches as RFC (for now) and reply if you'd like to see changes, There wiil be a v2 of this one with a more positive take on using the nfnl API. Cheers ... Duncan. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-11-15 11:46 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-11-12 6:59 libnfnetlink dependency elimination Duncan Roe 2023-11-12 6:59 ` [PATCH libnetfilter_queue 1/1] doc: First update for libnfnetlink-based API over libmnl Duncan Roe 2023-11-14 15:24 ` libnfnetlink dependency elimination Pablo Neira Ayuso 2023-11-14 23:04 ` libnfnetlink dependency elimination (doc) Duncan Roe 2023-11-14 23:11 ` *** Scrub that last message Duncan Roe 2023-11-15 9:27 ` libnfnetlink dependency elimination (doc) Pablo Neira Ayuso 2023-11-15 11:43 ` Duncan Roe 2023-11-15 11:46 ` Pablo Neira Ayuso 2023-11-14 23:14 ` Duncan Roe
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.