Skip to content

Commit

Permalink
selftests/bpf: Fix flow dissector tests
Browse files Browse the repository at this point in the history
- update custom loader to search by name, not section name
- update bpftool commands to use proper pin path

Signed-off-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20211021214814.1236114-4-sdf@google.com
  • Loading branch information
Stanislav Fomichev authored and Andrii Nakryiko committed Oct 22, 2021
1 parent a77f879 commit d132120
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 20 deletions.
18 changes: 11 additions & 7 deletions tools/testing/selftests/bpf/flow_dissector_load.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,19 @@
const char *cfg_pin_path = "/sys/fs/bpf/flow_dissector";
const char *cfg_map_name = "jmp_table";
bool cfg_attach = true;
char *cfg_section_name;
char *cfg_prog_name;
char *cfg_path_name;

static void load_and_attach_program(void)
{
int prog_fd, ret;
struct bpf_object *obj;

ret = bpf_flow_load(&obj, cfg_path_name, cfg_section_name,
ret = libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
if (ret)
error(1, 0, "failed to enable libbpf strict mode: %d", ret);

ret = bpf_flow_load(&obj, cfg_path_name, cfg_prog_name,
cfg_map_name, NULL, &prog_fd, NULL);
if (ret)
error(1, 0, "bpf_flow_load %s", cfg_path_name);
Expand Down Expand Up @@ -75,15 +79,15 @@ static void parse_opts(int argc, char **argv)
break;
case 'p':
if (cfg_path_name)
error(1, 0, "only one prog name can be given");
error(1, 0, "only one path can be given");

cfg_path_name = optarg;
break;
case 's':
if (cfg_section_name)
error(1, 0, "only one section can be given");
if (cfg_prog_name)
error(1, 0, "only one prog can be given");

cfg_section_name = optarg;
cfg_prog_name = optarg;
break;
}
}
Expand All @@ -94,7 +98,7 @@ static void parse_opts(int argc, char **argv)
if (cfg_attach && !cfg_path_name)
error(1, 0, "must provide a path to the BPF program");

if (cfg_attach && !cfg_section_name)
if (cfg_attach && !cfg_prog_name)
error(1, 0, "must provide a section name");
}

Expand Down
10 changes: 2 additions & 8 deletions tools/testing/selftests/bpf/flow_dissector_load.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

static inline int bpf_flow_load(struct bpf_object **obj,
const char *path,
const char *section_name,
const char *prog_name,
const char *map_name,
const char *keys_map_name,
int *prog_fd,
Expand All @@ -23,13 +23,7 @@ static inline int bpf_flow_load(struct bpf_object **obj,
if (ret)
return ret;

main_prog = NULL;
bpf_object__for_each_program(prog, *obj) {
if (strcmp(section_name, bpf_program__section_name(prog)) == 0) {
main_prog = prog;
break;
}
}
main_prog = bpf_object__find_program_by_name(*obj, prog_name);
if (!main_prog)
return -1;

Expand Down
10 changes: 5 additions & 5 deletions tools/testing/selftests/bpf/test_flow_dissector.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,22 +26,22 @@ if [[ -z $(ip netns identify $$) ]]; then
type flow_dissector

if ! unshare --net $bpftool prog attach pinned \
/sys/fs/bpf/flow/flow_dissector flow_dissector; then
/sys/fs/bpf/flow/_dissect flow_dissector; then
echo "Unexpected unsuccessful attach in namespace" >&2
err=1
fi

$bpftool prog attach pinned /sys/fs/bpf/flow/flow_dissector \
$bpftool prog attach pinned /sys/fs/bpf/flow/_dissect \
flow_dissector

if unshare --net $bpftool prog attach pinned \
/sys/fs/bpf/flow/flow_dissector flow_dissector; then
/sys/fs/bpf/flow/_dissect flow_dissector; then
echo "Unexpected successful attach in namespace" >&2
err=1
fi

if ! $bpftool prog detach pinned \
/sys/fs/bpf/flow/flow_dissector flow_dissector; then
/sys/fs/bpf/flow/_dissect flow_dissector; then
echo "Failed to detach flow dissector" >&2
err=1
fi
Expand Down Expand Up @@ -95,7 +95,7 @@ else
fi

# Attach BPF program
./flow_dissector_load -p bpf_flow.o -s flow_dissector
./flow_dissector_load -p bpf_flow.o -s _dissect

# Setup
tc qdisc add dev lo ingress
Expand Down

0 comments on commit d132120

Please sign in to comment.