• Yonghong Song's avatar
    tools/bpftool: Add bpf_iter support for bptool · 9406b485
    Yonghong Song authored
    Currently, only one command is supported
      bpftool iter pin <bpf_prog.o> <path>
    
    It will pin the trace/iter bpf program in
    the object file <bpf_prog.o> to the <path>
    where <path> should be on a bpffs mount.
    
    For example,
      $ bpftool iter pin ./bpf_iter_ipv6_route.o \
        /sys/fs/bpf/my_route
    User can then do a `cat` to print out the results:
      $ cat /sys/fs/bpf/my_route
        fe800000000000000000000000000000 40 00000000000000000000000000000000 ...
        00000000000000000000000000000000 00 00000000000000000000000000000000 ...
        00000000000000000000000000000001 80 00000000000000000000000000000000 ...
        fe800000000000008c0162fffebdfd57 80 00000000000000000000000000000000 ...
        ff000000000000000000000000000000 08 00000000000000000000000000000000 ...
        00000000000000000000000000000000 00 00000000000000000000000000000000 ...
    
    The implementation for ipv6_route iterator is in one of subsequent
    patches.
    
    This patch also added BPF_LINK_TYPE_ITER to link query.
    
    In the future, we may add additional parameters to pin command
    by parameterizing the bpf iterator. For example, a map_id or pid
    may be added to let bpf program only traverses a single map or task,
    similar to kernel seq_file single_open().
    
    We may also add introspection command for targets/iterators by
    leveraging the bpf_iter itself.
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20200509175920.2477247-1-yhs@fb.com
    9406b485
iter.c 1.59 KB