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, cgroups are 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. David Ahern (8): bpf: Recursively apply 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 bpf samples: Update sock test to allow setting mark and priority bpf/samples: 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 | 5 +- include/uapi/linux/bpf.h | 2 + kernel/bpf/cgroup.c | 4 +- kernel/cgroup/cgroup.c | 18 +++ net/core/filter.c | 39 ++++++- samples/bpf/sock_flags_kern.c | 5 + samples/bpf/test_cgrp2_sock.c | 252 ++++++++++++++++++++++++++++++++++++---- samples/bpf/test_cgrp2_sock.sh | 2 +- samples/bpf/test_cgrp2_sock3.sh | 118 +++++++++++++++++++ 9 files changed, 413 insertions(+), 32 deletions(-) create mode 100755 samples/bpf/test_cgrp2_sock3.sh -- 2.1.4