0001
0002
0003
0004 #include <test_progs.h>
0005 #include <sys/un.h>
0006 #include "test_skc_to_unix_sock.skel.h"
0007
0008 static const char *sock_path = "@skc_to_unix_sock";
0009
0010 void test_skc_to_unix_sock(void)
0011 {
0012 struct test_skc_to_unix_sock *skel;
0013 struct sockaddr_un sockaddr;
0014 int err, sockfd = 0;
0015
0016 skel = test_skc_to_unix_sock__open();
0017 if (!ASSERT_OK_PTR(skel, "could not open BPF object"))
0018 return;
0019
0020 skel->rodata->my_pid = getpid();
0021
0022 err = test_skc_to_unix_sock__load(skel);
0023 if (!ASSERT_OK(err, "could not load BPF object"))
0024 goto cleanup;
0025
0026 err = test_skc_to_unix_sock__attach(skel);
0027 if (!ASSERT_OK(err, "could not attach BPF object"))
0028 goto cleanup;
0029
0030
0031 sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
0032 if (!ASSERT_GT(sockfd, 0, "socket failed"))
0033 goto cleanup;
0034
0035 memset(&sockaddr, 0, sizeof(sockaddr));
0036 sockaddr.sun_family = AF_UNIX;
0037 strncpy(sockaddr.sun_path, sock_path, strlen(sock_path));
0038 sockaddr.sun_path[0] = '\0';
0039
0040 err = bind(sockfd, (struct sockaddr *)&sockaddr, sizeof(sockaddr));
0041 if (!ASSERT_OK(err, "bind failed"))
0042 goto cleanup;
0043
0044 err = listen(sockfd, 1);
0045 if (!ASSERT_OK(err, "listen failed"))
0046 goto cleanup;
0047
0048 ASSERT_EQ(strcmp(skel->bss->path, sock_path), 0, "bpf_skc_to_unix_sock failed");
0049
0050 cleanup:
0051 if (sockfd)
0052 close(sockfd);
0053 test_skc_to_unix_sock__destroy(skel);
0054 }