mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-26 20:44:32 +08:00
selftests/bpf: Fix flow dissector tests
- 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
This commit is contained in:
parent
a77f879ba1
commit
d1321207b1
@ -17,7 +17,7 @@
|
||||
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)
|
||||
@ -25,7 +25,11 @@ 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);
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
@ -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;
|
||||
|
||||
|
@ -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
|
||||
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user