This patch set adds BPF iterator support for UNIX domain socket. The first patch implements it, the second adds "%c" support for BPF_SEQ_PRINTF(), and the third adds a selftest. Changelog: v4: - Check IS_BUILTIN(CONFIG_UNIX) - Support "%c" in BPF_SEQ_PRINTF() - Uncomment the code to print the name of the abstract socket - Mention the LLVM fix in README.rst - Remove the 'aligned' attribute in bpf_iter.h - Keep the format string on a single line v3: https://lore.kernel.org/netdev/20210804070851.97834-1-kuniyu@xxxxxxxxxxxx/ - Export some functions for CONFIG_UNIX=m v2: https://lore.kernel.org/netdev/20210803011110.21205-1-kuniyu@xxxxxxxxxxxx/ - Implement bpf_iter specific seq_ops->stop() - Add bpf_iter__unix in bpf_iter.h - Move common definitions in selftest to bpf_tracing_net.h - Include the code for abstract UNIX domain socket as comment in selftest - Use ASSERT_OK_PTR() instead of CHECK() - Make ternary operators on single line v1: https://lore.kernel.org/netdev/20210729233645.4869-1-kuniyu@xxxxxxxxxxxx/ Kuniyuki Iwashima (3): bpf: af_unix: Implement BPF iterator for UNIX domain socket. bpf: Support "%c" in bpf_bprintf_prepare(). selftest/bpf: Implement sample UNIX domain socket iterator program. include/linux/btf_ids.h | 3 +- kernel/bpf/helpers.c | 14 +++ net/unix/af_unix.c | 93 +++++++++++++++++++ tools/testing/selftests/bpf/README.rst | 38 ++++++++ .../selftests/bpf/prog_tests/bpf_iter.c | 16 ++++ tools/testing/selftests/bpf/progs/bpf_iter.h | 8 ++ .../selftests/bpf/progs/bpf_iter_unix.c | 77 +++++++++++++++ .../selftests/bpf/progs/bpf_tracing_net.h | 4 + 8 files changed, 252 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_unix.c -- 2.30.2