• Jakub Kicinski's avatar
    tools: bpftool: add support for reporting the effective cgroup progs · a98bf573
    Jakub Kicinski authored
    Takshak said in the original submission:
    
    With different bpf attach_flags available to attach bpf programs specially
    with BPF_F_ALLOW_OVERRIDE and BPF_F_ALLOW_MULTI, the list of effective
    bpf-programs available to any sub-cgroups really needs to be available for
    easy debugging.
    
    Using BPF_F_QUERY_EFFECTIVE flag, one can get the list of not only attached
    bpf-programs to a cgroup but also the inherited ones from parent cgroup.
    
    So a new option is introduced to use BPF_F_QUERY_EFFECTIVE query flag here
    to list all the effective bpf-programs available for execution at a specified
    cgroup.
    
    Reused modified test program test_cgroup_attach from tools/testing/selftests/bpf:
      # ./test_cgroup_attach
    
    With old bpftool:
    
     # bpftool cgroup show /sys/fs/cgroup/cgroup-test-work-dir/cg1/
      ID       AttachType      AttachFlags     Name
      271      egress          multi           pkt_cntr_1
      272      egress          multi           pkt_cntr_2
    
    Attached new program pkt_cntr_4 in cg2 gives following:
    
     # bpftool cgroup show /sys/fs/cgroup/cgroup-test-work-dir/cg1/cg2
      ID       AttachType      AttachFlags     Name
      273      egress          override        pkt_cntr_4
    
    And with new "effective" option it shows all effective programs for cg2:
    
     # bpftool cgroup show /sys/fs/cgroup/cgroup-test-work-dir/cg1/cg2 effective
      ID       AttachType      AttachFlags     Name
      273      egress          override        pkt_cntr_4
      271      egress          override        pkt_cntr_1
      272      egress          override        pkt_cntr_2
    
    Compared to original submission use a local flag instead of global
    option.
    
    We need to clear query_flags on every command, in case batch mode
    wants to use varying settings.
    
    v2: (Takshak)
     - forbid duplicated flags;
     - fix cgroup path freeing.
    Signed-off-by: default avatarTakshak Chahande <ctakshak@fb.com>
    Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
    Reviewed-by: default avatarTakshak Chahande <ctakshak@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    a98bf573
cgroup.c 11 KB