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. [1] https://github.com/cilium/cilium/pull/12770 [2] https://lore.kernel.org/all/20210629185537.78008-2-rumen.telbizov@xxxxxxxxxxxxxxxxx/ Anton Protopopov (2): bpf: add support for passing mark with bpf_fib_lookup selftests/bpf: Add BPF_FIB_LOOKUP_MARK tests include/uapi/linux/bpf.h | 20 ++- net/core/filter.c | 12 +- tools/include/uapi/linux/bpf.h | 20 ++- .../selftests/bpf/prog_tests/fib_lookup.c | 160 ++++++++++++++---- 4 files changed, 176 insertions(+), 36 deletions(-) -- 2.34.1