This patch series adds policy routing support in bpf_fib_lookup. This is a useful functionality which was missing for a long time, as without it some networking setups can't be implemented in BPF. One example can be found here [1]. A while ago there was an attempt to add this functionality [2] by Rumen Telbizov and David Ahern. I've completely refactored the code, except that the changes to the struct bpf_fib_lookup were copy-pasted from the original patch. The first patch implements the functionality, the second patch adds a few selftests, the third patch adds a build time check of the size of the struct bpf_fib_lookup. [1] https://github.com/cilium/cilium/pull/12770 [2] https://lore.kernel.org/all/20210629185537.78008-2-rumen.telbizov@xxxxxxxxxxxxxxxxx/ v1 -> v2: - simplify the selftests (Martin) - add a static check for sizeof(struct bpf_fib_lookup) (David) Anton Protopopov (3): bpf: add support for passing mark with bpf_fib_lookup selftests/bpf: Add BPF_FIB_LOOKUP_MARK tests bpf: add a check for struct bpf_fib_lookup size include/uapi/linux/bpf.h | 20 ++- net/core/filter.c | 15 +- tools/include/uapi/linux/bpf.h | 20 ++- .../selftests/bpf/prog_tests/fib_lookup.c | 134 ++++++++++++++---- 4 files changed, 153 insertions(+), 36 deletions(-) -- 2.34.1