selftests/bpf: Expand ATTACH_REJECT tests
authorJordan Rife <jrife@google.com>
Fri, 10 May 2024 19:02:34 +0000 (14:02 -0500)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 13 May 2024 00:10:42 +0000 (17:10 -0700)
This expands coverage for ATTACH_REJECT tests to include connect_unix,
sendmsg_unix, recvmsg*, getsockname*, and getpeername*.

Signed-off-by: Jordan Rife <jrife@google.com>
Link: https://lore.kernel.org/r/20240510190246.3247730-18-jrife@google.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/prog_tests/sock_addr.c

index a0a40bdcfe45c8ad221feab4bab219bb59fb53c4..b880c564a2047e78e0dd3453e1ec848ca419f89a 100644 (file)
@@ -454,6 +454,7 @@ BPF_SKEL_FUNCS(connect6_prog, connect_v6_prog);
 BPF_SKEL_FUNCS_RAW(connect6_prog, connect_v6_prog);
 BPF_SKEL_FUNCS(connect6_prog, connect_v6_deny_prog);
 BPF_SKEL_FUNCS(connect_unix_prog, connect_unix_prog);
+BPF_SKEL_FUNCS_RAW(connect_unix_prog, connect_unix_prog);
 BPF_SKEL_FUNCS(connect_unix_prog, connect_unix_deny_prog);
 BPF_SKEL_FUNCS(sendmsg4_prog, sendmsg_v4_prog);
 BPF_SKEL_FUNCS_RAW(sendmsg4_prog, sendmsg_v4_prog);
@@ -465,16 +466,26 @@ BPF_SKEL_FUNCS(sendmsg6_prog, sendmsg_v6_preserve_dst_prog);
 BPF_SKEL_FUNCS(sendmsg6_prog, sendmsg_v6_v4mapped_prog);
 BPF_SKEL_FUNCS(sendmsg6_prog, sendmsg_v6_wildcard_prog);
 BPF_SKEL_FUNCS(sendmsg_unix_prog, sendmsg_unix_prog);
+BPF_SKEL_FUNCS_RAW(sendmsg_unix_prog, sendmsg_unix_prog);
 BPF_SKEL_FUNCS(sendmsg_unix_prog, sendmsg_unix_deny_prog);
 BPF_SKEL_FUNCS(recvmsg4_prog, recvmsg4_prog);
+BPF_SKEL_FUNCS_RAW(recvmsg4_prog, recvmsg4_prog);
 BPF_SKEL_FUNCS(recvmsg6_prog, recvmsg6_prog);
+BPF_SKEL_FUNCS_RAW(recvmsg6_prog, recvmsg6_prog);
 BPF_SKEL_FUNCS(recvmsg_unix_prog, recvmsg_unix_prog);
+BPF_SKEL_FUNCS_RAW(recvmsg_unix_prog, recvmsg_unix_prog);
 BPF_SKEL_FUNCS(getsockname_unix_prog, getsockname_unix_prog);
+BPF_SKEL_FUNCS_RAW(getsockname_unix_prog, getsockname_unix_prog);
 BPF_SKEL_FUNCS(getsockname4_prog, getsockname_v4_prog);
+BPF_SKEL_FUNCS_RAW(getsockname4_prog, getsockname_v4_prog);
 BPF_SKEL_FUNCS(getsockname6_prog, getsockname_v6_prog);
+BPF_SKEL_FUNCS_RAW(getsockname6_prog, getsockname_v6_prog);
 BPF_SKEL_FUNCS(getpeername_unix_prog, getpeername_unix_prog);
+BPF_SKEL_FUNCS_RAW(getpeername_unix_prog, getpeername_unix_prog);
 BPF_SKEL_FUNCS(getpeername4_prog, getpeername_v4_prog);
+BPF_SKEL_FUNCS_RAW(getpeername4_prog, getpeername_v4_prog);
 BPF_SKEL_FUNCS(getpeername6_prog, getpeername_v6_prog);
+BPF_SKEL_FUNCS_RAW(getpeername6_prog, getpeername_v6_prog);
 
 static struct sock_addr_test tests[] = {
        /* bind - system calls */
@@ -1026,6 +1037,22 @@ static struct sock_addr_test tests[] = {
                NULL,
                SYSCALL_EPERM,
        },
+       {
+               SOCK_ADDR_TEST_CONNECT,
+               "connect_unix: attach prog with wrong attach type",
+               connect_unix_prog_load_raw,
+               connect_unix_prog_destroy_raw,
+               BPF_CGROUP_INET4_CONNECT,
+               &user_ops,
+               AF_UNIX,
+               SOCK_STREAM,
+               SERVUN_ADDRESS,
+               0,
+               SERVUN_REWRITE_ADDRESS,
+               0,
+               NULL,
+               ATTACH_REJECT,
+       },
 
        /* connect - kernel calls */
        {
@@ -1398,6 +1425,22 @@ static struct sock_addr_test tests[] = {
                NULL,
                SYSCALL_EPERM,
        },
+       {
+               SOCK_ADDR_TEST_SENDMSG,
+               "sendmsg_unix: attach prog with wrong attach type",
+               sendmsg_unix_prog_load_raw,
+               sendmsg_unix_prog_destroy_raw,
+               BPF_CGROUP_UDP4_SENDMSG,
+               &user_ops,
+               AF_UNIX,
+               SOCK_DGRAM,
+               SERVUN_ADDRESS,
+               0,
+               SERVUN_REWRITE_ADDRESS,
+               0,
+               NULL,
+               ATTACH_REJECT,
+       },
 
        /* sendmsg - kernel calls (sock_sendmsg) */
        {
@@ -1644,6 +1687,22 @@ static struct sock_addr_test tests[] = {
                SERV4_IP,
                SUCCESS,
        },
+       {
+               SOCK_ADDR_TEST_RECVMSG,
+               "recvmsg4: attach prog with wrong attach type",
+               recvmsg4_prog_load_raw,
+               recvmsg4_prog_destroy_raw,
+               BPF_CGROUP_UDP6_RECVMSG,
+               &user_ops,
+               AF_INET,
+               SOCK_DGRAM,
+               SERV4_REWRITE_IP,
+               SERV4_REWRITE_PORT,
+               SERV4_REWRITE_IP,
+               SERV4_REWRITE_PORT,
+               SERV4_IP,
+               ATTACH_REJECT,
+       },
        {
                SOCK_ADDR_TEST_RECVMSG,
                "recvmsg6: recvfrom (dgram)",
@@ -1660,6 +1719,22 @@ static struct sock_addr_test tests[] = {
                SERV6_IP,
                SUCCESS,
        },
+       {
+               SOCK_ADDR_TEST_RECVMSG,
+               "recvmsg6: attach prog with wrong attach type",
+               recvmsg6_prog_load_raw,
+               recvmsg6_prog_destroy_raw,
+               BPF_CGROUP_UDP4_RECVMSG,
+               &user_ops,
+               AF_INET6,
+               SOCK_DGRAM,
+               SERV6_REWRITE_IP,
+               SERV6_REWRITE_PORT,
+               SERV6_REWRITE_IP,
+               SERV6_REWRITE_PORT,
+               SERV6_IP,
+               ATTACH_REJECT,
+       },
        {
                SOCK_ADDR_TEST_RECVMSG,
                "recvmsg_unix: recvfrom (dgram)",
@@ -1692,6 +1767,22 @@ static struct sock_addr_test tests[] = {
                SERVUN_ADDRESS,
                SUCCESS,
        },
+       {
+               SOCK_ADDR_TEST_RECVMSG,
+               "recvmsg_unix: attach prog with wrong attach type",
+               recvmsg_unix_prog_load_raw,
+               recvmsg_unix_prog_destroy_raw,
+               BPF_CGROUP_UDP4_RECVMSG,
+               &user_ops,
+               AF_INET6,
+               SOCK_STREAM,
+               SERVUN_REWRITE_ADDRESS,
+               0,
+               SERVUN_REWRITE_ADDRESS,
+               0,
+               SERVUN_ADDRESS,
+               ATTACH_REJECT,
+       },
 
        /* getsockname - system calls */
        {
@@ -1726,6 +1817,22 @@ static struct sock_addr_test tests[] = {
                NULL,
                SUCCESS,
        },
+       {
+               SOCK_ADDR_TEST_GETSOCKNAME,
+               "getsockname4: attach prog with wrong attach type",
+               getsockname_v4_prog_load_raw,
+               getsockname_v4_prog_destroy_raw,
+               BPF_CGROUP_INET6_GETSOCKNAME,
+               &user_ops,
+               AF_INET,
+               SOCK_DGRAM,
+               SERV4_REWRITE_IP,
+               SERV4_REWRITE_PORT,
+               SERV4_IP,
+               SERV4_PORT,
+               NULL,
+               ATTACH_REJECT,
+       },
        {
                SOCK_ADDR_TEST_GETSOCKNAME,
                "getsockname6: getsockname (stream)",
@@ -1758,6 +1865,22 @@ static struct sock_addr_test tests[] = {
                NULL,
                SUCCESS,
        },
+       {
+               SOCK_ADDR_TEST_GETSOCKNAME,
+               "getsockname6: attach prog with wrong attach type",
+               getsockname_v6_prog_load_raw,
+               getsockname_v6_prog_destroy_raw,
+               BPF_CGROUP_INET4_GETSOCKNAME,
+               &user_ops,
+               AF_INET6,
+               SOCK_DGRAM,
+               SERV6_REWRITE_IP,
+               SERV6_REWRITE_PORT,
+               SERV6_IP,
+               SERV6_PORT,
+               NULL,
+               ATTACH_REJECT,
+       },
        {
                SOCK_ADDR_TEST_GETSOCKNAME,
                "getsockname_unix: getsockname",
@@ -1774,6 +1897,22 @@ static struct sock_addr_test tests[] = {
                NULL,
                SUCCESS,
        },
+       {
+               SOCK_ADDR_TEST_GETSOCKNAME,
+               "getsockname_unix: attach prog with wrong attach type",
+               getsockname_unix_prog_load_raw,
+               getsockname_unix_prog_destroy_raw,
+               BPF_CGROUP_INET4_GETSOCKNAME,
+               &user_ops,
+               AF_UNIX,
+               SOCK_STREAM,
+               SERVUN_ADDRESS,
+               0,
+               SERVUN_REWRITE_ADDRESS,
+               0,
+               NULL,
+               ATTACH_REJECT,
+       },
 
        /* getsockname - kernel calls */
        {
@@ -1890,6 +2029,22 @@ static struct sock_addr_test tests[] = {
                NULL,
                SUCCESS,
        },
+       {
+               SOCK_ADDR_TEST_GETPEERNAME,
+               "getpeername4: attach prog with wrong attach type",
+               getpeername_v4_prog_load_raw,
+               getpeername_v4_prog_destroy_raw,
+               BPF_CGROUP_INET6_GETSOCKNAME,
+               &user_ops,
+               AF_UNIX,
+               SOCK_DGRAM,
+               SERV4_REWRITE_IP,
+               SERV4_REWRITE_PORT,
+               SERV4_IP,
+               SERV4_PORT,
+               NULL,
+               ATTACH_REJECT,
+       },
        {
                SOCK_ADDR_TEST_GETPEERNAME,
                "getpeername6: getpeername (stream)",
@@ -1922,6 +2077,22 @@ static struct sock_addr_test tests[] = {
                NULL,
                SUCCESS,
        },
+       {
+               SOCK_ADDR_TEST_GETPEERNAME,
+               "getpeername6: attach prog with wrong attach type",
+               getpeername_v6_prog_load_raw,
+               getpeername_v6_prog_destroy_raw,
+               BPF_CGROUP_INET4_GETSOCKNAME,
+               &user_ops,
+               AF_INET6,
+               SOCK_DGRAM,
+               SERV6_REWRITE_IP,
+               SERV6_REWRITE_PORT,
+               SERV6_IP,
+               SERV6_PORT,
+               NULL,
+               ATTACH_REJECT,
+       },
        {
                SOCK_ADDR_TEST_GETPEERNAME,
                "getpeername_unix: getpeername",
@@ -1938,6 +2109,22 @@ static struct sock_addr_test tests[] = {
                NULL,
                SUCCESS,
        },
+       {
+               SOCK_ADDR_TEST_GETPEERNAME,
+               "getpeername_unix: attach prog with wrong attach type",
+               getpeername_unix_prog_load_raw,
+               getpeername_unix_prog_destroy_raw,
+               BPF_CGROUP_INET4_GETSOCKNAME,
+               &user_ops,
+               AF_UNIX,
+               SOCK_STREAM,
+               SERVUN_ADDRESS,
+               0,
+               SERVUN_REWRITE_ADDRESS,
+               0,
+               NULL,
+               ATTACH_REJECT,
+       },
 
        /* getpeername - kernel calls */
        {