7
7
8
8
static void test_fail_cases (void )
9
9
{
10
- struct bpf_create_map_attr xattr = {
11
- .name = "bloom_filter_map" ,
12
- .map_type = BPF_MAP_TYPE_BLOOM_FILTER ,
13
- .max_entries = 100 ,
14
- .value_size = 11 ,
15
- };
16
10
__u32 value ;
17
11
int fd , err ;
18
12
19
13
/* Invalid key size */
20
- xattr .key_size = 4 ;
21
- fd = bpf_create_map_xattr (& xattr );
14
+ fd = bpf_create_map (BPF_MAP_TYPE_BLOOM_FILTER , 4 , sizeof (value ), 100 , 0 );
22
15
if (!ASSERT_LT (fd , 0 , "bpf_create_map bloom filter invalid key size" ))
23
16
close (fd );
24
- xattr .key_size = 0 ;
25
17
26
18
/* Invalid value size */
27
- xattr .value_size = 0 ;
28
- fd = bpf_create_map_xattr (& xattr );
19
+ fd = bpf_create_map (BPF_MAP_TYPE_BLOOM_FILTER , 0 , 0 , 100 , 0 );
29
20
if (!ASSERT_LT (fd , 0 , "bpf_create_map bloom filter invalid value size 0" ))
30
21
close (fd );
31
- xattr .value_size = 11 ;
32
22
33
23
/* Invalid max entries size */
34
- xattr .max_entries = 0 ;
35
- fd = bpf_create_map_xattr (& xattr );
24
+ fd = bpf_create_map (BPF_MAP_TYPE_BLOOM_FILTER , 0 , sizeof (value ), 0 , 0 );
36
25
if (!ASSERT_LT (fd , 0 , "bpf_create_map bloom filter invalid max entries size" ))
37
26
close (fd );
38
- xattr .max_entries = 100 ;
39
27
40
28
/* Bloom filter maps do not support BPF_F_NO_PREALLOC */
41
- xattr . map_flags = BPF_F_NO_PREALLOC ;
42
- fd = bpf_create_map_xattr ( & xattr );
29
+ fd = bpf_create_map ( BPF_MAP_TYPE_BLOOM_FILTER , 0 , sizeof ( value ), 100 ,
30
+ BPF_F_NO_PREALLOC );
43
31
if (!ASSERT_LT (fd , 0 , "bpf_create_map bloom filter invalid flags" ))
44
32
close (fd );
45
- xattr .map_flags = 0 ;
46
33
47
- fd = bpf_create_map_xattr ( & xattr );
34
+ fd = bpf_create_map ( BPF_MAP_TYPE_BLOOM_FILTER , 0 , sizeof ( value ), 100 , 0 );
48
35
if (!ASSERT_GE (fd , 0 , "bpf_create_map bloom filter" ))
49
36
return ;
50
37
@@ -67,6 +54,30 @@ static void test_fail_cases(void)
67
54
close (fd );
68
55
}
69
56
57
+ static void test_success_cases (void )
58
+ {
59
+ char value [11 ];
60
+ int fd , err ;
61
+
62
+ /* Create a map */
63
+ fd = bpf_create_map (BPF_MAP_TYPE_BLOOM_FILTER , 0 , sizeof (value ), 100 ,
64
+ BPF_F_ZERO_SEED | BPF_F_NUMA_NODE );
65
+ if (!ASSERT_GE (fd , 0 , "bpf_create_map bloom filter success case" ))
66
+ return ;
67
+
68
+ /* Add a value to the bloom filter */
69
+ err = bpf_map_update_elem (fd , NULL , & value , 0 );
70
+ if (!ASSERT_OK (err , "bpf_map_update_elem bloom filter success case" ))
71
+ goto done ;
72
+
73
+ /* Lookup a value in the bloom filter */
74
+ err = bpf_map_lookup_elem (fd , NULL , & value );
75
+ ASSERT_OK (err , "bpf_map_update_elem bloom filter success case" );
76
+
77
+ done :
78
+ close (fd );
79
+ }
80
+
70
81
static void check_bloom (struct bloom_filter_map * skel )
71
82
{
72
83
struct bpf_link * link ;
@@ -86,16 +97,11 @@ static void test_inner_map(struct bloom_filter_map *skel, const __u32 *rand_vals
86
97
__u32 nr_rand_vals )
87
98
{
88
99
int outer_map_fd , inner_map_fd , err , i , key = 0 ;
89
- struct bpf_create_map_attr xattr = {
90
- .name = "bloom_filter_inner_map" ,
91
- .map_type = BPF_MAP_TYPE_BLOOM_FILTER ,
92
- .value_size = sizeof (__u32 ),
93
- .max_entries = nr_rand_vals ,
94
- };
95
100
struct bpf_link * link ;
96
101
97
102
/* Create a bloom filter map that will be used as the inner map */
98
- inner_map_fd = bpf_create_map_xattr (& xattr );
103
+ inner_map_fd = bpf_create_map (BPF_MAP_TYPE_BLOOM_FILTER , 0 , sizeof (* rand_vals ),
104
+ nr_rand_vals , 0 );
99
105
if (!ASSERT_GE (inner_map_fd , 0 , "bpf_create_map bloom filter inner map" ))
100
106
return ;
101
107
@@ -190,6 +196,7 @@ void test_bloom_filter_map(void)
190
196
int err ;
191
197
192
198
test_fail_cases ();
199
+ test_success_cases ();
193
200
194
201
err = setup_progs (& skel , & rand_vals , & nr_rand_vals );
195
202
if (err )
0 commit comments