Introduce 'skb_set_tunnel_opt_dynptr' to allow setting tunnel options of dynamic length. v2: - Place test_tunnel's local route in a custom table, to ensure the IP isn't considered assigned to a device. v3: - Avoid 'inline' for the __bpf_skb_set_tunopt helper function v4: - change API to be based on bpf_dynptr, suggested by John Fastabend <john.fastabend@xxxxxxxxx> v5: - fix bpf_dynptr_get_data's incorrect usage of bpf_dynptr_kern's size spotted by Joanne Koong <joannelkoong@xxxxxxxxx> Shmulik Ladkani (4): bpf: Add 'bpf_dynptr_get_data' helper bpf: Support setting variable-length tunnel options selftests/bpf: Simplify test_tunnel setup for allowing non-local tunnel traffic selftests/bpf: Add geneve with bpf_skb_set_tunnel_opt_dynptr test-case to test_progs include/linux/bpf.h | 1 + include/uapi/linux/bpf.h | 12 ++ kernel/bpf/helpers.c | 8 + net/core/filter.c | 36 +++- tools/include/uapi/linux/bpf.h | 12 ++ .../selftests/bpf/prog_tests/test_tunnel.c | 131 ++++++++++-- .../selftests/bpf/progs/test_tunnel_kern.c | 200 ++++++++++++------ 7 files changed, 320 insertions(+), 80 deletions(-) -- 2.37.2