On Fri, Aug 9, 2019 at 6:35 AM Daniel T. Lee <danieltim...@gmail.com> wrote: > > By this commit, using `bpftool net detach`, the attached XDP prog can > be detached. Detaching the BPF prog will be done through libbpf > 'bpf_set_link_xdp_fd' with the progfd set to -1. > > Signed-off-by: Daniel T. Lee <danieltim...@gmail.com> > --- > tools/bpf/bpftool/net.c | 42 ++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 41 insertions(+), 1 deletion(-) > > diff --git a/tools/bpf/bpftool/net.c b/tools/bpf/bpftool/net.c > index 74cc346c36cd..ef1e576c6dba 100644 > --- a/tools/bpf/bpftool/net.c > +++ b/tools/bpf/bpftool/net.c > @@ -343,6 +343,43 @@ static int do_attach(int argc, char **argv) > return 0; > } > > +static int do_detach(int argc, char **argv) > +{ > + enum net_attach_type attach_type; > + int progfd, ifindex, err = 0; > + > + /* parse detach args */ > + if (!REQ_ARGS(3)) > + return -EINVAL; > + > + attach_type = parse_attach_type(*argv); > + if (attach_type == net_attach_type_size) { > + p_err("invalid net attach/detach type: %s", *argv); > + return -EINVAL; > + } > + NEXT_ARG(); > + > + ifindex = net_parse_dev(&argc, &argv); > + if (ifindex < 1) > + return -EINVAL; > + > + /* detach xdp prog */ > + progfd = -1; > + if (is_prefix("xdp", attach_type_strings[attach_type])) > + err = do_attach_detach_xdp(progfd, attach_type, ifindex, > NULL); > + > + if (err < 0) { > + p_err("interface %s detach failed: %s", > + attach_type_strings[attach_type], strerror(errno)); > + return err; > + }
Similar to previous patch, here we should use "strerror(-err)". With this fixed, you can add my ack: Acked-by: Yonghong Song <y...@fb.com> > + > + if (json_output) > + jsonw_null(json_wtr); > + > + return 0; > +} > + [...]