diff options
Diffstat (limited to 'tools/bpf/bpftool/common.c')
| -rw-r--r-- | tools/bpf/bpftool/common.c | 40 | 
1 files changed, 11 insertions, 29 deletions
diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c index b75b8ec5469c..f2223dbdfb0a 100644 --- a/tools/bpf/bpftool/common.c +++ b/tools/bpf/bpftool/common.c @@ -211,39 +211,14 @@ int do_pin_fd(int fd, const char *name)  	return err;  } -int do_pin_any(int argc, char **argv, int (*get_fd_by_id)(__u32)) +int do_pin_any(int argc, char **argv, int (*get_fd)(int *, char ***))  { -	unsigned int id; -	char *endptr;  	int err;  	int fd; -	if (argc < 3) { -		p_err("too few arguments, id ID and FILE path is required"); -		return -1; -	} else if (argc > 3) { -		p_err("too many arguments"); -		return -1; -	} - -	if (!is_prefix(*argv, "id")) { -		p_err("expected 'id' got %s", *argv); -		return -1; -	} -	NEXT_ARG(); - -	id = strtoul(*argv, &endptr, 0); -	if (*endptr) { -		p_err("can't parse %s as ID", *argv); -		return -1; -	} -	NEXT_ARG(); - -	fd = get_fd_by_id(id); -	if (fd < 0) { -		p_err("can't open object by id (%u): %s", id, strerror(errno)); -		return -1; -	} +	fd = get_fd(&argc, &argv); +	if (fd < 0) +		return fd;  	err = do_pin_fd(fd, *argv); @@ -597,3 +572,10 @@ int parse_u32_arg(int *argc, char ***argv, __u32 *val, const char *what)  	return 0;  } + +int __printf(2, 0) +print_all_levels(__maybe_unused enum libbpf_print_level level, +		 const char *format, va_list args) +{ +	return vfprintf(stderr, format, args); +}  |