From nobody Sat May 18 19:47:58 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3B901AAA5 for ; Sat, 20 Apr 2024 11:24:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713612256; cv=none; b=nCYz1KWJ1s2frAQM0A3ja4NWmPB9at74mKIyT3Yk8CaC6qB8N99ClZqtbGvSjjuGdhaHf0iC/ww+YVWx7kZt4zedAydJy+qujzPBHHPgOaLiMKOoMbo24f0l+TkMLUU3yibck8VRZfWsbglri3xrFO3ZM9pvgOVyOIiUVDpE4J8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713612256; c=relaxed/simple; bh=7P7QJPWTeWLAxseSS0mBucNx7SkCqdF5PIlnB7gMfYI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CWq/inwTK0VgIgwqxHFCQBnLPZuW7/8Zo5PENUMM/T/JE2ghkbMrOnM41D8qnhipKmWuBEHAzpsemjdqezxOtFb0xYGFHPZPysu1CAJ3BsOxtKJqGRjbFUcQIB4YcLTxMNHcoGeTIwupMejxCL2HA9j7E7WQt2dPXe3fnSukRfc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=umAABJvq; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="umAABJvq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6EC30C113CC; Sat, 20 Apr 2024 11:24:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713612256; bh=7P7QJPWTeWLAxseSS0mBucNx7SkCqdF5PIlnB7gMfYI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=umAABJvqjKSPgfHgcf9El2LDnHrpk+6e+tX/qxYrgFSjxQKL9C1fXCe+AE9T7kcol kcmOIs94QFViEdan6vF1Gi4T6cJUrF7tbj434w/thkv7brSY/ZOVbFVBeXY4ANHtpY w5Iwni5YdUMGZS2sTn6rP9I6JPnjMiKjNATpbh4SFZjjR0nJuzAIGYWZLH7ckhUrCk TxNVRWFRIoRCNc2Xh1UAAGtMJq4q4wPdqPy2luv3m22MuqZK3aI7JDwraviepiFxBN SwACWYVFed/fvcF3xN5cjd5NkNLzt2y6bnF6K5VJMeykDsGT0ZcDtck9ndI77tRGmd +hr9eMmdanRTA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Nicolas Rybowski , Geliang Tang Subject: [PATCH mptcp-next v8 1/4] selftests/bpf: Add mptcp subflow example Date: Sat, 20 Apr 2024 19:23:26 +0800 Message-Id: <740fd7f056ea819f92729cf85f0c0dc66399bd7d.1713612119.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Nicolas Rybowski Move Nicolas's patch into bpf selftests directory. This example added a test that was adding a different mark (SO_MARK) on each subflow, and changing the TCP CC only on the first subflow. This example shows how it is possible to: Identify the parent msk of an MPTCP subflow. Put different sockopt for each subflow of a same MPTCP connection. Here especially, we implemented two different behaviours: A socket mark (SOL_SOCKET SO_MARK) is put on each subflow of a same MPTCP connection. The order of creation of the current subflow defines its mark. The TCP CC algorithm of the very first subflow of an MPTCP connection is set to "reno". The code comes from commit 4d120186e4d6 ("bpf:examples: update mptcp_set_mark_kern.c") in MPTCP repo https://github.com/multipath-tcp/mptcp_net-next (the "scripts" branch). Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/76 Co-developed-by: Geliang Tang Signed-off-by: Geliang Tang Signed-off-by: Nicolas Rybowski --- .../selftests/bpf/progs/mptcp_subflow.c | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_subflow.c diff --git a/tools/testing/selftests/bpf/progs/mptcp_subflow.c b/tools/test= ing/selftests/bpf/progs/mptcp_subflow.c new file mode 100644 index 000000000000..de9dbba37133 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_subflow.c @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ +/* Copyright (c) 2024, Kylin Software */ + +#include // SOL_SOCKET, SO_MARK, ... +#include // TCP_CONGESTION +#include +#include +#include "bpf_tcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +#ifndef SOL_TCP +#define SOL_TCP 6 +#endif + +#ifndef TCP_CA_NAME_MAX +#define TCP_CA_NAME_MAX 16 +#endif + +char cc[TCP_CA_NAME_MAX] =3D "reno"; + +/* Associate a subflow counter to each token */ +struct { + __uint(type, BPF_MAP_TYPE_HASH); + __uint(key_size, sizeof(__u32)); + __uint(value_size, sizeof(__u32)); + __uint(max_entries, 100); +} mptcp_sf SEC(".maps"); + +SEC("sockops") +int mptcp_subflow(struct bpf_sock_ops *skops) +{ + __u32 init =3D 1, key, mark, *cnt; + struct mptcp_sock *msk; + struct bpf_sock *sk; + int err; + + if (skops->op !=3D BPF_SOCK_OPS_TCP_CONNECT_CB) + return 1; + + sk =3D skops->sk; + if (!sk) + return 1; + + msk =3D bpf_skc_to_mptcp_sock(sk); + if (!msk) + return 1; + + key =3D msk->token; + cnt =3D bpf_map_lookup_elem(&mptcp_sf, &key); + if (cnt) { + /* A new subflow is added to an existing MPTCP connection */ + __sync_fetch_and_add(cnt, 1); + mark =3D *cnt; + } else { + /* A new MPTCP connection is just initiated and this is its primary subf= low */ + bpf_map_update_elem(&mptcp_sf, &key, &init, BPF_ANY); + mark =3D init; + } + + /* Set the mark of the subflow's socket based on appearance order */ + err =3D bpf_setsockopt(skops, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)); + if (err < 0) + return 1; + if (mark =3D=3D 1) + err =3D bpf_setsockopt(skops, SOL_TCP, TCP_CONGESTION, cc, TCP_CA_NAME_M= AX); + + return 1; +} --=20 2.40.1 From nobody Sat May 18 19:47:58 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0736BFC1C for ; Sat, 20 Apr 2024 11:24:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713612259; cv=none; b=NVbIGmS88fqGN4pjrx6UFArpT8nkZHP1Simj4vOBWzh/0TT0Pm09lZ4L9FfBfVTfihFFzh2UwxsXvzb8qCOIsu995WiUXRc/Z9pO60iTeXTXEzqOt+v1Uef30hxvgXV+lBfyJUUV0Fy5HPRzZuKa37F2kos1juy0lVTpqctt+jw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713612259; c=relaxed/simple; bh=MvKyaHkz/xiIGB8qD5vvsXmmzcmjqcHlsEOtrsVa/hk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kPnDjuqZ+2DcTwBmqKq2G3kOlnwaJP4Fa5+AhDLFoyohvIo4Hd9KZ7XQtj97DDyF7rxPR6PbjT8BtnlrgLCNPjy9oYKwKTY/pMw32CZsaG8x+IcSYE57AWCnsDaonZAbvbj8mZ6eS7FfctI7xz5TQww9zsEu8XGAQrwgSQOIwp4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cJN2PHoV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="cJN2PHoV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1CE3AC072AA; Sat, 20 Apr 2024 11:24:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713612258; bh=MvKyaHkz/xiIGB8qD5vvsXmmzcmjqcHlsEOtrsVa/hk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cJN2PHoVQzNLzEJ2bE0EELpF+b3USBweO6az7bmeWQ4wqL1m66t9mXGYZV3+Yuxfv Pj61dxcOJ88aP7CFv5w7I15BtQz7VKKhvJCHHfi4ZHX/AaqmlOOI3Wsg4I2xteqQ5G xVlZjPEG4ATNx1wNKvDJMTxmRtLl37cc0NC7z8vhBjm1yGEiNsL2ouHw3oU7XF2Ym+ BtTy3pymDdPMsK1UJcSx2yoLrQ8+2IsBTm+doZNAZhYC13WLH9/l3zskxCa32wWJ74 f0UTGouMDyhty30OIVm1YKx5/Zwbdm0bN9QSO/CamSBuZ2iuOCLtqzWrdXqjhQHIdE lZAOH7tK676Mw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v8 2/4] selftests/bpf: Add mptcp subflow subtest Date: Sat, 20 Apr 2024 19:23:27 +0800 Message-Id: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang This patch adds a subtest named test_subflow to load and verify the newly added mptcp subflow example in test_mptcp. Add a helper endpoint_init() to add a new subflow endpoint. Add another helper ss_search() to verify the fwmark and congestion values set by mptcp_subflow prog using setsockopts. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/76 Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 114 +++++++++++++++++- 1 file changed, 108 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index d3cc3541dd4f..0b0da4556d91 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -9,6 +9,7 @@ #include "network_helpers.h" #include "mptcp_sock.skel.h" #include "mptcpify.skel.h" +#include "mptcp_subflow.skel.h" #include "mptcp_bpf_first.skel.h" #include "mptcp_bpf_bkup.skel.h" #include "mptcp_bpf_rr.skel.h" @@ -16,6 +17,9 @@ #include "mptcp_bpf_burst.skel.h" =20 #define NS_TEST "mptcp_ns" +#define ADDR_1 "10.0.1.1" +#define ADDR_2 "10.0.1.2" +#define PORT_1 10001 #define WITH_DATA true #define WITHOUT_DATA false =20 @@ -41,6 +45,9 @@ #endif #define MPTCP_SCHED_NAME_MAX 16 =20 +static const unsigned int total_bytes =3D 10 * 1024 * 1024; +static int duration; + struct __mptcp_info { __u8 mptcpi_subflows; __u8 mptcpi_add_addr_signal; @@ -332,8 +339,106 @@ static void test_mptcpify(void) close(cgroup_fd); } =20 -static const unsigned int total_bytes =3D 10 * 1024 * 1024; -static int stop, duration; +static int endpoint_init(char *flags) +{ + SYS(fail, "ip -net %s link add veth1 type veth peer name veth2", NS_TEST); + SYS(fail, "ip -net %s addr add %s/24 dev veth1", NS_TEST, ADDR_1); + SYS(fail, "ip -net %s link set dev veth1 up", NS_TEST); + SYS(fail, "ip -net %s addr add %s/24 dev veth2", NS_TEST, ADDR_2); + SYS(fail, "ip -net %s link set dev veth2 up", NS_TEST); + SYS(fail, "ip -net %s mptcp endpoint add %s %s", NS_TEST, ADDR_2, flags); + + return 0; +fail: + return -1; +} + +static int _ss_search(char *src, char *dst, char *port, char *keyword) +{ + char cmd[128]; + + snprintf(cmd, sizeof(cmd), + "ip netns exec %s ss -Menita src %s dst %s %s %d | grep -q '%s'", + NS_TEST, src, dst, port, PORT_1, keyword); + return system(cmd); +} + +static int ss_search(char *src, char *keyword) +{ + return _ss_search(src, ADDR_1, "dport", keyword); +} + +static void run_subflow(char *new) +{ + int server_fd, client_fd, err; + char cc[TCP_CA_NAME_MAX]; + socklen_t len =3D sizeof(cc); + + server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); + if (!ASSERT_GE(server_fd, 0, "start_mptcp_server")) + return; + + client_fd =3D connect_to_fd(server_fd, 0); + if (!ASSERT_GE(client_fd, 0, "connect to fd")) + goto fail; + + err =3D getsockopt(server_fd, SOL_TCP, TCP_CONGESTION, cc, &len); + if (!ASSERT_OK(err, "getsockopt(srv_fd, TCP_CONGESTION)")) + goto fail; + + send_byte(client_fd); + + ASSERT_OK(ss_search(ADDR_1, "fwmark:0x1"), "ss_search fwmark:0x1"); + ASSERT_OK(ss_search(ADDR_2, "fwmark:0x2"), "ss_search fwmark:0x2"); + ASSERT_OK(ss_search(ADDR_1, new), "ss_search new cc"); + ASSERT_OK(ss_search(ADDR_2, cc), "ss_search default cc"); + + close(client_fd); +fail: + close(server_fd); +} + +static void test_subflow(void) +{ + int cgroup_fd, prog_fd, err; + struct mptcp_subflow *skel; + struct nstoken *nstoken; + + cgroup_fd =3D test__join_cgroup("/mptcp_subflow"); + if (!ASSERT_GE(cgroup_fd, 0, "join_cgroup: mptcp_subflow")) + return; + + skel =3D mptcp_subflow__open_and_load(); + if (!ASSERT_OK_PTR(skel, "skel_open_load: mptcp_subflow")) + goto close_cgroup; + + err =3D mptcp_subflow__attach(skel); + if (!ASSERT_OK(err, "skel_attach: mptcp_subflow")) + goto skel_destroy; + + prog_fd =3D bpf_program__fd(skel->progs.mptcp_subflow); + err =3D bpf_prog_attach(prog_fd, cgroup_fd, BPF_CGROUP_SOCK_OPS, 0); + if (!ASSERT_OK(err, "prog_attach")) + goto skel_destroy; + + nstoken =3D create_netns(); + if (!ASSERT_OK_PTR(nstoken, "create_netns: mptcp_subflow")) + goto skel_destroy; + + if (!ASSERT_OK(endpoint_init("subflow"), "endpoint_init")) + goto close_netns; + + run_subflow(skel->data->cc); + +close_netns: + cleanup_netns(nstoken); +skel_destroy: + mptcp_subflow__destroy(skel); +close_cgroup: + close(cgroup_fd); +} + +static int stop; =20 static void *server(void *arg) { @@ -414,10 +519,6 @@ static void send_data(int lfd, int fd, char *msg) PTR_ERR(thread_ret)); } =20 -#define ADDR_1 "10.0.1.1" -#define ADDR_2 "10.0.1.2" -#define PORT_1 10001 - static struct nstoken *sched_init(char *flags, char *sched) { struct nstoken *nstoken; @@ -558,6 +659,7 @@ void test_mptcp(void) { RUN_MPTCP_TEST(base); RUN_MPTCP_TEST(mptcpify); + RUN_MPTCP_TEST(subflow); RUN_MPTCP_TEST(default); RUN_MPTCP_TEST(first); RUN_MPTCP_TEST(bkup); --=20 2.40.1 From nobody Sat May 18 19:47:58 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 255972941F for ; Sat, 20 Apr 2024 11:24:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713612260; cv=none; b=oTzCvMxs7pnxROjZe9CNiKeEj2PEiSIX8ItWR66+KdtPVyrTvjTPzN5ke46juSpYu06HPzRZ4bMBfyhs6NWZm5WbMo8lN8F9uapL5eT6TF09Ur6vTuGaFYJ00pnkCRAdNe9q4pIEskusb/0uoEjThBvJMeFqFImfowuxiQ+4EmQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713612260; c=relaxed/simple; bh=mm0SV7jv7LnoqtM5Nj8uFJPAcLgnJ4o4z+CfE7BKVTI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=U5NnKyWaHmq1751eNep1z0Bveobhf7pwnys7UAGgZuGWixYO0WySmY6RkZZSsKaZZTFmha/ecR4NFRiolbN919Sa+gXVcX0/8aYD46yVKN2ds4ia/fJSMOYzrh3sJukqZyFanE7kfNN4eiwUodDFeYgoaDlgAnM75/si/Anwu5I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Gs1dpXvN; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Gs1dpXvN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 24B8BC113CC; Sat, 20 Apr 2024 11:24:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713612260; bh=mm0SV7jv7LnoqtM5Nj8uFJPAcLgnJ4o4z+CfE7BKVTI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Gs1dpXvN3M97od9tj0G8ZG/6uNnVCrmn6usCzMkSbBDI8hQND8oYBZYKHW92S7cKW lSIwb8dL1+nFxpYiEq1T7o+wxlSKup/KXzrIJEodEHF8YVpdVA6bqyLaFnz1GPbt8f a4jSo3AE6rA5G5J+9wjb1YIdpbN+DCAv2u7Nc5nCIhEyXRXxwbDA/eHCHvixVPVcSJ uKUTV+0ZFZjZ0SbEapJKbgchDUUSvwQG/dK4NhbUjcY3RViKSK1R47M6s0rPAB76zc GQJFmr6Uk7KHeTmURY5kGW6U5Ax1JTWnwgZIBkRU6HKb4wH6EAllPlHFb1f2wrYCIV nVLW7ZvzUTVwA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v8 3/4] selftests/bpf: Handle SIGINT when creating netns Date: Sat, 20 Apr 2024 19:23:28 +0800 Message-Id: <52828eced92baaed52e180c5975f96620255e9c0.1713612119.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang It's necessary to delete netns during the MPTCP bpf tests interrupt, otherwise the next tests run will fail due to unable to create netns. This patch adds a new SIGINT handle sig_int, and deletes NS_TEST in it. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/mptcp.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 0b0da4556d91..307d4b360350 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -79,11 +79,18 @@ struct mptcp_storage { char ca_name[TCP_CA_NAME_MAX]; }; =20 +static void sig_int(int sig) +{ + signal(sig, SIG_IGN); + SYS_NOFAIL("ip netns del %s", NS_TEST); +} + static struct nstoken *create_netns(void) { SYS(fail, "ip netns add %s", NS_TEST); SYS(fail, "ip -net %s link set dev lo up", NS_TEST); =20 + signal(SIGINT, sig_int); return open_netns(NS_TEST); fail: return NULL; --=20 2.40.1 From nobody Sat May 18 19:47:58 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3721FC1C for ; Sat, 20 Apr 2024 11:24:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713612261; cv=none; b=tK3fV+hmlbTDANB9MDbc54C469yYbiMY2vI01DZuBZ6BEKglzaeEgjlUDy7dHBvs2wyfHiooC9EVnj5mfhn8ATp+AVGjm/fqIt5PNMrXdgjN7wlsaarcfhSd3yGVS7uJ6qjsOHeBeY8b+ti2gBQhAk3eJmZFEzbWrnVkM6Kfgh0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713612261; c=relaxed/simple; bh=QvrpkTAiB7kGDAbS0EJvrZaamoUYJT7gHdi8wJSBwLQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=g2sN5LYkLzXI7uvqcvu4KiEWJ9rrpdI2RhTjtmEyL3PktVsRTZvqVeDxxlJbXpV01Ebi9aMjDHJQeOKwKieAIHfG1+e5Xo2mQ7aNcowMjEnyIR4RQUzCC4hJ/mKWYs+xf8MnUtP7my18LOX8Wkwj092OxyqVwk9S/AHQNBozV+Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HylC7W/J; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HylC7W/J" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8CABEC116B1; Sat, 20 Apr 2024 11:24:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713612261; bh=QvrpkTAiB7kGDAbS0EJvrZaamoUYJT7gHdi8wJSBwLQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HylC7W/JK7MfTVQ6TlfaP66+j75tdBBll8IeeEXiYNLfz6L4zAEDQd4yZWeaiUCgH ys8szZPVtp0+jljjoBOuGfss/ZEH3Pv3fuVBl6Hh6wABtVrjJeNrvCCS/E+2fUD5ig nppmDol6lD3TDDV5Z58iJh2ru7C0UUcoBGhws01AIFUbTdhl8sbR8DcSJE2VQWKa2I Go+LETUfrruunt24yvdZWIynjbxEhA9/Wwhjyw2msrfPSGdeK9/hzDjP2C3M9oR678 5dOg/9L9rhQ2Tvo+qbv+XLlaHpiGroh0VrBmHJmtk/Ye37NGnsshr7x7HmF9A1Xrnu LdNm5p3qOdVoQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v8 4/4] Squash to "selftests/bpf: Add bpf scheduler test" Date: Sat, 20 Apr 2024 19:23:29 +0800 Message-Id: <7f88de31a64fb954a1a2aa164c51a1cd059a5444.1713612119.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Use endpoint_init in sched_init and use _ss_search in has_bytes_sent. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/mptcp.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 307d4b360350..10206f1d1157 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -532,28 +532,22 @@ static struct nstoken *sched_init(char *flags, char *= sched) =20 nstoken =3D create_netns(); if (!ASSERT_OK_PTR(nstoken, "create_netns")) + return NULL; + + if (!ASSERT_OK(endpoint_init("subflow"), "endpoint_init")) goto fail; =20 - SYS(fail, "ip -net %s link add veth1 type veth peer name veth2", NS_TEST); - SYS(fail, "ip -net %s addr add %s/24 dev veth1", NS_TEST, ADDR_1); - SYS(fail, "ip -net %s link set dev veth1 up", NS_TEST); - SYS(fail, "ip -net %s addr add %s/24 dev veth2", NS_TEST, ADDR_2); - SYS(fail, "ip -net %s link set dev veth2 up", NS_TEST); - SYS(fail, "ip -net %s mptcp endpoint add %s %s", NS_TEST, ADDR_2, flags); SYS(fail, "ip netns exec %s sysctl -qw net.mptcp.scheduler=3D%s", NS_TEST= , sched); =20 return nstoken; fail: + cleanup_netns(nstoken); return NULL; } =20 -static int has_bytes_sent(char *addr) +static int has_bytes_sent(char *dst) { - char cmd[128]; - - snprintf(cmd, sizeof(cmd), "ip netns exec %s ss -it src %s sport %d dst %= s | %s", - NS_TEST, ADDR_1, PORT_1, addr, "grep -q bytes_sent:"); - return system(cmd); + return _ss_search(ADDR_1, dst, "sport", "bytes_sent:"); } =20 static void send_data_and_verify(char *sched, bool addr1, bool addr2) --=20 2.40.1