• Stanislav Fomichev's avatar
    bpftool: support loading flow dissector · 092f0892
    Stanislav Fomichev authored
    This commit adds support for loading/attaching/detaching flow
    dissector program.
    
    When `bpftool loadall` is called with a flow_dissector prog (i.e. when the
    'type flow_dissector' argument is passed), we load and pin all programs.
    User is responsible to construct the jump table for the tail calls.
    
    The last argument of `bpftool attach` is made optional for this use
    case.
    
    Example:
    bpftool prog load tools/testing/selftests/bpf/bpf_flow.o \
            /sys/fs/bpf/flow type flow_dissector \
    	pinmaps /sys/fs/bpf/flow
    
    bpftool map update pinned /sys/fs/bpf/flow/jmp_table \
            key 0 0 0 0 \
            value pinned /sys/fs/bpf/flow/IP
    
    bpftool map update pinned /sys/fs/bpf/flow/jmp_table \
            key 1 0 0 0 \
            value pinned /sys/fs/bpf/flow/IPV6
    
    bpftool map update pinned /sys/fs/bpf/flow/jmp_table \
            key 2 0 0 0 \
            value pinned /sys/fs/bpf/flow/IPV6OP
    
    bpftool map update pinned /sys/fs/bpf/flow/jmp_table \
            key 3 0 0 0 \
            value pinned /sys/fs/bpf/flow/IPV6FR
    
    bpftool map update pinned /sys/fs/bpf/flow/jmp_table \
            key 4 0 0 0 \
            value pinned /sys/fs/bpf/flow/MPLS
    
    bpftool map update pinned /sys/fs/bpf/flow/jmp_table \
            key 5 0 0 0 \
            value pinned /sys/fs/bpf/flow/VLAN
    
    bpftool prog attach pinned /sys/fs/bpf/flow/flow_dissector flow_dissector
    
    Tested by using the above lines to load the prog in
    the test_flow_dissector.sh selftest.
    Signed-off-by: default avatarStanislav Fomichev <sdf@google.com>
    Acked-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    092f0892
bpftool-prog.rst 7.44 KB