/* The bpf prog only counts for fullsock and * passive connection did not become fullsock until 3WHS * had been finished, so the bpf prog only counted two data * packet out.
*/
CHECK(err || pkt_out_cnt.cnt < 0xeB9F + 2 ||
pkt_out_cnt10.cnt < 0xeB9F + 20, "bpf_map_lookup_elem(sk_pkt_out_cnt, &accept_fd)", "err:%d errno:%d pkt_out_cnt:%u pkt_out_cnt10:%u\n",
err, errno, pkt_out_cnt.cnt, pkt_out_cnt10.cnt);
pkt_out_cnt.cnt = ~0;
pkt_out_cnt10.cnt = ~0;
err = bpf_map_lookup_elem(sk_pkt_out_cnt_fd, &cli_fd, &pkt_out_cnt); if (!err)
err = bpf_map_lookup_elem(sk_pkt_out_cnt10_fd, &cli_fd,
&pkt_out_cnt10); /* Active connection is fullsock from the beginning. * 1 SYN and 1 ACK during 3WHS * 2 Acks on data packet. * * The bpf_prog initialized it to 0xeB9F.
*/
CHECK(err || pkt_out_cnt.cnt < 0xeB9F + 4 ||
pkt_out_cnt10.cnt < 0xeB9F + 40, "bpf_map_lookup_elem(sk_pkt_out_cnt, &cli_fd)", "err:%d errno:%d pkt_out_cnt:%u pkt_out_cnt10:%u\n",
err, errno, pkt_out_cnt.cnt, pkt_out_cnt10.cnt);
}
if (init_sk_storage(accept_fd, 0xeB9F)) goto done;
for (i = 0; i < 2; i++) { /* Send some data from accept_fd to cli_fd. * MSG_EOR to stop kernel from coalescing two pkts.
*/
err = send(accept_fd, DATA, DATA_LEN, MSG_EOR); if (CHECK(err != DATA_LEN, "send(accept_fd)", "err:%d errno:%d\n", err, errno)) goto done;
/* Use a dedicated netns to have a fixed listen port */ if (!create_netns()) return;
/* Create a cgroup, get fd, and join it */
parent_cg_fd = test__join_cgroup(PARENT_CGROUP); if (CHECK_FAIL(parent_cg_fd < 0)) return;
parent_cg_id = get_cgroup_id(PARENT_CGROUP); if (CHECK_FAIL(!parent_cg_id)) goto done;
child_cg_fd = test__join_cgroup(CHILD_CGROUP); if (CHECK_FAIL(child_cg_fd < 0)) goto done;
child_cg_id = get_cgroup_id(CHILD_CGROUP); if (CHECK_FAIL(!child_cg_id)) goto done;
skel = test_sock_fields__open_and_load(); if (CHECK(!skel, "test_sock_fields__open_and_load", "failed\n")) goto done;
link = bpf_program__attach_cgroup(skel->progs.egress_read_sock_fields, child_cg_fd); if (!ASSERT_OK_PTR(link, "attach_cgroup(egress_read_sock_fields)")) goto done;
skel->links.egress_read_sock_fields = link;
link = bpf_program__attach_cgroup(skel->progs.ingress_read_sock_fields, child_cg_fd); if (!ASSERT_OK_PTR(link, "attach_cgroup(ingress_read_sock_fields)")) goto done;
skel->links.ingress_read_sock_fields = link;
link = bpf_program__attach_cgroup(skel->progs.read_sk_dst_port, child_cg_fd); if (!ASSERT_OK_PTR(link, "attach_cgroup(read_sk_dst_port")) goto done;
skel->links.read_sk_dst_port = link;
done:
test_sock_fields__destroy(skel); if (child_cg_fd >= 0)
close(child_cg_fd); if (parent_cg_fd >= 0)
close(parent_cg_fd);
}
Messung V0.5 in Prozent
¤ 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.0.12Bemerkung:
(vorverarbeitet am 2026-06-08)
¤
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.