On 04/09/2019 08:49 PM, Stanislav Fomichev wrote: > Add new set of arguments to bpf_attr for BPF_PROG_TEST_RUN: > * ctx_in/ctx_size_in - input context > * ctx_out/ctx_size_out - output context > > The intended use case is to pass some meta data to the test runs that > operate on skb (this has being brought up on recent LPC). > > For programs that use bpf_prog_test_run_skb, support __sk_buff input and > output. Initially, from input __sk_buff, copy _only_ cb and priority into > skb, all other non-zero fields are prohibited (with EINVAL). > If the user has set ctx_out/ctx_size_out, copy the potentially modified > __sk_buff back to the userspace. > > We require all fields of input __sk_buff except the ones we explicitly > support to be set to zero. The expectation is that in the future we might > add support for more fields and we want to fail explicitly if the user > runs the program on the kernel where we don't yet support them. > > The API is intentionally vague (i.e. we don't explicitly add __sk_buff > to bpf_attr, but ctx_in) to potentially let other test_run types use > this interface in the future (this can be xdp_md for xdp types for > example). > > v4: > * don't copy more than allowed in bpf_ctx_init [Martin] > > v3: > * handle case where ctx_in is NULL, but ctx_out is not [Martin] > * convert size==0 checks to ptr==NULL checks and add some extra ptr > checks [Martin] > > v2: > * Addressed comments from Martin Lau > > Cc: Martin Lau <kafai@xxxxxx> > Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> Series applied, thanks!