Hi Duncan, On Thu, Apr 30, 2020 at 04:34:04PM +1000, Duncan Roe wrote: [..] > Oh well in that case, how about: > > > struct pkt_buff *pktb_alloc2(int family, void *buf, size_t buf_size, void *data, size_t len, size_t extra); Getting better. But why do you still need 'extra'? > I.e. exactly as you suggested in > https://www.spinics.net/lists/netfilter-devel/msg65830.html except s/head/buf/ > > And we tell users to dimension buf to NFQ_BUFFER_SIZE. We don't even need to > expose pktb_head_size(). NFQ_BUFFER_SIZE tells what is the maximum netlink message size coming from the kernel. That netlink message contains metadata and the actual payload data. The pktbuff structure helps you deal with the payload data, not the netlink message itself.