Skip to content

Commit

Permalink
tools: bpftool: refactor argument parsing for prog load
Browse files Browse the repository at this point in the history
Add a new macro for printing more informative message than straight
usage() when parameters are missing, and use it for prog do_load().
Save the object and pin path argument to variables for clarity.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
  • Loading branch information
Jakub Kicinski authored and Daniel Borkmann committed Jul 11, 2018
1 parent 219f860 commit 8d1fc3d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 4 deletions.
15 changes: 15 additions & 0 deletions tools/bpf/bpftool/main.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,21 @@
#define NEXT_ARG() ({ argc--; argv++; if (argc < 0) usage(); })
#define NEXT_ARGP() ({ (*argc)--; (*argv)++; if (*argc < 0) usage(); })
#define BAD_ARG() ({ p_err("what is '%s'?", *argv); -1; })
#define GET_ARG() ({ argc--; *argv++; })
#define REQ_ARGS(cnt) \
({ \
int _cnt = (cnt); \
bool _res; \
\
if (argc < _cnt) { \
p_err("'%s' needs at least %d arguments, %d found", \
argv[-1], _cnt, argc); \
_res = false; \
} else { \
_res = true; \
} \
_res; \
})

#define ERR_MAX_LEN 1024

Expand Down
11 changes: 7 additions & 4 deletions tools/bpf/bpftool/prog.c
Original file line number Diff line number Diff line change
Expand Up @@ -681,18 +681,21 @@ static int do_pin(int argc, char **argv)

static int do_load(int argc, char **argv)
{
const char *objfile, *pinfile;
struct bpf_object *obj;
int prog_fd;

if (argc != 2)
usage();
if (!REQ_ARGS(2))
return -1;
objfile = GET_ARG();
pinfile = GET_ARG();

if (bpf_prog_load(argv[0], BPF_PROG_TYPE_UNSPEC, &obj, &prog_fd)) {
if (bpf_prog_load(objfile, BPF_PROG_TYPE_UNSPEC, &obj, &prog_fd)) {
p_err("failed to load program");
return -1;
}

if (do_pin_fd(prog_fd, argv[1]))
if (do_pin_fd(prog_fd, pinfile))
goto err_close_obj;

if (json_output)
Expand Down

0 comments on commit 8d1fc3d

Please sign in to comment.