[PATCH bpf-next] bpftool: add current libbpf_strict mode to version output

Subsystems: bpf [general] (safe dynamic programs and tools), bpf [tooling] (bpftool), the rest

STALE1772d

3 messages, 2 authors, 2021-11-12 · open the first message on its own page

[PATCH bpf-next] bpftool: add current libbpf_strict mode to version output

From: Stanislav Fomichev <hidden>
Date: 2021-11-12 16:44:37

+ bpftool --legacy version
bpftool v5.15.0
features: libbfd, skeletons
+ bpftool version
bpftool v5.15.0
features: libbfd, libbpf_strict, skeletons
+ bpftool --json --legacy version
{"version":"5.15.0","features":{"libbfd":true,"libbpf_strict":false,"skeletons":true}}
+ bpftool --json version
{"version":"5.15.0","features":{"libbfd":true,"libbpf_strict":true,"skeletons":true}}

Suggested-by: Quentin Monnet <redacted>
Signed-off-by: Stanislav Fomichev <redacted>
---
 tools/bpf/bpftool/main.c | 5 +++++
 1 file changed, 5 insertions(+)
diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c
index 473791e87f7d..edbb146287ee 100644
--- a/tools/bpf/bpftool/main.c
+++ b/tools/bpf/bpftool/main.c
@@ -93,6 +93,7 @@ static int do_version(int argc, char **argv)
 		jsonw_name(json_wtr, "features");
 		jsonw_start_object(json_wtr);	/* features */
 		jsonw_bool_field(json_wtr, "libbfd", has_libbfd);
+		jsonw_bool_field(json_wtr, "libbpf_strict", !legacy_libbpf);
 		jsonw_bool_field(json_wtr, "skeletons", has_skeletons);
 		jsonw_end_object(json_wtr);	/* features */
 
@@ -106,6 +107,10 @@ static int do_version(int argc, char **argv)
 			printf(" libbfd");
 			nb_features++;
 		}
+		if (!legacy_libbpf) {
+			printf("%s libbpf_strict", nb_features++ ? "," : "");
+			nb_features++;
+		}
 		if (has_skeletons)
 			printf("%s skeletons", nb_features++ ? "," : "");
 		printf("\n");
-- 
2.34.0.rc1.387.gb447b232ab-goog

Re: [PATCH bpf-next] bpftool: add current libbpf_strict mode to version output

From: Quentin Monnet <hidden>
Date: 2021-11-12 17:02:46

2021-11-12 08:44 UTC-0800 ~ Stanislav Fomichev [off-list ref]
+ bpftool --legacy version
bpftool v5.15.0
features: libbfd, skeletons
+ bpftool version
bpftool v5.15.0
features: libbfd, libbpf_strict, skeletons
+ bpftool --json --legacy version
{"version":"5.15.0","features":{"libbfd":true,"libbpf_strict":false,"skeletons":true}}
+ bpftool --json version
{"version":"5.15.0","features":{"libbfd":true,"libbpf_strict":true,"skeletons":true}}
Nice, thanks!
The following doesn't work as expected, though:

    $ ./bpftool --version --legacy
    ./bpftool v5.15.0
    features: libbfd, libbpf_strict, skeletons

This is because we run do_version() immediately when parsing --version,
and we don't parse --legacy in that case. Could we postpone do_version()
until after we have parsed all options, so that the output from the
above is consistent with e.g. "bpftool --legacy --version"?

Thanks,
Quentin

Re: [PATCH bpf-next] bpftool: add current libbpf_strict mode to version output

From: Stanislav Fomichev <hidden>
Date: 2021-11-12 17:04:54

On Fri, Nov 12, 2021 at 9:02 AM Quentin Monnet [off-list ref] wrote:
2021-11-12 08:44 UTC-0800 ~ Stanislav Fomichev [off-list ref]
quoted
+ bpftool --legacy version
bpftool v5.15.0
features: libbfd, skeletons
+ bpftool version
bpftool v5.15.0
features: libbfd, libbpf_strict, skeletons
+ bpftool --json --legacy version
{"version":"5.15.0","features":{"libbfd":true,"libbpf_strict":false,"skeletons":true}}
+ bpftool --json version
{"version":"5.15.0","features":{"libbfd":true,"libbpf_strict":true,"skeletons":true}}
Nice, thanks!
The following doesn't work as expected, though:

    $ ./bpftool --version --legacy
    ./bpftool v5.15.0
    features: libbfd, libbpf_strict, skeletons

This is because we run do_version() immediately when parsing --version,
and we don't parse --legacy in that case. Could we postpone do_version()
until after we have parsed all options, so that the output from the
above is consistent with e.g. "bpftool --legacy --version"?
Oh, good find! Let me move some code around to fix that.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help