Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 004b45c0 authored by Quentin Monnet's avatar Quentin Monnet Committed by David S. Miller
Browse files

tools: bpftool: provide JSON output for all possible commands



As all commands can now return JSON output (possibly just a "null"
value), output of `bpftool --json batch file FILE` should also be fully
JSON compliant.

Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9a5ab8bf
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -64,6 +64,11 @@ void usage(void)

static int do_help(int argc, char **argv)
{
	if (json_output) {
		jsonw_null(json_wtr);
		return 0;
	}

	fprintf(stderr,
		"Usage: %s OBJECT { COMMAND | help }\n"
		"       %s batch file FILE\n"
@@ -77,10 +82,22 @@ static int do_help(int argc, char **argv)

static int do_version(int argc, char **argv)
{
	printf("%s v%d.%d.%d\n", bin_name,
	       LINUX_VERSION_CODE >> 16,
	       LINUX_VERSION_CODE >> 8 & 0xf,
	       LINUX_VERSION_CODE & 0xf);
	unsigned int version[3];

	version[0] = LINUX_VERSION_CODE >> 16;
	version[1] = LINUX_VERSION_CODE >> 8 & 0xf;
	version[2] = LINUX_VERSION_CODE & 0xf;

	if (json_output) {
		jsonw_start_object(json_wtr);
		jsonw_name(json_wtr, "version");
		jsonw_printf(json_wtr, "\"%u.%u.%u\"",
			     version[0], version[1], version[2]);
		jsonw_end_object(json_wtr);
	} else {
		printf("%s v%u.%u.%u\n", bin_name,
		       version[0], version[1], version[2]);
	}
	return 0;
}

+15 −1
Original line number Diff line number Diff line
@@ -651,6 +651,8 @@ static int do_update(int argc, char **argv)
	free(value);
	close(fd);

	if (!err && json_output)
		jsonw_null(json_wtr);
	return err;
}

@@ -812,16 +814,28 @@ static int do_delete(int argc, char **argv)
	free(key);
	close(fd);

	if (!err && json_output)
		jsonw_null(json_wtr);
	return err;
}

static int do_pin(int argc, char **argv)
{
	return do_pin_any(argc, argv, bpf_map_get_fd_by_id);
	int err;

	err = do_pin_any(argc, argv, bpf_map_get_fd_by_id);
	if (!err && json_output)
		jsonw_null(json_wtr);
	return err;
}

static int do_help(int argc, char **argv)
{
	if (json_output) {
		jsonw_null(json_wtr);
		return 0;
	}

	fprintf(stderr,
		"Usage: %s %s show   [MAP]\n"
		"       %s %s dump    MAP\n"
+11 −1
Original line number Diff line number Diff line
@@ -602,11 +602,21 @@ static int do_dump(int argc, char **argv)

static int do_pin(int argc, char **argv)
{
	return do_pin_any(argc, argv, bpf_prog_get_fd_by_id);
	int err;

	err = do_pin_any(argc, argv, bpf_prog_get_fd_by_id);
	if (!err && json_output)
		jsonw_null(json_wtr);
	return err;
}

static int do_help(int argc, char **argv)
{
	if (json_output) {
		jsonw_null(json_wtr);
		return 0;
	}

	fprintf(stderr,
		"Usage: %s %s show [PROG]\n"
		"       %s %s dump xlated PROG [{ file FILE | opcodes }]\n"