clien = connect_to_fd(serv, 0); if (!ASSERT_GE(clien, 0, "connect_to_fd")) goto cleanup;
n = send(clien, "t", 1, 0); if (!ASSERT_EQ(n, 1, "client send")) goto cleanup;
/* Run iterator program that destroys sockets. */
start_iter_sockets(skel->progs.iter_udp6_client);
n = send(clien, "t", 1, 0); if (!ASSERT_LT(n, 0, "client_send on destroyed socket")) goto cleanup; /* UDP sockets have an overriding error code after they are disconnected, * so we don't check for ECONNABORTED error code.
*/
cleanup: if (clien != -1)
close(clien); if (serv != -1)
close(serv);
}
staticvoid test_udp_server(struct sock_destroy_prog *skel)
{ int *listen_fds = NULL, n, i, serv_port; unsignedint num_listens = 5; char buf[1];
skel = sock_destroy_prog__open_and_load(); if (!ASSERT_OK_PTR(skel, "skel_open")) return;
cgroup_fd = test__join_cgroup("/sock_destroy"); if (!ASSERT_GE(cgroup_fd, 0, "join_cgroup")) goto cleanup;
skel->links.sock_connect = bpf_program__attach_cgroup(
skel->progs.sock_connect, cgroup_fd); if (!ASSERT_OK_PTR(skel->links.sock_connect, "prog_attach")) goto cleanup;
SYS(cleanup, "ip netns add %s", TEST_NS);
SYS(cleanup, "ip -net %s link set dev lo up", TEST_NS);
nstoken = open_netns(TEST_NS); if (!ASSERT_OK_PTR(nstoken, "open_netns")) goto cleanup;
if (test__start_subtest("tcp_client"))
test_tcp_client(skel); if (test__start_subtest("tcp_server"))
test_tcp_server(skel); if (test__start_subtest("udp_client"))
test_udp_client(skel); if (test__start_subtest("udp_server"))
test_udp_server(skel);
RUN_TESTS(sock_destroy_prog_fail);
cleanup: if (nstoken)
close_netns(nstoken);
SYS_NOFAIL("ip netns del " TEST_NS); if (cgroup_fd >= 0)
close(cgroup_fd);
sock_destroy_prog__destroy(skel);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.