On Fri, Jan 19, 2018 at 05:45:40PM -0800, Lawrence Brakmo wrote: > This patch adds a macro, SOCK_OPS_SET_FIELD, for writing to > struct tcp_sock or struct sock fields. This required adding a new > field "temp" to struct bpf_sock_ops_kern for temporary storage that > is used by sock_ops_convert_ctx_access. It is used to store and recover > the contents of a register, so the register can be used to store the > address of the sk. Since we cannot overwrite the dst_reg because it > contains the pointer to ctx, nor the src_reg since it contains the value > we want to store, we need an extra register to contain the address > of the sk. > > Also adds the macro SOCK_OPS_GET_OR_SET_FIELD that calls one of the > GET or SET macros depending on the value of the TYPE field. > > Signed-off-by: Lawrence Brakmo <bra...@fb.com>
Acked-by: Alexei Starovoitov <a...@kernel.org> that is really clever way of doing inline writes into fields. I suspect we will be using this approach in other places.