Jakub Kicinski <jakub.kicinski@xxxxxxxxxxxxx> writes: >> diff --git a/include/linux/bpf.h b/include/linux/bpf.h >> index 5b9d22338606..753abfb78c13 100644 >> --- a/include/linux/bpf.h >> +++ b/include/linux/bpf.h >> @@ -383,6 +383,7 @@ struct bpf_prog_aux { >> struct list_head ksym_lnode; >> const struct bpf_prog_ops *ops; >> struct bpf_map **used_maps; >> + struct bpf_array *chain_progs; >> struct bpf_prog *prog; >> struct user_struct *user; >> u64 load_time; /* ns since boottime */ >> @@ -443,6 +444,7 @@ struct bpf_array { >> >> #define BPF_COMPLEXITY_LIMIT_INSNS 1000000 /* yes. 1M insns */ >> #define MAX_TAIL_CALL_CNT 32 >> +#define BPF_NUM_CHAIN_SLOTS 8 > > This could be user arg? Also the behaviour of mapping could be user > controlled? Perhaps even users could pass the snippet to map the > return code to the location, one day? (Forgot to reply to this point). Yeah, we could make it user-configurable. Or just dynamically increase the size of the array if we run out. Or do something different with linked list, as I alluded to in the other reply :) -Toke