selftests/bpf: Add two mptcp netns helpers
authorGeliang Tang <geliang.tang@suse.com>
Wed, 16 Aug 2023 01:11:57 +0000 (09:11 +0800)
committerMartin KaFai Lau <martin.lau@kernel.org>
Wed, 16 Aug 2023 17:22:16 +0000 (10:22 -0700)
Add two netns helpers for mptcp tests: create_netns() and
cleanup_netns(). Use them in test_base().

These new helpers will be re-used in the following commits
introducing new tests.

Acked-by: Yonghong Song <yonghong.song@linux.dev>
Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
Link: https://lore.kernel.org/r/7506371fb6c417b401cc9d7365fe455754f4ba3f.1692147782.git.geliang.tang@suse.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
tools/testing/selftests/bpf/prog_tests/mptcp.c

index cd0c42f..76afb51 100644 (file)
@@ -22,6 +22,24 @@ struct mptcp_storage {
        char ca_name[TCP_CA_NAME_MAX];
 };
 
+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);
+
+       return open_netns(NS_TEST);
+fail:
+       return NULL;
+}
+
+static void cleanup_netns(struct nstoken *nstoken)
+{
+       if (nstoken)
+               close_netns(nstoken);
+
+       SYS_NOFAIL("ip netns del %s &> /dev/null", NS_TEST);
+}
+
 static int verify_tsk(int map_fd, int client_fd)
 {
        int err, cfd = client_fd;
@@ -147,11 +165,8 @@ static void test_base(void)
        if (!ASSERT_GE(cgroup_fd, 0, "test__join_cgroup"))
                return;
 
-       SYS(fail, "ip netns add %s", NS_TEST);
-       SYS(fail, "ip -net %s link set dev lo up", NS_TEST);
-
-       nstoken = open_netns(NS_TEST);
-       if (!ASSERT_OK_PTR(nstoken, "open_netns"))
+       nstoken = create_netns();
+       if (!ASSERT_OK_PTR(nstoken, "create_netns"))
                goto fail;
 
        /* without MPTCP */
@@ -174,11 +189,7 @@ with_mptcp:
        close(server_fd);
 
 fail:
-       if (nstoken)
-               close_netns(nstoken);
-
-       SYS_NOFAIL("ip netns del " NS_TEST " &> /dev/null");
-
+       cleanup_netns(nstoken);
        close(cgroup_fd);
 }