Re: [PATCH net-next] libbpf: add function to setup XDP

From: Eric Leblond
Date: Sun Dec 10 2017 - 15:34:32 EST


Hello,

On Sat, 2017-12-09 at 15:57 -0800, Jakub Kicinski wrote:
> On Sat, 9 Dec 2017 15:43:15 +0100, Eric Leblond wrote:
> > + for (nh = (struct nlmsghdr *)buf; NLMSG_OK(nh, len);
> > + nh = NLMSG_NEXT(nh, len)) {
> > + if (nh->nlmsg_pid != getpid()) {
> > + ret = -LIBBPF_ERRNO__WRNGPID;
> > + goto cleanup;
> > + }
> > + if (nh->nlmsg_seq != seq) {
> > + ret = -LIBBPF_ERRNO__INVSEQ;
> > + goto cleanup;
> > + }
> > + switch (nh->nlmsg_type) {
> > + case NLMSG_ERROR:
> > + err = (struct nlmsgerr *)NLMSG_DATA(nh);
> > + if (!err->error)
> > + continue;
> > + ret = err->error;
> > + goto cleanup;
> > + case NLMSG_DONE:
> > + break;
> > + default:
> > + break;
> > + }
>
> Would it be possible to print out or preferably return to the caller
> the ext ack error message? A couple of drivers are using it for XDP
> mis-configuration reporting instead of printks. We should encourage
> other to do the same and support it in all user space since ext ack
> msgs lead to much better user experience.

I've seen the kind of messages displayed by reading at kernel log. They
are really useful and it looks almost mandatory to be able to display
them.

Kernel code seems to not have a parser for the ext ack error message.
Did I miss something here ?

Looking at tc code, it seems it is using libmnl to parse them and I
doubt it is a good idea to use that in libbpf as it is introducing a
dependency.

Does someone has an existing parsing code or should I write on my own ?

BR,
--
Eric Leblond <eric@xxxxxxxxx>
Blog: https://home.regit.org/