mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-08 00:29:36 -04:00
selftests/bpf: use ASSERT_MEMEQ to compare bpf flow keys
The flow_dissector program currently compares flow keys returned by bpf program with the expected one thanks to a custom macro using memcmp. Use the new ASSERT_MEMEQ macro to perform this comparision. This update also allows to get rid of the unused bpf_test_run_opts variable in run_tests_skb_less (it was only used by the CHECK macro for its duration field) Acked-by: Stanislav Fomichev <sdf@fomichev.me> Signed-off-by: Alexis Lothoré (eBPF Foundation) <alexis.lothore@bootlin.com> Link: https://lore.kernel.org/r/20241120-flow_dissector-v3-2-45b46494f937@bootlin.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
2fe34a116c
commit
3fed5d084f
@@ -13,33 +13,6 @@
|
||||
#define IP_MF 0x2000
|
||||
#endif
|
||||
|
||||
#define CHECK_FLOW_KEYS(desc, got, expected) \
|
||||
_CHECK(memcmp(&got, &expected, sizeof(got)) != 0, \
|
||||
desc, \
|
||||
topts.duration, \
|
||||
"nhoff=%u/%u " \
|
||||
"thoff=%u/%u " \
|
||||
"addr_proto=0x%x/0x%x " \
|
||||
"is_frag=%u/%u " \
|
||||
"is_first_frag=%u/%u " \
|
||||
"is_encap=%u/%u " \
|
||||
"ip_proto=0x%x/0x%x " \
|
||||
"n_proto=0x%x/0x%x " \
|
||||
"flow_label=0x%x/0x%x " \
|
||||
"sport=%u/%u " \
|
||||
"dport=%u/%u\n", \
|
||||
got.nhoff, expected.nhoff, \
|
||||
got.thoff, expected.thoff, \
|
||||
got.addr_proto, expected.addr_proto, \
|
||||
got.is_frag, expected.is_frag, \
|
||||
got.is_first_frag, expected.is_first_frag, \
|
||||
got.is_encap, expected.is_encap, \
|
||||
got.ip_proto, expected.ip_proto, \
|
||||
got.n_proto, expected.n_proto, \
|
||||
got.flow_label, expected.flow_label, \
|
||||
got.sport, expected.sport, \
|
||||
got.dport, expected.dport)
|
||||
|
||||
struct ipv4_pkt {
|
||||
struct ethhdr eth;
|
||||
struct iphdr iph;
|
||||
@@ -545,7 +518,6 @@ static void run_tests_skb_less(int tap_fd, struct bpf_map *keys)
|
||||
/* Keep in sync with 'flags' from eth_get_headlen. */
|
||||
__u32 eth_get_headlen_flags =
|
||||
BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG;
|
||||
LIBBPF_OPTS(bpf_test_run_opts, topts);
|
||||
struct bpf_flow_keys flow_keys = {};
|
||||
__u32 key = (__u32)(tests[i].keys.sport) << 16 |
|
||||
tests[i].keys.dport;
|
||||
@@ -567,7 +539,9 @@ static void run_tests_skb_less(int tap_fd, struct bpf_map *keys)
|
||||
err = bpf_map_lookup_elem(keys_fd, &key, &flow_keys);
|
||||
ASSERT_OK(err, "bpf_map_lookup_elem");
|
||||
|
||||
CHECK_FLOW_KEYS(tests[i].name, flow_keys, tests[i].keys);
|
||||
ASSERT_MEMEQ(&flow_keys, &tests[i].keys,
|
||||
sizeof(struct bpf_flow_keys),
|
||||
"returned flow keys");
|
||||
|
||||
err = bpf_map_delete_elem(keys_fd, &key);
|
||||
ASSERT_OK(err, "bpf_map_delete_elem");
|
||||
@@ -656,7 +630,9 @@ void test_flow_dissector(void)
|
||||
continue;
|
||||
ASSERT_EQ(topts.data_size_out, sizeof(flow_keys),
|
||||
"test_run data_size_out");
|
||||
CHECK_FLOW_KEYS(tests[i].name, flow_keys, tests[i].keys);
|
||||
ASSERT_MEMEQ(&flow_keys, &tests[i].keys,
|
||||
sizeof(struct bpf_flow_keys),
|
||||
"returned flow keys");
|
||||
}
|
||||
|
||||
/* Do the same tests but for skb-less flow dissector.
|
||||
|
||||
Reference in New Issue
Block a user