patchew/[email protected]
tagged this
22 Oct 08:03
This patch adds a test program for the newly added mptcp_address bpf_iter in SEC "cgroup/getsockopt". This test iterates over all address entries on the local address list of userspace PM and check whether each one is an IPv4mapped address. Export mptcp_address helpers bpf_iter_mptcp_address_new/_next/_destroy into bpf_experimental.h. Use bpf_mptcp_sock_acquire() to acquire the msk, then lock the msk pm lock and use bpf_for_each(mptcp_address) to walk the local address list of this msk. Invoke bpf_ipv6_addr_v4mapped() in the loop to check whether the address is an IPv4mapped one. Then Add the address ID of each entry to local veriable local_ids. Out of the loop, unlock the msk pm lock and use bpf_mptcp_sock_release() to release the msk. Finally, assign local_ids to global variable ids so that the application can obtain this value. Add a subtest named test_iters_address to load and verify the newly added mptcp_address type bpf_iter example in test_mptcp. Since mptcp_address bpf_iter iterates over all address entries on the local address list of userspace PM. A set of userspace PM helpers are added. Set pm_type and start "pm_nl_ctl events" command to save pm events into the log file /tmp/bpf_userspace_pm_events in userspace_pm_init(). Kill "pm_nl_ctl" command and remove the log file in userspace_pm_cleanup(). Parse the log file in userspace_pm_add_subflow() to get the token, sport and dport values, then use "pm_nl_ctl csf" command to create a subflow. Use the helper userspace_pm_add_subflow() to add 3 new subflow endpoints. Send a byte of message to start the mptcp connection, and receive the message. getsockopt() is invoked to trigger the "cgroup/getsockopt" test program. Check if skel->bss->ids equals 60 to verify whether the program loops three times as expected. Signed-off-by: Geliang Tang <[email protected]> Message-Id: <7646544aba9fe416676a1ab913232d08ba26a585.1729582332.git.tanggeliang@kylinos.cn>