From: Stephen Hemminger <stephen@networkplumber.org>
To: Daniel Borkmann <daniel@iogearbox.net>
Cc: David Ahern <dsahern@gmail.com>,
Jakub Kicinski <jakub.kicinski@netronome.com>,
Ophir Munk <ophirmu@mellanox.com>,
netdev@vger.kernel.org, Thomas Monjalon <thomas@monjalon.net>,
Olga Shern <olgas@mellanox.com>,
ast@kernel.org
Subject: Re: [PATCH] tc, bpf: add option to dump bpf verifier as C program fragment
Date: Wed, 20 Jun 2018 09:40:35 -0700 [thread overview]
Message-ID: <20180620094035.45ba0239@xeon-e3> (raw)
In-Reply-To: <e454ef12-0ae7-7122-3801-321a62c5d0ce@iogearbox.net>
On Wed, 20 Jun 2018 00:13:52 +0200
Daniel Borkmann <daniel@iogearbox.net> wrote:
> On 06/18/2018 11:44 PM, David Ahern wrote:
> > On 6/18/18 2:18 PM, Jakub Kicinski wrote:
> >> On Sun, 17 Jun 2018 08:48:41 +0000, Ophir Munk wrote:
> >>> Similar to cbpf used within tcpdump utility with a "-d" option to dump
> >>> the compiled packet-matching code in a human readable form - tc has the
> >>> "verbose" option to dump ebpf verifier output.
> >>> Another useful option of cbpf using tcpdump "-dd" option is to dump
> >>> packet-matching code a C program fragment. Similar to this - this commit
> >>> adds a new tc ebpf option named "code" to dump ebpf verifier as C program
> >>> fragment.
> >>>
> >>> Existing "verbose" option sample output:
> >>>
> >>> Verifier analysis:
> >>> 0: (61) r2 = *(u32 *)(r1 +52)
> >>> 1: (18) r3 = 0xdeadbeef
> >>> 3: (63) *(u32 *)(r10 -4) = r3
> >>> .
> >>> .
> >>> 11: (63) *(u32 *)(r1 +52) = r2
> >>> 12: (18) r0 = 0xffffffff
> >>> 14: (95) exit
> >>>
> >>> New "code" option sample output:
> >>>
> >>> /* struct bpf_insn cls_q_code[] = { */
> >>> {0x61, 2, 1, 52, 0x00000000},
> >>> {0x18, 3, 0, 0, 0xdeadbeef},
> >>> {0x00, 0, 0, 0, 0x00000000},
> >>> .
> >>> .
> >>> {0x63, 1, 2, 52, 0x00000000},
> >>> {0x18, 0, 0, 0, 0xffffffff},
> >>> {0x00, 0, 0, 0, 0x00000000},
> >>> {0x95, 0, 0, 0, 0x00000000},
> >>>
> >>> Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
> >>
> >> Hmm... printing C arrays looks like hacky integration with some C
> >> code... Would you not be better served by simply using libbpf in
> >> whatever is consuming this output?
> >
> > I was thinking the same. bpftool would provide options too -- print the
> > above, print in macro encodings and verifier. I gave an example of this
> > side by side dump at netconf 2.1. Does not look like the slides made it
> > online; see attached.
>
> +1, I would also doubt that this adds a lot in terms of debuggability
> when you're trying to load an object file with thousands of insns. Better
> way would be to use llvm-objdump on the obj file to get to the annotated
> disassembly, see also example in [0]. A .o to .c converter is wip for
> libbpf/bpftool as presented in [1], which should provide the flexibility
> to embedd an obj file.
>
> Cheers,
> Daniel
>
> [0] http://cilium.readthedocs.io/en/latest/bpf/#llvm
> [1] http://vger.kernel.org/netconf2018_files/AlexeiStarovoitov_netconf2018.pdf page 22
I am going to not accept this for now. Please respin for iproute2 next if
you think bpftool won't be able to handle this.
prev parent reply other threads:[~2018-06-20 16:40 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-17 8:48 [PATCH] tc, bpf: add option to dump bpf verifier as C program fragment Ophir Munk
2018-06-18 20:18 ` Jakub Kicinski
2018-06-18 21:44 ` David Ahern
2018-06-19 22:13 ` Daniel Borkmann
2018-06-20 16:40 ` Stephen Hemminger [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180620094035.45ba0239@xeon-e3 \
--to=stephen@networkplumber.org \
--cc=ast@kernel.org \
--cc=daniel@iogearbox.net \
--cc=dsahern@gmail.com \
--cc=jakub.kicinski@netronome.com \
--cc=netdev@vger.kernel.org \
--cc=olgas@mellanox.com \
--cc=ophirmu@mellanox.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.