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