mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
selftests/bpf: convert socket_cookie test to sk storage
This lets us test that both BPF_PROG_TYPE_CGROUP_SOCK_ADDR and BPF_PROG_TYPE_SOCK_OPS can access underlying bpf_sock. Cc: Martin Lau <kafai@fb.com> Signed-off-by: Stanislav Fomichev <sdf@google.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
committed by
Daniel Borkmann
parent
cd17d77705
commit
69d96519db
@@ -18,6 +18,11 @@
|
||||
#define CG_PATH "/foo"
|
||||
#define SOCKET_COOKIE_PROG "./socket_cookie_prog.o"
|
||||
|
||||
struct socket_cookie {
|
||||
__u64 cookie_key;
|
||||
__u32 cookie_value;
|
||||
};
|
||||
|
||||
static int start_server(void)
|
||||
{
|
||||
struct sockaddr_in6 addr;
|
||||
@@ -89,8 +94,7 @@ static int validate_map(struct bpf_map *map, int client_fd)
|
||||
__u32 cookie_expected_value;
|
||||
struct sockaddr_in6 addr;
|
||||
socklen_t len = sizeof(addr);
|
||||
__u32 cookie_value;
|
||||
__u64 cookie_key;
|
||||
struct socket_cookie val;
|
||||
int err = 0;
|
||||
int map_fd;
|
||||
|
||||
@@ -101,17 +105,7 @@ static int validate_map(struct bpf_map *map, int client_fd)
|
||||
|
||||
map_fd = bpf_map__fd(map);
|
||||
|
||||
err = bpf_map_get_next_key(map_fd, NULL, &cookie_key);
|
||||
if (err) {
|
||||
log_err("Can't get cookie key from map");
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = bpf_map_lookup_elem(map_fd, &cookie_key, &cookie_value);
|
||||
if (err) {
|
||||
log_err("Can't get cookie value from map");
|
||||
goto out;
|
||||
}
|
||||
err = bpf_map_lookup_elem(map_fd, &client_fd, &val);
|
||||
|
||||
err = getsockname(client_fd, (struct sockaddr *)&addr, &len);
|
||||
if (err) {
|
||||
@@ -120,8 +114,8 @@ static int validate_map(struct bpf_map *map, int client_fd)
|
||||
}
|
||||
|
||||
cookie_expected_value = (ntohs(addr.sin6_port) << 8) | 0xFF;
|
||||
if (cookie_value != cookie_expected_value) {
|
||||
log_err("Unexpected value in map: %x != %x", cookie_value,
|
||||
if (val.cookie_value != cookie_expected_value) {
|
||||
log_err("Unexpected value in map: %x != %x", val.cookie_value,
|
||||
cookie_expected_value);
|
||||
goto err;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user