This series implements two new per-cgroup hooks: getsockopt and setsockopt along with a new sockopt program type. The idea is pretty similar to recently introduced cgroup sysctl hooks, but implementation is simpler (no need to convert to/from strings). What this can be applied to: * move business logic of what tos/priority/etc can be set by containers (either pass or reject) * handle existing options (or introduce new ones) differently by propagating some information in cgroup/socket local storage Compared to a simple syscall/{g,s}etsockopt tracepoint, those hooks are context aware. Meaning, they can access underlying socket and use cgroup and socket local storage. Stanislav Fomichev (7): bpf: implement getsockopt and setsockopt hooks bpf: sync bpf.h to tools/ libbpf: support sockopt hooks selftests/bpf: test sockopt section name selftests/bpf: add sockopt test bpf: add sockopt documentation bpftool: support cgroup sockopt Documentation/bpf/index.rst | 1 + Documentation/bpf/prog_cgroup_sockopt.rst | 42 + include/linux/bpf-cgroup.h | 29 + include/linux/bpf.h | 2 + include/linux/bpf_types.h | 1 + include/linux/filter.h | 19 + include/uapi/linux/bpf.h | 17 +- kernel/bpf/cgroup.c | 288 +++++++ kernel/bpf/syscall.c | 19 + kernel/bpf/verifier.c | 12 + net/core/filter.c | 4 +- net/socket.c | 18 + .../bpftool/Documentation/bpftool-cgroup.rst | 7 +- .../bpftool/Documentation/bpftool-prog.rst | 2 +- tools/bpf/bpftool/bash-completion/bpftool | 8 +- tools/bpf/bpftool/cgroup.c | 5 +- tools/bpf/bpftool/main.h | 1 + tools/bpf/bpftool/prog.c | 3 +- tools/include/uapi/linux/bpf.h | 17 +- tools/lib/bpf/libbpf.c | 5 + tools/lib/bpf/libbpf_probes.c | 1 + tools/testing/selftests/bpf/.gitignore | 1 + tools/testing/selftests/bpf/Makefile | 3 +- tools/testing/selftests/bpf/bpf_helpers.h | 2 + .../selftests/bpf/test_section_names.c | 10 + tools/testing/selftests/bpf/test_sockopt.c | 789 ++++++++++++++++++ 26 files changed, 1293 insertions(+), 13 deletions(-) create mode 100644 Documentation/bpf/prog_cgroup_sockopt.rst create mode 100644 tools/testing/selftests/bpf/test_sockopt.c -- 2.22.0.rc1.311.g5d7573a151-goog