On 12/20/18 3:52 AM, Jakub Kicinski wrote:
On Wed, 19 Dec 2018 17:52:40 +0900, Taeung Song wrote:
We need to let users check their wrong section name
with proper section names when failed to get proper type from it.
Because there is no knowing what kind of section name can be used.

# bpftool prog help
Usage: bpftool prog { show | list } [PROG]
        [...]
        TYPE := { socket | kprobe | kretprobe | classifier | action |
                  tracepoint | raw_tracepoint | xdp | perf_event | cgroup/skb |
                  cgroup/sock | cgroup/dev | lwt_in | lwt_out | lwt_xmit |
                  lwt_seg6local | sockops | sk_skb | sk_msg | lirc_mode2 |
                  sk_reuseport | flow_dissector |
                  cgroup/bind4 | cgroup/bind6 | cgroup/post_bind4 |
                  cgroup/post_bind6 | cgroup/connect4 | cgroup/connect6 |
                  cgroup/sendmsg4 | cgroup/sendmsg6 }
        ATTACH_TYPE := { msg_verdict | skb_verdict | skb_parse |
                         flow_dissector }
        OPTIONS := { {-j|--json} [{-p|--pretty}] | {-f|--bpffs} |
                    {-m|--mapcompat} | {-n|--nomount} }

Also in man bpftool-prog.

Perhaps we could just point users to that info?  IMHO having libraries

Right, I think when users used wrong section names
we need to let them realize libbpf guess prog/attach types from given section names because users who are unfamiliar with BPF programming
mightn't even know that, right ?

And how about a function that return supported section names ?
I think it can be used for the 'TYPE'/'ATTACH_TYPE' help message
because it is just a string and couldn't have latest types.

unconditionally print warnings is not great..


OK, need to change that, will send v2.

Thanks,
Taeung

For example, when a 'cgroup' section name of a BPF program is used,

Before:

     $ bpftool prog load bpf-prog.o /sys/fs/bpf/prog1
     Error: failed to guess program type based on section name cgroup

After:

     libbpf: failed to guess program type based on section name 'cgroup'
     libbpf: possible section(type) names are: socket kprobe/ kretprobe/ 
classifier action tracepoint/ raw_tracepoint/ xdp perf_event lwt_in lwt_out 
lwt_xmit lwt_seg6local cgroup_skb/ingress cgroup_skb/egress cgroup/skb 
cgroup/sock cgroup/post_bind4 cgroup/post_bind6 cgroup/dev sockops 
sk_skb/stream_parser sk_skb/stream_verdict sk_skb sk_msg lirc_mode2 
flow_dissector cgroup/bind4 cgroup/bind6 cgroup/connect4 cgroup/connect6 
cgroup/sendmsg4 cgroup/sendmsg6

Cc: Jakub Kicinski <jakub.kicin...@netronome.com>
Cc: Andrey Ignatov <r...@fb.com>
Signed-off-by: Taeung Song <treeze.tae...@gmail.com>

Reply via email to