Florian Westphal <fw@xxxxxxxxx> writes: >> The prog will get a defition of 'struct nf_hook_state' from vmlinux.h >> or via private 'struct nf_hook_state___flavor' with few fields defined >> that prog wants to use. CORE will deal with offset adjustments. >> That's a lot less kernel code. No need for asm style ctx rewrites. >> Just see how much kernel code we already burned on *convert_ctx_access(). >> We cannot remove this tech debt due to uapi. >> When you pass struct nf_hook_state directly none of it is needed. > > Ok, thanks for pointing that out. I did not realize > convert_ctx_access() conversions were frowned upon. > > I will pass a known/exposed struct then. > > I thought __sk_buff was required for direct packet access, I will look > at this again. Kartikeya implemented direct packet access for struct xdp_md passed as a BTF ID for use in the XDP queueing RFC. You could have a look at that as a reference for how to do this for an sk_buff as well: https://git.kernel.org/pub/scm/linux/kernel/git/toke/linux.git/commit/?h=xdp-queueing-07&id=3b4f3caaf59f3b2a7b6b37dfad96b5e42347786a It does involve a convert_ctx_access() function, though, but for the BTF ID. Not sure if there's an easier way... -Toke