This series updates sockmap UAPI, adds additional test cases and provides a couple fixes.
First the UAPI changes. The original API added two sockmap specific API artifacts (a) a new map_flags field with a sockmap specific update command and (b) a new sockmap specific attach field in the attach data structure. After this series instead of attaching programs with a single command now two commands are used to attach programs to maps individually. This allows us to add new programs easily in the future and avoids any specific sockmap data structure additions. The map_flags field is also removed and instead we allow socks to be added to multiple maps that may or may not have programs attached. This allows users to decide if a sock should run a SK_SKB program type on receive based on the map it is attached to. This is a nice improvement. See patches for specific details. More test cases were added to test above changes and also stress test the interface. Finally two fixes/improvements were made. First a missing rcu section was added. Second now sockmap can build without KCM being used to trigger 'y' on CONFIG_STREAM_PARSER by selecting a new BPF config option. --- John Fastabend (9): bpf: convert sockmap field attach_bpf_fd2 to type bpf: sockmap, remove STRPARSER map_flags and add multi-map support bpf: sockmap add missing rcu_read_(un)lock in smap_data_ready bpf: additional sockmap self tests bpf: more SK_SKB selftests bpf: harden sockmap program attach to ensure correct map type bpf: sockmap indicate sock events to listeners bpf: sockmap requires STREAM_PARSER add Kconfig entry bpf: test_maps add sockmap stress test include/linux/bpf.h | 10 + include/uapi/linux/bpf.h | 12 - kernel/bpf/sockmap.c | 312 ++++++++++++-------- kernel/bpf/syscall.c | 38 +- net/Kconfig | 12 + samples/sockmap/sockmap_kern.c | 6 samples/sockmap/sockmap_user.c | 12 + tools/include/uapi/linux/bpf.h | 9 - tools/lib/bpf/bpf.c | 14 - tools/lib/bpf/bpf.h | 4 tools/testing/selftests/bpf/bpf_helpers.h | 3 tools/testing/selftests/bpf/sockmap_parse_prog.c | 8 - tools/testing/selftests/bpf/sockmap_verdict_prog.c | 30 ++ tools/testing/selftests/bpf/test_maps.c | 272 +++++++++++------ tools/testing/selftests/bpf/test_verifier.c | 98 ++++++ 15 files changed, 544 insertions(+), 296 deletions(-) -- Signature