hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/tools/testing/selftests/bpf/test_socket_cookie.c
....@@ -18,6 +18,11 @@
1818 #define CG_PATH "/foo"
1919 #define SOCKET_COOKIE_PROG "./socket_cookie_prog.o"
2020
21
+struct socket_cookie {
22
+ __u64 cookie_key;
23
+ __u32 cookie_value;
24
+};
25
+
2126 static int start_server(void)
2227 {
2328 struct sockaddr_in6 addr;
....@@ -89,8 +94,7 @@
8994 __u32 cookie_expected_value;
9095 struct sockaddr_in6 addr;
9196 socklen_t len = sizeof(addr);
92
- __u32 cookie_value;
93
- __u64 cookie_key;
97
+ struct socket_cookie val;
9498 int err = 0;
9599 int map_fd;
96100
....@@ -101,17 +105,7 @@
101105
102106 map_fd = bpf_map__fd(map);
103107
104
- err = bpf_map_get_next_key(map_fd, NULL, &cookie_key);
105
- if (err) {
106
- log_err("Can't get cookie key from map");
107
- goto out;
108
- }
109
-
110
- err = bpf_map_lookup_elem(map_fd, &cookie_key, &cookie_value);
111
- if (err) {
112
- log_err("Can't get cookie value from map");
113
- goto out;
114
- }
108
+ err = bpf_map_lookup_elem(map_fd, &client_fd, &val);
115109
116110 err = getsockname(client_fd, (struct sockaddr *)&addr, &len);
117111 if (err) {
....@@ -120,8 +114,8 @@
120114 }
121115
122116 cookie_expected_value = (ntohs(addr.sin6_port) << 8) | 0xFF;
123
- if (cookie_value != cookie_expected_value) {
124
- log_err("Unexpected value in map: %x != %x", cookie_value,
117
+ if (val.cookie_value != cookie_expected_value) {
118
+ log_err("Unexpected value in map: %x != %x", val.cookie_value,
125119 cookie_expected_value);
126120 goto err;
127121 }
....@@ -148,6 +142,7 @@
148142 memset(&attr, 0, sizeof(attr));
149143 attr.file = SOCKET_COOKIE_PROG;
150144 attr.prog_type = BPF_PROG_TYPE_UNSPEC;
145
+ attr.prog_flags = BPF_F_TEST_RND_HI32;
151146
152147 err = bpf_prog_load_xattr(&attr, &pobj, &prog_fd);
153148 if (err) {
....@@ -156,16 +151,10 @@
156151 }
157152
158153 bpf_object__for_each_program(prog, pobj) {
159
- prog_name = bpf_program__title(prog, /*needs_copy*/ false);
154
+ prog_name = bpf_program__section_name(prog);
160155
161
- if (strcmp(prog_name, "cgroup/connect6") == 0) {
162
- attach_type = BPF_CGROUP_INET6_CONNECT;
163
- } else if (strcmp(prog_name, "sockops") == 0) {
164
- attach_type = BPF_CGROUP_SOCK_OPS;
165
- } else {
166
- log_err("Unexpected prog: %s", prog_name);
156
+ if (libbpf_attach_type_by_name(prog_name, &attach_type))
167157 goto err;
168
- }
169158
170159 err = bpf_prog_attach(bpf_program__fd(prog), cgfd, attach_type,
171160 BPF_F_ALLOW_OVERRIDE);
....@@ -202,14 +191,8 @@
202191 int cgfd = -1;
203192 int err = 0;
204193
205
- if (setup_cgroup_environment())
206
- goto err;
207
-
208
- cgfd = create_and_get_cgroup(CG_PATH);
209
- if (!cgfd)
210
- goto err;
211
-
212
- if (join_cgroup(CG_PATH))
194
+ cgfd = cgroup_setup_and_join(CG_PATH);
195
+ if (cgfd < 0)
213196 goto err;
214197
215198 if (run_test(cgfd))