Add option to set mark and priority in addition to bound device for newly created sockets. Also, allow the bpf programs to use the get_current_uid_gid helper meaning socket marks, priority and device can be set base on the uid/gid of the running process.
For flexbility in deploying these programs, option is added to allow cgroups to be walked from current to root running any program attached. This allows one cgroup level to control the device a socket is bound to (e.g, a VRF) while cgroups can be used to set socket marks and priority. Sample programs are updated to demonstrate the new options. v2 - added flag to control recursive behavior as requested by Alexei - added comment to sock_filter_func_proto regarding use of get_current_uid_gid helper - updated test programs for recursive option David Ahern (8): bpf: Add support for recursively running cgroup sock filters bpf: Add mark and priority to sock options that can be set bpf: Allow cgroup sock filters to use get_current_uid_gid helper samples/bpf: Update sock test to allow setting mark and priority samples/bpf: Add detach option to test_cgrp2_sock samples/bpf: Add option to dump socket settings samples/bpf: Add test case for nested socket options samples/bpf: Update cgroup socket examples to use uid gid helper include/linux/bpf-cgroup.h | 10 +- include/uapi/linux/bpf.h | 11 ++ kernel/bpf/cgroup.c | 29 +++-- kernel/bpf/syscall.c | 6 +- kernel/cgroup/cgroup.c | 25 +++- net/core/filter.c | 42 ++++++- samples/bpf/sock_flags_kern.c | 5 + samples/bpf/test_cgrp2_sock.c | 258 ++++++++++++++++++++++++++++++++++++---- samples/bpf/test_cgrp2_sock.sh | 2 +- samples/bpf/test_cgrp2_sock3.sh | 162 +++++++++++++++++++++++++ 10 files changed, 506 insertions(+), 44 deletions(-) create mode 100755 samples/bpf/test_cgrp2_sock3.sh -- 2.1.4