Thread (25 messages) 25 messages, 3 authors, 2020-06-02

Re: [PATCH bpf-next v2 11/12] selftests/bpf: Convert test_flow_dissector to use BPF skeleton

From: Andrii Nakryiko <hidden>
Date: 2020-06-01 22:42:17
Also in: bpf

On Sun, May 31, 2020 at 1:29 AM Jakub Sitnicki [off-list ref] wrote:
Switch flow dissector test setup from custom BPF object loader to BPF
skeleton to save boilerplate and prepare for testing higher-level API for
attaching flow dissector with bpf_link.

To avoid depending on program order in the BPF object when populating the
flow dissector PROG_ARRAY map, change the program section names to contain
the program index into the map. This follows the example set by tailcall
tests.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 .../selftests/bpf/prog_tests/flow_dissector.c | 50 +++++++++++++++++--
 tools/testing/selftests/bpf/progs/bpf_flow.c  | 20 ++++----
 2 files changed, 55 insertions(+), 15 deletions(-)
[...]
quoted hunk ↗ jump to hunk
diff --git a/tools/testing/selftests/bpf/progs/bpf_flow.c b/tools/testing/selftests/bpf/progs/bpf_flow.c
index 9941f0ba471e..de6de9221518 100644
--- a/tools/testing/selftests/bpf/progs/bpf_flow.c
+++ b/tools/testing/selftests/bpf/progs/bpf_flow.c
@@ -20,20 +20,20 @@
 #include <bpf/bpf_endian.h>

 int _version SEC("version") = 1;
-#define PROG(F) SEC(#F) int bpf_func_##F
+#define PROG(F) PROG_(F, _##F)
+#define PROG_(NUM, NAME) SEC("flow_dissector/"#NUM) int bpf_func##NAME

 /* These are the identifiers of the BPF programs that will be used in tail
  * calls. Name is limited to 16 characters, with the terminating character and
  * bpf_func_ above, we have only 6 to work with, anything after will be cropped.
  */
-enum {
-       IP,
-       IPV6,
-       IPV6OP, /* Destination/Hop-by-Hop Options IPv6 Extension header */
-       IPV6FR, /* Fragmentation IPv6 Extension Header */
-       MPLS,
-       VLAN,
-};
not clear why? just add MAX_PROG after VLAN?
quoted hunk ↗ jump to hunk
+#define IP             0
+#define IPV6           1
+#define IPV6OP         2 /* Destination/Hop-by-Hop Options IPv6 Ext. Header */
+#define IPV6FR         3 /* Fragmentation IPv6 Extension Header */
+#define MPLS           4
+#define VLAN           5
+#define MAX_PROG       6

 #define IP_MF          0x2000
 #define IP_OFFSET      0x1FFF
@@ -59,7 +59,7 @@ struct frag_hdr {

 struct {
        __uint(type, BPF_MAP_TYPE_PROG_ARRAY);
-       __uint(max_entries, 8);
+       __uint(max_entries, MAX_PROG);
        __uint(key_size, sizeof(__u32));
        __uint(value_size, sizeof(__u32));
 } jmp_table SEC(".maps");
--
2.25.4
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help