Re: [PATCH libnetfilter_queue 0/3] pktbuff API updates

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Pablo,

On Sun, Apr 26, 2020 at 03:23:53PM +0200, Pablo Neira Ayuso wrote:
> Hi Duncan,
>
> This is another turn / incremental update to the pktbuff API based on
> your feedback:
>
> Patch #1 adds pktb_alloc_head() to allocate the pkt_buff structure.
> 	 This patch also adds pktb_build_data() to set up the pktbuff
> 	 data pointer.
>
> Patch #2 updates the existing example to use pktb_alloc_head() and
>          pktb_build_data().
>
> Patch #3 adds a few helper functions to set up the pointer to the
>          network header.
>
> Your goal is to avoid the memory allocation and the memcpy() in
> pktb_alloc(). With this scheme, users pre-allocate the pktbuff object
> from the configuration step, and then this object is recycled for each
> packet that is received from the kernel.
>
> Would this update fit for your usecase?

No, sorry. The show-stopper is, no allowance for the "extra" arg, when you might
want to mangle a packet tobe larger than it was.

For "extra" support, you need something with the sophistication of pktb_malloc2.
If extra == 0, pktb_malloc2 optimises by leaving the packet data where it was.
Actually pktb_malloc2 doesn't need to make this decision. That can be deferred
to pktb_mangle, which could do the copy if it has been told to expand a packet
and the copy has not already been done (new "copy done" flag in the opaque
struct pkt_buff).

My nfq-based accidentally-written ad blocker would benefit from that deferment -
I allow extra bytes in case I have to lengthen a domain name, but most of the
time I'm shortening them.
>
> Thanks.
>
> P.S: I'm sorry for the time being, it's been hectic here.
>
> Pablo Neira Ayuso (3):
>   pktbuff: add pktb_alloc_head() and pktb_build_data()
>   example: nf-queue: use pkt_buff
>   pktbuff: add pktb_reset_network_header() and pktb_set_network_header()
>
>  examples/nf-queue.c                  | 25 +++++++++++++++++++--
>  include/libnetfilter_queue/pktbuff.h |  6 +++++
>  src/extra/pktbuff.c                  | 33 ++++++++++++++++++++++++++++
>  3 files changed, 62 insertions(+), 2 deletions(-)
>
> --
> 2.20.1
>
In https://www.spinics.net/lists/netfilter-devel/msg65830.html, you suggested a
pair of functions: pktb_alloc2 & pktb_head_size.

I really prefer that to your new suggestions.

More later,

Cheers ... Duncan.



[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux