From nobody Sun May 5 03:15:13 2024 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AEE063B6 for ; Tue, 27 Dec 2022 18:21:37 +0000 (UTC) Received: by mail-ej1-f43.google.com with SMTP id m18so33550745eji.5 for ; Tue, 27 Dec 2022 10:21:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Iq3E4HRxn6yxKUsEwffezaIZxNXLvcYcDLjRAQfS+5Q=; b=otlJZIput4YglvtfNSi0JalkwDv+S2iwuvLBorH2zjVSdwcJeYBAzc/IX1CnrPIJN+ csGwqiDXu/hhYQwHgRT7akQL0WAp8aIgsiJ1HiRmkcZnUgvMEgnsHfGjSUrBIa0BOHHR oZn/Vx5yB1FbR/GUQJr7JtdjMn4XcOxx/1oTR7itJem0JFnTM9EhMaEGM7nEt2MCEcwZ 1nkZj4jGUMJAJKSZD9G+KFggvpBnGlpbHS5wv06ycr9msb6aZarUqg/yhJAB87+AfA8C UtiZrW4+YCOt4n3lidiRx6pU97OS9u2x8w60wcCh6drNlWQNJbzbts56YYHnlfv3Ko3V /9Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Iq3E4HRxn6yxKUsEwffezaIZxNXLvcYcDLjRAQfS+5Q=; b=arpzEa5UKjJgxNsgTN6Yz4itHZsBRf+t8LdZtHsfxuYqfvawGn4StXm0n88ew91fEi Af1oom9iEWjkfDsrs7CB0aW4S7sVXLDSZCjkV8Taa3E053tBl/MgrdGAmhVpBtAVMxam 1Phdgp7bhKom7JJ/xX7IArEojh1LoL1K/pAiOL7+EzoTmqlLahjyus/+gCGyeEuVkmxv BLnCZBn9iv0U6LVyAbHvzw8GlTW0xZv9ntjCjI/W78Q2zxtN3oF9iUKCBp2Mdb/ORQEP mfOiivx6wzmhjYS62crTycWUBEXwrAFF+9Q9YLE5VXF29iI725wp2YVsUScAYgaE1i2x 82nA== X-Gm-Message-State: AFqh2krj4GI/rl/UsubIcKYq0KTlZmFzBLybMRvzzIz0O2MzwjVhrlVW KDGvBVI2pD/K7CCmNTGUa+gEn735KlN8RNGrbGAFjA== X-Google-Smtp-Source: AMrXdXt4QY1zQpFlqPboI1MKcjM86Q3Ft6mb7Vu3+uW0EYOmGdP2qEi7i/8L5WrreYRvjsPudx5kgQ== X-Received: by 2002:a17:906:6dcb:b0:7e7:4dd7:bbcc with SMTP id j11-20020a1709066dcb00b007e74dd7bbccmr18942353ejt.73.1672165295950; Tue, 27 Dec 2022 10:21:35 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:35 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Paolo Abeni , Matthieu Baerts Subject: [PATCH mptcp-net v3 01/11] mptcp: explicitly specify sock family at subflow creation time Date: Tue, 27 Dec 2022 19:20:47 +0100 Message-Id: <20221227182057.2288816-2-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3944; i=matthieu.baerts@tessares.net; h=from:subject; bh=2d3UcZEI4VmYmUKskWW4hroBAzI3yr+/Q0t9Liyx5So=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd5c1hsPJ40uIi91KDLtfepM+0LFk36Wa3QODeH bs3zbKuJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3eQAKCRD2t4JPQmmgc+WEEA CbKXi+NM7yBbQxeo61y6c6gTMhAtiB2wpfCZBIvstFUEK5GCdgnhITv9PxcrxC+3/v56lkVAns5LVD PIuuu/MePZ5L4tpP0kSsZf3nvvLied49jCqY4hKdYszd/VCPYz5iac3c4H39G8A5xjJjL6hAOQuzXR ZL+NhyqDDfPb8DqCthYJWXOtorLhSxajXkPsY5KGd/qBeZPw9CWYEFv2fCPRQml2iMKgfy0WJLGuOT uUUz663fdvMq2eahtQNl5MHsCVS3szBuxoyTFPuzvfX/YRK6GR7K7pBWIJW3xwtuIgHD88sgCiScZ6 YKWOMf4mSGJwbdn4cMVOWp8iHyG4ggAry3y1KAe5nDGNOOURYjS7/+g6qqsHUxWUCFdUlrFAKnBzGB JWh+2jMb6q3NXwbDXQm4TBdXq7ZtdyDFQpehrTK9v4BmZBUW52kxLZEuPFIXIkCOHuE7EOR734aKGV 5xOKGuVhLIXpoyZeJZBgdPHMp/5Q8bjzHl5La6+SzHw+ex+bHMylvoiosEEYRtBOmmgYlly4UWQekl 0ULN9zrGYZyucV17d+Jpk/JbmxTWbaRlN+vkKlslzNHiqiWQ9ppmk9CjtyhM0eFe9UV4UGj/QD2Eye SKUATdjh+MdgRNAPp4bZ5DaUE2XdavoKz0nye7tszx4Xb9Is4i2D2N1bhDag== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Paolo Abeni Let the caller specify the to-be-created subflow family. For a given MPTCP socket created with the AF_INET6 family, the current userspace PM can already ask the kernel to create subflows in v4 and v6. If "plain" IPv4 addresses are passed to the kernel, they are automatically mapped in v6 addresses "by accident". This can be problematic because the userspace will need to pass different addresses, now the v4-mapped-v6 addresses to destroy this new subflow. On the other hand, if the MPTCP socket has been created with the AF_INET family, the command to create a subflow in v6 will be accepted but the result will not be the one as expected as new subflow will be created in IPv4 using part of the v6 addresses passed to the kernel: not creating the expected subflow then. No functional change intended for the in-kernel PM where an explicit enforcement is currently in place. This arbitrary enforcement will be leveraged by other patches in a future version. Fixes: 702c2f646d42 ("mptcp: netlink: allow userspace-driven subflow establ= ishment") Co-developed-by: Matthieu Baerts Signed-off-by: Matthieu Baerts Signed-off-by: Paolo Abeni --- Notes: v2->v3: - Update the commit message because the behaviour is modified for the userspace PM and needed not to create subflows from/to wrong IP addresses. net/mptcp/protocol.c | 2 +- net/mptcp/protocol.h | 3 ++- net/mptcp/subflow.c | 9 +++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index aaafdae73b6a..003b44a79fce 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -98,7 +98,7 @@ static int __mptcp_socket_create(struct mptcp_sock *msk) struct socket *ssock; int err; =20 - err =3D mptcp_subflow_create_socket(sk, &ssock); + err =3D mptcp_subflow_create_socket(sk, sk->sk_family, &ssock); if (err) return err; =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 5b92906cb91f..b2b56a80e817 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -643,7 +643,8 @@ bool mptcp_addresses_equal(const struct mptcp_addr_info= *a, /* called with sk socket lock held */ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info = *loc, const struct mptcp_addr_info *remote); -int mptcp_subflow_create_socket(struct sock *sk, struct socket **new_sock); +int mptcp_subflow_create_socket(struct sock *sk, unsigned short family, + struct socket **new_sock); void mptcp_info2sockaddr(const struct mptcp_addr_info *info, struct sockaddr_storage *addr, unsigned short family); diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index bd387d4b5a38..ec54413fb31f 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -1547,7 +1547,7 @@ int __mptcp_subflow_connect(struct sock *sk, const st= ruct mptcp_addr_info *loc, if (!mptcp_is_fully_established(sk)) goto err_out; =20 - err =3D mptcp_subflow_create_socket(sk, &sf); + err =3D mptcp_subflow_create_socket(sk, loc->family, &sf); if (err) goto err_out; =20 @@ -1660,7 +1660,9 @@ static void mptcp_subflow_ops_undo_override(struct so= ck *ssk) #endif ssk->sk_prot =3D &tcp_prot; } -int mptcp_subflow_create_socket(struct sock *sk, struct socket **new_sock) + +int mptcp_subflow_create_socket(struct sock *sk, unsigned short family, + struct socket **new_sock) { struct mptcp_subflow_context *subflow; struct net *net =3D sock_net(sk); @@ -1673,8 +1675,7 @@ int mptcp_subflow_create_socket(struct sock *sk, stru= ct socket **new_sock) if (unlikely(!sk->sk_socket)) return -EINVAL; =20 - err =3D sock_create_kern(net, sk->sk_family, SOCK_STREAM, IPPROTO_TCP, - &sf); + err =3D sock_create_kern(net, family, SOCK_STREAM, IPPROTO_TCP, &sf); if (err) return err; =20 --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF0AF63B8 for ; Tue, 27 Dec 2022 18:21:38 +0000 (UTC) Received: by mail-ej1-f54.google.com with SMTP id bj12so33525715ejb.13 for ; Tue, 27 Dec 2022 10:21:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UmkiOWACWTt0hLZDqv1AI1TNAWCah4XFf8P7MvVQ+Fc=; b=dlwD295Vm3zZdM97xahqqX5VqfGzJcOBNSUMk8aGyXqX4DEU1jBHyN9lMoBvu7RAOk aQ1jaYOeE6JoxAntLGIVJWQxeBRdUZSKhzd5KPTrqi/cSifGmdyGRmwI8DVVys0M8XgO Ktmw4B0e45TAPNFvR07vM5JjP0cCGo1rVAhVpvUh8RVa7olxZTz6StqITaWlmHLMvyoL 9Fx4fninKuXVN/mhCsF4+vqdfEgqpJ6onbkSHB77ehK2gXnO3tfS1U9AtFoh9/qhmG9H D9jiVdoizNNKvyh5m2Rtn1R/po6ZQyWkDp7DNimjy4JOcIXZHAEJlTxxVFjWtnToe2km M67Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UmkiOWACWTt0hLZDqv1AI1TNAWCah4XFf8P7MvVQ+Fc=; b=aETn8S2vb4uZ8qwMtty6SAyCv7wOjqQObABuchG7fe+OsvI/raNRqRBe/nfPGLK8BU XchCMd811HXPhMcsv8DUItqg6DSABL10VE939i6wZ7eUFPoPw6UQfLgevQ3B0zo6P3oc erw7LCT0dYF6uiSNA15vgODPDgJ8kGO3rMuUed22GIruwry9xYm1tXSZkItA7HGnWf71 njOHN8aEWwsvaFQI9vWTkExXnrMFb3B8H+wFDtE7sPnfVp9tJju4qCdjRb3kAu0N1Lpu ygJyclQowbL/aQgnvRTp4qr1CmqlCuEGav9X/HCXAi7wrwTAoh++CW9NqID7Ojp7644a 00HA== X-Gm-Message-State: AFqh2kpe0jgDwiiPJ5r4pjHPfNmr8f0QRYT6gw89ym+b8wOC6S/XfGvQ eO2PcOydICDHJNRxw4lL8Cf3PwDr4ou0M0Wqrst7wA== X-Google-Smtp-Source: AMrXdXtk1JqZ2Hi4UErZ9sivJaJanvgetLemNei0KliqQMbYLu3pN2kSRH/LXBIsQDAVdsB6KujXDA== X-Received: by 2002:a17:906:7714:b0:829:6064:bc52 with SMTP id q20-20020a170906771400b008296064bc52mr17342013ejm.74.1672165296766; Tue, 27 Dec 2022 10:21:36 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:36 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-net v3 02/11] mptcp: netlink: respect v4/v6-only sockets Date: Tue, 27 Dec 2022 19:20:48 +0100 Message-Id: <20221227182057.2288816-3-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3621; i=matthieu.baerts@tessares.net; h=from:subject; bh=5vHj++yOudegJpdjUjRNe8ThnfAp9dTH9plU+MPMpWM=; b=owEBbAKT/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd567GABS4DEB4IbEEHE7Fz+I5PCP29ZUvcwrFW aZHmcsyJAjIEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3eQAKCRD2t4JPQmmgcxTAD/ igSDNVT4hQiDAyQZO+RPe8hpQx0axIFMamE6kFUFdY41zCqmHqMc4kP7rXuoWqXI6PbKCh4z4bzG2M DlA952GWiVcF4hWH/97+EuAScrjYofC+y8fIyPsnR5GohyXaVEAB89Jajtgx0iluaygNhJO9W8W1uz CDqxWJs24h9OJcSnleG+LM63Jk9corqzkYXD2wUZhembDgvn8ms6qzkfZ4BlbBvIstUof1Sc0zEDQz JJianOe/Kf/1mnk3zXWONW3QZC2ytHCQjxApaXpTTTrAZPd8uhRz4McoXPlWI8qi5EOm+WQdbO7z0D cUB10Wt1IGu7WM8fxj2OWwebe/01GUM8Z0CS4VpJwbo7sFA1ZkwjlNkrGyMyCKnwppK7BCJsmENGc6 O8RA+B/J4El+zNAzpdKj/W4GYVdI3lAtjJIVdz4Wvi8lo4irq26JeUseW1lA5UmZJI1rt/jiAjkYLo sR2YV2WqCG0I+ejALJoHQAWWtuAS4HzKdO+Ejp45AkIP9+gY+Dx+/3phxDTtTTNC//hWQ+n5IhFf0K zfZt9qLBPmFY5ryeb7w8kSp+b5QCUNTdLvkNLfwX1KNSIUVK2qNPZVXba03vyvwhqmeQ8/mH3grz06 XKG+3+iIoRahjkDZNxzmqrqYJkOvPZ9sBp7wFXS2yuk3JhMa2JfKjYq2CT X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If an MPTCP socket has been created with AF_INET6 and the IPV6_V6ONLY option has been set, the userspace PM would allow creating subflows using IPv4 addresses, e.g. mapped in v6. The userspace PM will also accept creating subflows with local and remote addresses having different families resulting in the creation of non expected subflows. It is then required to check the given families can be accepted. This is done by using a new helper for addresses family matching, taking care of IPv4 vs IPv4-mapped-IPv6 addresses. This helper will be re-used later by the in-kernel path-manager to use mixed IPv4 and IPv6 addresses. While at it, a clear error message is now reported if there are some conflicts with the families that have been passed by the userspace. Fixes: 702c2f646d42 ("mptcp: netlink: allow userspace-driven subflow establ= ishment") Signed-off-by: Matthieu Baerts --- net/mptcp/pm.c | 25 +++++++++++++++++++++++++ net/mptcp/pm_userspace.c | 7 +++++++ net/mptcp/protocol.h | 3 +++ 3 files changed, 35 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index cdeb7280ac76..083f3f8322c0 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -413,6 +413,31 @@ void mptcp_pm_subflow_chk_stale(const struct mptcp_soc= k *msk, struct sock *ssk) } } =20 +/* if sk is ipv4 or ipv6_only allows only same-family local and remote add= resses, + * otherwise allow any matching local/remote pair + */ +bool mptcp_pm_addr_families_match(const struct sock *sk, + const struct mptcp_addr_info *loc, + const struct mptcp_addr_info *rem) +{ + bool mptcp_is_v4 =3D sk->sk_family =3D=3D AF_INET; + +#if IS_ENABLED(CONFIG_MPTCP_IPV6) + bool loc_is_v4 =3D loc->family =3D=3D AF_INET || ipv6_addr_v4mapped(&loc-= >addr6); + bool rem_is_v4 =3D rem->family =3D=3D AF_INET || ipv6_addr_v4mapped(&rem-= >addr6); + + if (mptcp_is_v4) + return loc_is_v4 && rem_is_v4; + + if (ipv6_only_sock(sk)) + return !loc_is_v4 && !rem_is_v4; + + return loc_is_v4 =3D=3D rem_is_v4; +#else + return mptcp_is_v4 && loc->family =3D=3D AF_INET && rem->family && AF_INE= T; +#endif +} + void mptcp_pm_data_reset(struct mptcp_sock *msk) { u8 pm_type =3D mptcp_get_pm_type(sock_net((struct sock *)msk)); diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index 65dcc55a8ad8..ea6ad9da7493 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -294,6 +294,13 @@ int mptcp_nl_cmd_sf_create(struct sk_buff *skb, struct= genl_info *info) } =20 sk =3D (struct sock *)msk; + + if (!mptcp_pm_addr_families_match(sk, &addr_l, &addr_r)) { + GENL_SET_ERR_MSG(info, "families mismatch"); + err =3D -EINVAL; + goto create_err; + } + lock_sock(sk); =20 err =3D __mptcp_subflow_connect(sk, &addr_l, &addr_r); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index b2b56a80e817..871ec3e93314 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -793,6 +793,9 @@ int mptcp_pm_parse_addr(struct nlattr *attr, struct gen= l_info *info, int mptcp_pm_parse_entry(struct nlattr *attr, struct genl_info *info, bool require_family, struct mptcp_pm_addr_entry *entry); +bool mptcp_pm_addr_families_match(const struct sock *sk, + const struct mptcp_addr_info *loc, + const struct mptcp_addr_info *rem); void mptcp_pm_subflow_chk_stale(const struct mptcp_sock *msk, struct sock = *ssk); void mptcp_pm_nl_subflow_chk_stale(const struct mptcp_sock *msk, struct so= ck *ssk); void mptcp_pm_new_connection(struct mptcp_sock *msk, const struct sock *ss= k, int server_side); --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 76B3463B9 for ; Tue, 27 Dec 2022 18:21:39 +0000 (UTC) Received: by mail-ej1-f45.google.com with SMTP id ud5so33611528ejc.4 for ; Tue, 27 Dec 2022 10:21:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=09g6QqktahkBKWabGA7JntIoRRWNFTXK9Wy8Tqe6jNM=; b=5B9UCo3fhdE/4irlDkmaEvp/68bDrn9n++36iZn7XMrci/cUOkoIk90U2093vjpfsu CN/mDx5CaRDaR1uszsVbENt771H53wqYVGmg3DhGxqleOKe4wC0nzhqseYVnPbuhTc5R D/vaSPHaM9MH3F4dgWull6vfafPyUhbnBiUzBF3JMhftc0TElC19vSYy5+DtKQgKA+nc vO+CPC18eOn3ADxqXmm3PW3+CDysVdw5p/Uxkah9iL8yPiV6Beu7SAQdkBeQ/f/ON6CR ip672df16pdQhs4kDrHiBQCalDb1mNwR3fMbjTxio0G/N6vriSPvNOUG4QtrEx2OD8KC mZuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=09g6QqktahkBKWabGA7JntIoRRWNFTXK9Wy8Tqe6jNM=; b=edMN8ts54g/l/uIC2AZQ72MpHNvopX9kxXg1tCiV8552rdpCa/+O/TYC+UqTrungBc zqDS9mynTtxyG2zMLoLJ4FzXHu7ffhuAjVNx5uNxOt2V0jLqwU1q7e0neAX/39G26hh9 erGSIWgSC/bcUHioaGpa1iQwEEMs9M/yBY/c/jXo8THankkWzwGDOHEwDqPclc/zUiXe 9y8nJJb7Ba3tw2Cccabe5DlkjvdfBLqtqRIEVAcxXkiQEAjKG6DzHUD46nl5LkBC6O7X Vu/8xr/6X3cXqX/OUVkGL4cogglGsAaaJWHc5NYUX23JRfVYRi1g1BoCDZD5YNXbD249 7j5w== X-Gm-Message-State: AFqh2kqdS4HkeasmDqBv+cxduE5Wn9ciKBAdVigRpExkuBtT2Rea58vP lGLBznoE29J7bIoNxNfwswlKfGnrzgf8b0qvpqR61g== X-Google-Smtp-Source: AMrXdXtaCrGUVwILvPUbUNfQBjrlazgfhSw1P2dAjD7U16wRFSzcyjPwBBrfD/gIBMzZIKIf0Cc1IA== X-Received: by 2002:a17:907:6f09:b0:7c0:a877:1cf1 with SMTP id sy9-20020a1709076f0900b007c0a8771cf1mr23114274ejc.12.1672165297544; Tue, 27 Dec 2022 10:21:37 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:37 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-net v3 03/11] selftests: mptcp: userspace: validate v4-v6 subflows mix Date: Tue, 27 Dec 2022 19:20:49 +0100 Message-Id: <20221227182057.2288816-4-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2908; i=matthieu.baerts@tessares.net; h=from:subject; bh=m9HnWTWgGp3tGRqYrsvJ05oHQXHp33ZFVgSd1l16S0k=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd5qeU9rN6zHcQ7Q7UWA7LRvHLxLx6pOBXUAjBi Ydw4d26JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3eQAKCRD2t4JPQmmgc+3DEA Coo4wZTStfHm0HnLx3rPiwBtQwFBGv3RQZ1GcHKy7Py54iMh5fW/7jd0h5SOGEFgpgVp/1RniK1g9S AyaxHzroHyzMv2vvj+6I2yOQuDO0+Jk/XbYnRWAgVHfL4DEabVJEbLx2AvrnRiUbT+A6HMYJER4goG vM+dhFDLASdqbo34l2VL16olv2o7ydn5LYnvNLF1xH0mSD6lI+xkyNCyCL4o6nxPLUFgpkSwCOgBhY F/J+y5/W7VpIK3hP20v5T1c09sUI82/6LaIc2K0v9qT6kDcZC9cXIeL4SE6nwcW//xIjxKDUqx0bR7 Jh1nv0Mc7uLImchXJ1EYLwBVay/Pdgx0UEoaaB4vau4omPbgLdMUztlPuMgF7N0ua+NXVEhbB59YpK lzvCEPzpwfNSdL9W1xmFcw+ZGj8q7gMOR/0VtDINhHlX1la0w1s0fnhYL2lE35tgtJiKjVZVRYD9xH hYTpUDd70nnCmDNv+e1V9hxmkc7tv2FSDXnFyvyvfM29sMyuy9idnTQSyFYTO44TwcDJ6Hxf79m5B8 O4DBGSxk8cHnuw+g+mLxV4tpXiHye3f8Yr5U+k/6gsr18tyObBU+fW3zFC37stLvhb1qmwzwsil+T8 AADrw6+FpTK6NM8koPPNiMss1qQBlCjm44L929YC3K0YT3rw9MyiBYnZuPMQ== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" MPTCP protocol supports having subflows in both IPv4 and IPv6. In Linux, it is possible to have that if the MPTCP socket has been created with AF_INET6 family without the IPV6_V6ONLY option. Here, a new IPv4 subflow is being added to the initial IPv6 connection, then being removed using Netlink commands. Signed-off-by: Matthieu Baerts --- .../selftests/net/mptcp/userspace_pm.sh | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/test= ing/selftests/net/mptcp/userspace_pm.sh index a29deb9fa024..ab2d581f28a1 100755 --- a/tools/testing/selftests/net/mptcp/userspace_pm.sh +++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh @@ -752,6 +752,52 @@ test_subflows() "$server4_token" > /dev/null 2>&1 } =20 +test_subflows_v4_v6_mix() +{ + # Attempt to add a listener at 10.0.2.1: + ip netns exec "$ns1" ./pm_nl_ctl listen 10.0.2.1\ + $app6_port > /dev/null 2>&1 & + local listener_pid=3D$! + + # ADD_ADDR4 from server to client machine reusing the subflow port on + # the established v6 connection + :>"$client_evts" + ip netns exec "$ns1" ./pm_nl_ctl ann 10.0.2.1 token "$server6_token" id\ + $server_addr_id dev ns1eth2 > /dev/null 2>&1 + stdbuf -o0 -e0 printf "ADD_ADDR4 id:%d 10.0.2.1 (ns1) =3D> ns2, reuse por= t\t\t" $server_addr_id + sleep 0.5 + verify_announce_event "$client_evts" "$ANNOUNCED" "$client6_token" "10.0.= 2.1"\ + "$server_addr_id" "$app6_port" + + # CREATE_SUBFLOW from client to server machine + :>"$client_evts" + ip netns exec "$ns2" ./pm_nl_ctl csf lip 10.0.2.2 lid 23 rip 10.0.2.1 rpo= rt\ + $app6_port token "$client6_token" > /dev/null 2>&1 + sleep 0.5 + verify_subflow_events "$client_evts" "$SUB_ESTABLISHED" "$client6_token"\ + "$AF_INET" "10.0.2.2" "10.0.2.1" "$app6_port" "23"\ + "$server_addr_id" "ns2" "ns1" + + # Delete the listener from the server ns, if one was created + kill_wait $listener_pid + + sport=3D$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' = "$client_evts") + + # DESTROY_SUBFLOW from client to server machine + :>"$client_evts" + ip netns exec "$ns2" ./pm_nl_ctl dsf lip 10.0.2.2 lport "$sport" rip 10.0= .2.1 rport\ + $app6_port token "$client6_token" > /dev/null 2>&1 + sleep 0.5 + verify_subflow_events "$client_evts" "$SUB_CLOSED" "$client6_token" \ + "$AF_INET" "10.0.2.2" "10.0.2.1" "$app6_port" "23"\ + "$server_addr_id" "ns2" "ns1" + + # RM_ADDR from server to client machine + ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ + "$server6_token" > /dev/null 2>&1 + sleep 0.5 +} + test_prio() { local count @@ -861,6 +907,7 @@ make_connection "v6" test_announce test_remove test_subflows +test_subflows_v4_v6_mix test_prio test_listener =20 --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 758C163A5 for ; Tue, 27 Dec 2022 18:21:40 +0000 (UTC) Received: by mail-ej1-f44.google.com with SMTP id bj12so33525856ejb.13 for ; Tue, 27 Dec 2022 10:21:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JkGlR0PhdX9YzLcyQnT+ALagHkjF/VZ3kM0OLZrGhoI=; b=zOhta0jYFYnvYRU+rMchA1fZfBBaTGiTsT3HYLWpZsl6xAhIQF5+2i1/rbPWLA3dn9 Ot1sX4dwkr4+wx8pPl9BwBZfdL3QTNq/Rf8nCAlsTegj7zHknStXsSizm8IdOuZTyeZu GIUGETKwYalDfrtrLdeTMzr73aMsRL9MWjlwvaMgeC/uHUT8fiY8wz4veaaMa4nQAUCp iDSfzV53u0ncW52sIpskOzwFKqDLJn+x7bJ0wiIajM8kQTu2doKtvPWFOvq4JVaS275P dFDBTt3m19LETTP7c3F1nLObkWJewAff1sQMD0AXXOdmrV7X4ltDv21Iz2FQ8t9ADvHM g2zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JkGlR0PhdX9YzLcyQnT+ALagHkjF/VZ3kM0OLZrGhoI=; b=73vVp+Vev0viKx3KvwFxqvr3nDWnyp0UwbM6QbIx9uiuGlMspoLteSyKjbJNFOALX6 /hF0PJe3p5+rLV7iKiWWo6hoW+iPhtwa+Z1lHAC+SwzJE1PHzEJTkdX/elRG5obMGM4y tJ7LP0L6Y0oa/unNCZ8RSAKKv7tO0K9rOwzbML1hucQTlUJEO+Oi/RNKG9zSPQbCLUm1 A7bgCpnfAGZcdG7j4VMx6TiaSwWqmedZbOGmTbrn7ZY2gCS4leAf7zfc7MJMYBmP7ys0 K8RVE2KEJXTPbgLWLyHPMqfljttwPJVsg4+Km/f0d8ji+auZYqWP77lWVSwBmXrhI0b9 M7ew== X-Gm-Message-State: AFqh2kr5PbxM2SNV0V/42DB3Tp6/PrYkSDBehrH2QrY62n6sHOnzdSmi JTUGOm2BV0cx/CSuL5qj0VVolrh+HOuWsvfaYad3hA== X-Google-Smtp-Source: AMrXdXt/8MAcrbnzk+Xnr1+oOCNVExpAGAB5Acy//VL11RHN5FGRHUdZRFfGN/O2v/GedMrHxAbzgg== X-Received: by 2002:a17:906:260e:b0:7c4:fe3c:cb2a with SMTP id h14-20020a170906260e00b007c4fe3ccb2amr19801204ejc.56.1672165298407; Tue, 27 Dec 2022 10:21:38 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:38 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Paolo Abeni , Matthieu Baerts Subject: [PATCH mptcp-next v3 04/11] mptcp: let the in-kernel PM use mixed IPv4 and IPv6 addresses Date: Tue, 27 Dec 2022 19:20:50 +0100 Message-Id: <20221227182057.2288816-5-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=6443; i=matthieu.baerts@tessares.net; h=from:subject; bh=E4UBs63mbgXRG6+3BLL7eIrHPGBDweqMzN61yUBammE=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd5lRmD+g52JuCMSjzO+1IarqP8Ls8VBmerbvRt rnaw9riJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3eQAKCRD2t4JPQmmgc+zuEA Dc+75NeuYjlzh5kGt8De1Uk2gHC8bLMnZKHfd0B5uQuW2tFymvZf4wdBakuz0QsRzYqjhW0cGK0DNh ZqZKn3+8/Z+ksreWUKTZQ7VdeXSIIeTn2oWn1mxVhFKIazzphSXwR88gEqOoEj0uBjNU98Hz6LXxRl Lq0D3pPhcN9TLAENW/9ds8tK+eCNOfFIoeL83rSlxVQwh7ohEJfDd9xyaH7rhviRpbQoE+uCR1jlVs mdihSSYSuZ8zLcDmWUWXtll6lVS21Q6hn032+Rk1YZGEAprmkVxb2wKkXK82zh+tobYnM3yrp6vEO6 c1j7cxsSIb95WstUS+OotdLOFfcLIUpfJ5uVy6LinSkNuRsb+qssnpY+bLgOT0juJoOprh+7pD1tSp H82IpFLrBMjlowlcTn+llN1I3IAtX8z9DIyqs7wqht18d/bbcpSU2B7A6H0QJhu1GUP2ucVTGyN8mc 56YmcVJIw6qx4VM3C8msV12wW7Mcoj+CZWwmwWSmEtwNlkTdiZQQy1TmBpDcuBhS2S9D0TjAunBmQB 08gQbK3UvBUYC36lNe7dp6JrLHl4RDvq1BvSiYJb7aOD1L38/JvVHiv3fm08P5sv/mc0+TU7caReZM gEHJAsKLKC0GTGN2xVw0JYvdFXUnKjXjRX/wtLMnTf/kM5UhGviv3m6Tlz4A== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Paolo Abeni Currently the in-kernel PM arbitrary enforces that created subflow's family must match the main MPTCP socket while the RFC allows mixing IPv4 and IPv6 subflows. This patch changes the in-kernel PM logic to create subflows matching the currently selected source (or destination) address. IPv4 sockets can pick only IPv4 addresses (and v4 mapped in v6), while IPv6 sockets not restricted to V6ONLY can pick either IPv4 and IPv6 addresses as long as the source and destination matches. A helper, previously introduced is used to ease family matching checks, taking care of IPv4 vs IPv4-mapped-IPv6 vs IPv6 only addresses. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/269 Co-developed-by: Matthieu Baerts Signed-off-by: Matthieu Baerts Signed-off-by: Paolo Abeni --- Notes: v2->v3: - the helper has been moved to an earlier commit ("mptcp: netlink: respect v4/v6-only sockets") and to pm.c because needed to fix a bu= g. - the helper also takes into account different cases of IPv4 addresses mapped in v6 and has been renamed. - fill_local_addresses_vec() now considers v4-mapped-v6 as AF_INET not to change the behaviour and break selftests. - add_addr_accepted is not incremented if the ADD_ADDR cannot be used (e.g. v4/v6-only sockets) - if no subflows need to be created, the PM lock is no longer manipulated. net/mptcp/pm_netlink.c | 55 +++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index f2a43e13bacd..2729605c975c 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -152,7 +152,6 @@ static struct mptcp_pm_addr_entry * select_local_address(const struct pm_nl_pernet *pernet, const struct mptcp_sock *msk) { - const struct sock *sk =3D (const struct sock *)msk; struct mptcp_pm_addr_entry *entry, *ret =3D NULL; =20 msk_owned_by_me(msk); @@ -165,16 +164,6 @@ select_local_address(const struct pm_nl_pernet *pernet, if (!test_bit(entry->addr.id, msk->pm.id_avail_bitmap)) continue; =20 - if (entry->addr.family !=3D sk->sk_family) { -#if IS_ENABLED(CONFIG_MPTCP_IPV6) - if ((entry->addr.family =3D=3D AF_INET && - !ipv6_addr_v4mapped(&sk->sk_v6_daddr)) || - (sk->sk_family =3D=3D AF_INET && - !ipv6_addr_v4mapped(&entry->addr.addr6))) -#endif - continue; - } - ret =3D entry; break; } @@ -423,7 +412,9 @@ static bool lookup_address_in_vec(const struct mptcp_ad= dr_info *addrs, unsigned /* Fill all the remote addresses into the array addrs[], * and return the array size. */ -static unsigned int fill_remote_addresses_vec(struct mptcp_sock *msk, bool= fullmesh, +static unsigned int fill_remote_addresses_vec(struct mptcp_sock *msk, + struct mptcp_addr_info *local, + bool fullmesh, struct mptcp_addr_info *addrs) { bool deny_id0 =3D READ_ONCE(msk->pm.remote_deny_join_id0); @@ -443,6 +434,9 @@ static unsigned int fill_remote_addresses_vec(struct mp= tcp_sock *msk, bool fullm if (deny_id0) return 0; =20 + if (!mptcp_pm_addr_families_match(sk, local, &remote)) + return 0; + msk->pm.subflows++; addrs[i++] =3D remote; } else { @@ -453,6 +447,9 @@ static unsigned int fill_remote_addresses_vec(struct mp= tcp_sock *msk, bool fullm if (deny_id0 && !addrs[i].id) continue; =20 + if (!mptcp_pm_addr_families_match(sk, local, &addrs[i])) + continue; + if (!lookup_address_in_vec(addrs, i, &addrs[i]) && msk->pm.subflows < subflows_max) { msk->pm.subflows++; @@ -600,9 +597,11 @@ static void mptcp_pm_create_subflow_or_signal_addr(str= uct mptcp_sock *msk) fullmesh =3D !!(local->flags & MPTCP_PM_ADDR_FLAG_FULLMESH); =20 msk->pm.local_addr_used++; - nr =3D fill_remote_addresses_vec(msk, fullmesh, addrs); - if (nr) - __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); + __clear_bit(local->addr.id, msk->pm.id_avail_bitmap); + nr =3D fill_remote_addresses_vec(msk, &local->addr, fullmesh, addrs); + if (nr =3D=3D 0) + continue; + spin_unlock_bh(&msk->pm.lock); for (i =3D 0; i < nr; i++) __mptcp_subflow_connect(sk, &local->addr, &addrs[i]); @@ -625,11 +624,11 @@ static void mptcp_pm_nl_subflow_established(struct mp= tcp_sock *msk) * and return the array size. */ static unsigned int fill_local_addresses_vec(struct mptcp_sock *msk, + struct mptcp_addr_info *remote, struct mptcp_addr_info *addrs) { struct sock *sk =3D (struct sock *)msk; struct mptcp_pm_addr_entry *entry; - struct mptcp_addr_info local; struct pm_nl_pernet *pernet; unsigned int subflows_max; int i =3D 0; @@ -642,15 +641,8 @@ static unsigned int fill_local_addresses_vec(struct mp= tcp_sock *msk, if (!(entry->flags & MPTCP_PM_ADDR_FLAG_FULLMESH)) continue; =20 - if (entry->addr.family !=3D sk->sk_family) { -#if IS_ENABLED(CONFIG_MPTCP_IPV6) - if ((entry->addr.family =3D=3D AF_INET && - !ipv6_addr_v4mapped(&sk->sk_v6_daddr)) || - (sk->sk_family =3D=3D AF_INET && - !ipv6_addr_v4mapped(&entry->addr.addr6))) -#endif - continue; - } + if (!mptcp_pm_addr_families_match(sk, &entry->addr, remote)) + continue; =20 if (msk->pm.subflows < subflows_max) { msk->pm.subflows++; @@ -663,8 +655,15 @@ static unsigned int fill_local_addresses_vec(struct mp= tcp_sock *msk, * 'IPADDRANY' local address */ if (!i) { + struct mptcp_addr_info local; + memset(&local, 0, sizeof(local)); - local.family =3D msk->pm.remote.family; + local.family =3D remote->family =3D=3D AF_INET6 && + ipv6_addr_v4mapped(&remote->addr6) ? AF_INET : + remote->family; + + if (!mptcp_pm_addr_families_match(sk, &local, remote)) + return 0; =20 msk->pm.subflows++; addrs[i++] =3D local; @@ -703,7 +702,9 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_= sock *msk) /* connect to the specified remote address, using whatever * local address the routing configuration will pick. */ - nr =3D fill_local_addresses_vec(msk, addrs); + nr =3D fill_local_addresses_vec(msk, &remote, addrs); + if (nr =3D=3D 0) + return; =20 msk->pm.add_addr_accepted++; if (msk->pm.add_addr_accepted >=3D add_addr_accept_max || --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BFF563B6 for ; Tue, 27 Dec 2022 18:21:41 +0000 (UTC) Received: by mail-ed1-f45.google.com with SMTP id l29so12978118edj.7 for ; Tue, 27 Dec 2022 10:21:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+fd6j44evsdxLh0WpMpw+J+gHn9aMiDodElArLsrBkw=; b=q0hwGtzjxeHHRfXPu0dK+c/oadyIarW2yPQ3MhlbA2iBg2QPlKAFQp0R8scPRDMk0U pWwEbCJyFHsljVhF8Kj0K8RyaMIaqesJTiR8t1hrtoD5WmrSBggmbeEEMIt2S+PZuJwB 3rIyO08K7HVVTRsT5BtI7nmS3qHxoizkQcAtmwTYklu1bGJbFm0fd46/GFxUewvXETWn DQlNcaWSpomhHqdmfp27RdKVSzZLHxBA2a5M8SbkyXF3B74DVVuiXYXngybz6dmoDGfr 2DSdisbBKLoCre4m0GXJPrIrtFxZq3Rat/YDljukuchfUya1Z0L6xIH5u4tgfVEMLlv4 9NHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+fd6j44evsdxLh0WpMpw+J+gHn9aMiDodElArLsrBkw=; b=2zxqKYN9zJBMaSc2ExlicOGI/XYs25ouQxy80DAExQql+hgA1jqo/CYhEMDvoetH29 cX/IA8w4D5FOnF+Bng0AdWaMlVbn0I76kz7VLH3RhA17HSPQNW9SVEavrPh9oQeUtBki ceCp4DaDP+JYR6HSIGAg3yviebQ1BOp/ySNvOtw9NIkgLAKEgx0LrMoi6xGcdzGTTUqJ 0dClaAqYCXZGRmiUxH5q4cJdxw7LjpuZWFaWPtluAZ7mVu6yUZkBQYWlOK+BCZK2USFm K8+mkZkCD16rXIotmXsqDXIQ5vFYfXSmauKdfbZvkr02U8mcel/pDr4L/wZDBNTAdrvP qgqA== X-Gm-Message-State: AFqh2koFvIqMIBHLOU4AcoOBZUqObU65F5D0TEnvOlItTl/cY6D8lUyE 89R3C4ErApLncblalDTrXsqFqvdsAVSgdC1Rbb9hHQ== X-Google-Smtp-Source: AMrXdXtFsaf4JtBZCgcg37LECq8acTAjjD/ERukIevH6LCs7ky3l8QoTZq2gHUjye5BssoVORnWy4Q== X-Received: by 2002:a05:6402:1caa:b0:475:b14a:f83a with SMTP id cz10-20020a0564021caa00b00475b14af83amr18525185edb.15.1672165299360; Tue, 27 Dec 2022 10:21:39 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:38 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v3 05/11] mptcp: propagate sk_ipv6only to subflows Date: Tue, 27 Dec 2022 19:20:51 +0100 Message-Id: <20221227182057.2288816-6-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=867; i=matthieu.baerts@tessares.net; h=from:subject; bh=3kFlGna5rOeu2JRWjKHDAzgElplXk4ztNIOnJGHXgXY=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd6R0xH4p4pVLmey+SRnwbbsIZ0WGxSsK61eWLt hTDcQo6JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3egAKCRD2t4JPQmmgcx71EA DgH5avFmnHEyIgSmKkA1Jmfiq23L0XUQq7WUIuJB6QD4SDy30PSdfq0hImgrGTw40a75pmQX9cSL7K dR4RExmA4lypeDDfoRgzXs7LRY3Cv0eCfOrFKfWkYG7ibVbqVHcyp0+sKhpMQGby3PZ1xOIkJrWgV1 Fa17dVrihAQf1kwO288IGJNEYLZQR+TtiGOfGY3JuIRr2p7EjZgSc98jYkVkQbd+VixU0FDkLbhmve zEu7bejQYykOBBJR8A8liQ01oyRgruHzlpdTk3GChFHEGtCPocvgal+gqUyXA+j1puSC84fs5tPaX+ 5XU6r84CIbmt/xdWOOIEjKhzgK6QqTWmvWBi6zIWkg0UB+MlOUiROtP8iE9WDvczrvBlaFykXw42Q5 sVHPkVDzZReYYG9q2GdzdqATdjAc1BxLaR4ERkd0g3BEcoOJZSqBXcRb9ExTJmLdNhy+ek+Cn43Rp+ WaZNRnOUdnkudVarjMnGFsFaZ2uOvaOgQqdIOPcK4OYYTAWA/1XQycYrX3qsEg/qNj/YfQjFz0q3+q vS+MwEUkpL2kOq74cXnlYRK9qyigT4CRckTxXhgTC101zIDSD9if0pZ+0unry/lJDiAe/rFHTK2fhB LKQ6cvyVMW9EZAe0aAzcIGmsVuMKZIZauVBl++MFMYcNo1LR7nHn7LQGli4w== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Usually, attributes are propagated to subflows as well. Here, if subflows are created by other ways than the MPTCP path-manager, it is important to make sure they are in v6 if it is asked by the userspace. Signed-off-by: Matthieu Baerts --- net/mptcp/sockopt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index 582ed93bcc8a..9986681aaf40 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -1255,6 +1255,7 @@ static void sync_socket_options(struct mptcp_sock *ms= k, struct sock *ssk) ssk->sk_priority =3D sk->sk_priority; ssk->sk_bound_dev_if =3D sk->sk_bound_dev_if; ssk->sk_incoming_cpu =3D sk->sk_incoming_cpu; + ssk->sk_ipv6only =3D sk->sk_ipv6only; __ip_sock_set_tos(ssk, inet_sk(sk)->tos); =20 if (sk->sk_userlocks & tx_rx_locks) { --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 246A463B9 for ; Tue, 27 Dec 2022 18:21:42 +0000 (UTC) Received: by mail-ej1-f41.google.com with SMTP id fc4so33532420ejc.12 for ; Tue, 27 Dec 2022 10:21:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sqP1m3ysIMg0iSieM9IErT6eQu57d4t7jTZbtjotdQo=; b=sppVVW2dpTb6AoyzQO9lHIargc4OvboetyZHtHdUUb4bRBm/H3Qx412R2GgRpb16B7 8n7DXiSM2JPIA5+FDWen1JQMrODtPL2aJCFB3dNiI6WPZUUCu29XQ3jUhRlsaPbxAKVp wA1+a5RVajd0qEQayVV68umyMPahBIumy6VDl3SWaAlXVy7WCJw9+aoTNy8X4bJ1VdUQ 4lE/ptfRe0mvz63msERwd1Pjk2jbJ2nGCKET3MdFxk1vy+g5AFwPdrV9xGShyJmEgMqp uuhZ42pmwEts3MohYSwLEa4cvwkv+r/gT1h4f/M/W4fEadguUDXjOk0YT1rit2PXFdF2 9awQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sqP1m3ysIMg0iSieM9IErT6eQu57d4t7jTZbtjotdQo=; b=HApeBmTPVjdm+OUa19edaqMQDC0pxSeQeD9XLwJ9hNp7fdnbkuGUlRt96tFaCDHh/Q EZaHd88baCAtNhUr9bvnz2rF2A6M3nUu7NhWgDsaggU0+P+5z4j+a/PvAx95aZi5u558 Ce3/K7P886Jbmzr5fq5psGV1oqpOp6oavX2O/9swB89Dk9zrMr0vpT12xfgrQXEt10X6 kJFxT4GlVfnB41oVA428FrFE3U2ScsZoDjDuzor3JveB6e5DpszmWQH7owg3W1ikHVIv lcAIpvX9qMCVVN9lNEPUw9b/F4gGctrj+4a76R/2IOHUZyp9NG7nD9njUwl5vs6ICK/3 5emg== X-Gm-Message-State: AFqh2kpvd525m/XbJZgVIUZMHX1SetOadFPkUb0BhW1IO5VcQvQdmnG/ QIjhLt5NUbJ5fJm8p4/7nmS9fS4DGvQvHAxhb9V5Dg== X-Google-Smtp-Source: AMrXdXvUt86k+3bxB3RIEhISpHAJSXfz7w8MHm5gHCETMYueM0byQBE05z7wcLcNaP93iMALjPE7Ew== X-Received: by 2002:a17:907:c301:b0:7fd:ecee:c8ba with SMTP id tl1-20020a170907c30100b007fdeceec8bamr29927365ejc.42.1672165300169; Tue, 27 Dec 2022 10:21:40 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:39 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Paolo Abeni , Matthieu Baerts Subject: [PATCH mptcp-next v3 06/11] selftests: mptcp: add test-cases for mixed v4/v6 subflows Date: Tue, 27 Dec 2022 19:20:52 +0100 Message-Id: <20221227182057.2288816-7-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3187; i=matthieu.baerts@tessares.net; h=from:subject; bh=PF+uTEj4sVeWj5WOdqleYcs6AGKouaOt3Y7ZNlAhaDY=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd6/u9W3XrLYTL0rSfmiQqGD3i+cS34N+jOWwX+ +9eeMG2JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3egAKCRD2t4JPQmmgc6mOD/ 9mUziO3/vqgt7DQv5o8qkW33ZcG+RAl6EyVLv+9Thx/DDlxU669hMnX1bHY2JJN+2Gav6/ThmUsgG5 2Z5EGiXsdI+U6EGPpwWvcWo0Fh23Fljf0roAQTvDB0eANz13RB6EZvK0ZNT0TnIW/R6dAV0ZsVvw7r vuNKAvyYohjDDhyAAHnfAnJdTb80Gh19WjrkSvaiEhZ4AhoWKZ7tnVT0NEp4LIgGjTNtRjd6d+G9rx h2qpIGCDkgPYYwGQXIhOQC8v52SoX1GhtAs3AQI+VsghgYWdJCRpSNUXOUsdFLBGo+66dFC/T/W75F h7if9FSoX4PaprRLAac86A/f/3I88RI1vlUiX1hmFYnDr2F2ArlYkhxJmFdGxfzsqe/HM9m+2uGRg4 fYpJ5WFA4/dsqkV36rOCFki+ptKQnEFqh/pUdsus/Oc0AXwXafgJIjAYnYFrTNUOawb9LaOyOf1Y8E eOTEAaxoHuCPBq9q1P4PYMxCGw+BzHukwKvPSBJLCwZPns//9D4iByaMunWCOZbrnqW4IOqWi6rad6 nn/PBUgUafg53nlrIzDrZtk0Qv2USgNVNBXaH2R+XroGl/xb+rE8UCzN1FsfP4xu/4JG7thsXrpMdO 4We2uBEMq+UeiNXE9jWk1VihefyYiHxBSGm118M9qNLeH55n5u2XxplrNVnQ== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Paolo Abeni Note that we can't guess the listener family anymore based on the client target address: always use IPv6. The fullmesh flag with endpoints from different families is also validated here. Signed-off-by: Paolo Abeni Signed-off-by: Matthieu Baerts --- .../testing/selftests/net/mptcp/mptcp_join.sh | 53 +++++++++++++++---- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index d11d3d566608..387abdcec011 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -774,24 +774,17 @@ do_transfer() addr_nr_ns2=3D${addr_nr_ns2:9} fi =20 - local local_addr - if is_v6 "${connect_addr}"; then - local_addr=3D"::" - else - local_addr=3D"0.0.0.0" - fi - extra_srv_args=3D"$extra_args $extra_srv_args" if [ "$test_link_fail" -gt 1 ];then timeout ${timeout_test} \ ip netns exec ${listener_ns} \ ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ - $extra_srv_args ${local_addr} < "$sinfail" > "$sout" & + $extra_srv_args "::" < "$sinfail" > "$sout" & else timeout ${timeout_test} \ ip netns exec ${listener_ns} \ ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ - $extra_srv_args ${local_addr} < "$sin" > "$sout" & + $extra_srv_args "::" < "$sin" > "$sout" & fi local spid=3D$! =20 @@ -2448,6 +2441,47 @@ v4mapped_tests() fi } =20 +mixed_tests() +{ + if reset "IPv4 sockets do not use IPv6 addresses"; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow + chk_join_nr 0 0 0 + fi + + # Need an IPv6 mptcp socket to allow subflows of both families + if reset "simult IPv4 and IPv6 subflows"; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 10.0.1.1 flags signal + run_tests $ns1 $ns2 dead:beef:2::1 0 0 0 slow + chk_join_nr 1 1 1 + fi + + # cross families subflows will not be created even in fullmesh mode + if reset "simult IPv4 and IPv6 subflows, fullmesh 1x1"; then + pm_nl_set_limits $ns1 0 4 + pm_nl_set_limits $ns2 1 4 + pm_nl_add_endpoint $ns2 dead:beef:2::2 flags subflow,fullmesh + pm_nl_add_endpoint $ns1 10.0.1.1 flags signal + run_tests $ns1 $ns2 dead:beef:2::1 0 0 0 slow + chk_join_nr 1 1 1 + fi + + # fullmesh still tries to create all the possibly subflows with + # matching family + if reset "simult IPv4 and IPv6 subflows, fullmesh 2x2"; then + pm_nl_set_limits $ns1 0 4 + pm_nl_set_limits $ns2 2 4 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal + run_tests $ns1 $ns2 dead:beef:1::1 0 0 fullmesh_1 slow + chk_join_nr 4 4 4 + fi +} + backup_tests() { # single subflow, backup @@ -3120,6 +3154,7 @@ all_tests_sorted=3D( a@add_tests 6@ipv6_tests 4@v4mapped_tests + M@mixed_tests b@backup_tests p@add_addr_ports_tests k@syncookies_tests --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E6F8563A5 for ; Tue, 27 Dec 2022 18:21:42 +0000 (UTC) Received: by mail-ej1-f41.google.com with SMTP id gh17so33628859ejb.6 for ; Tue, 27 Dec 2022 10:21:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=drNb1S9tj9maCJICCjpsuyCFdKnsYG7mF64cROKJf/w=; b=L/wmeKgZWm1sMByRqIElyvhQkAGr89JBMfmCuBltRRf6qyPQY6Dl8izfAZlIX+cNEh roNZDVSHVIGuEkwx7wbD/J+hRHxGfk8F6+owjQxDI0zK+qi+yalfz3SxqS6IkLrCGuvt q3TcX8uV+rtl6cOrrzYUrpvDore+GW39IY4aVl38LxWC+BDFp1y+KBWw0YlHdmuQJ+mD IHVI1+8BnCxz70wNMFErtXAwg7d/HyUId/MI2VfZCt+alH0TxLvylDee0LLDCFMr0YUB EBDU8JQp1PvtVM3fRA20XHOQ+WNSDTryd9vnPQ5hBSuGbZeL6bOd7BLVATdXQ/yMuoGY cKdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=drNb1S9tj9maCJICCjpsuyCFdKnsYG7mF64cROKJf/w=; b=Za4LGiYw2xHpCn8EQubISa3F28nFo9QXbw4NO15w5TURlmcwD7NhY9xMTO9U7aCs22 +eBX4A+MvreMfRAaDECQLawzmyF/jPGkqonphXGXZKAf0QQzstUP4pELKI3YVTBc7/jj oIzyJr1OxaSrFyDNHUExEJe7tJxowFz9xlADOMsi6Z93GN4xBJr+hEW2MRyj1koD9U4o 2xoYj1XcckHxrz0PjzegSURIuVZfslPxiMjIi4TlpTHrjUZKyd16Padh5tdEF/6V8Doq nowd995JMtnr8JAUgwzVPzoK+ype0HsIsgKzesZYZOcDMTkOMwptJYsMSedgpkx/fpeR 8UQg== X-Gm-Message-State: AFqh2kpq1j6jvgKM07UEWF/iuE3ol8gRDUFEhw6Ldt6FrApzgWnqtuOY L3xq4OhfSQFUfSxVjBP5vdhKsUwY+35g8xSxrr/DYA== X-Google-Smtp-Source: AMrXdXtbqXbecQix53KEXIuuhPSYEEC89tXSM1ZnN4RmlPiu5+aci3HP2ZPIbmlEP7nij6OAX2tkZg== X-Received: by 2002:a17:906:b108:b0:843:a9fe:f115 with SMTP id u8-20020a170906b10800b00843a9fef115mr18922543ejy.32.1672165301036; Tue, 27 Dec 2022 10:21:41 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:40 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v3 07/11] mptcp: remove assigned but unused value Date: Tue, 27 Dec 2022 19:20:53 +0100 Message-Id: <20221227182057.2288816-8-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=653; i=matthieu.baerts@tessares.net; h=from:subject; bh=uZ1GtsrShc9C2g5MMHxhX8M/nNp+YYPJg4WshuQZCy0=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd6zdwNwhX5GIi12lg2zt1E/c6//XWQ04V9HwzN HqFhr5CJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3egAKCRD2t4JPQmmgcwSdEA DmG29nqOwmE2TtMeXgRSwfVtBePJbuGdC3h9Ukyc/RNTonYvd1xjty4ntDI+S0JTFcwzd9Lq4rTV8s aYrCa57D21bMVFgtfGtrpL0wjtOZIrn6batlMhN+PO/C/yIaOEK8OD8KukbxIONZ4+b657qgSfeSoc 3xJ/5RBzsO7g0rEzcvZUwIxN1cQ1NdbtjBprpkWrPsrV5HN2+zD1vKHzhZrKKMHD4BBxP1dXQ2Uaeg 6aeqLL1eook8xYnr4rBRJNSC0s+Fb2A5a3NKTi3TVzL4RAXm7hNFCWji1VBkFSUWf2ILc8vH1uh0wU jQ/qiOb+TLEjUf2UyMmWM3P/5oOfQeKEWtqctYkw3E0bV7JN/eDipDRoizxBtlxVOpsf/zwcEtVqzL SRfYknj0o4vcMHhMITQsMMCezC2IOwCCxG55yP2OFPzijx62ZTCN2MN1CHwYAUvUtZi3pI/f2V8CaN i64pmTSawqX0V2OUvNli1FFDSykhdi7LZCHNhIY5G4XQBoB93hBb4XjtZEAQs488XiVFXi29Qdm9VK 1ORIJQMhiPB5FOvdyx1WkVEIt3qNlxNjELsWcjLMd83MAynJMsvICpWEbIE6c/2vRSO7vTu4HYPPsp 00SkU696RlD+q+KE2SORW/q7/1C7AS8H8I+Zsw+ZTIjfRVYrGsUtixAsuEPA== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 'ret' is always set later before being used. Signed-off-by: Matthieu Baerts --- net/mptcp/pm_userspace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index ea6ad9da7493..be389dad3f0a 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -34,7 +34,7 @@ int mptcp_userspace_pm_append_new_local_addr(struct mptcp= _sock *msk, struct mptcp_pm_addr_entry *e; bool addr_match =3D false; bool id_match =3D false; - int ret =3D -EINVAL; + int ret; =20 bitmap_zero(id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); =20 --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9DF263B6 for ; Tue, 27 Dec 2022 18:21:43 +0000 (UTC) Received: by mail-ej1-f51.google.com with SMTP id jo4so33588371ejb.7 for ; Tue, 27 Dec 2022 10:21:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T6E6SLEzYpkMhImNY09/lPTYQtXlDI04cgDyI9gS+K4=; b=pQNOnfMhabCOH4kajq86xFVlEbWgcfqeWQBK0rUJXtwqKxwXpouYbNZvNvIjUy2Sm7 IPtYrGSiCeOkforCfUFtM91u+gaGQX6fhI9gofIKYfbdttYknm7TFZLUnMSn/2euZyCo 0sQhfTEBA34KD/qBWteme3jOIwCLJZ8KXtjxnA5un6t2LsjQWlDePQmumkazkX2rldWs N4xRFz/DqiITRuh4kwLZNyLtPU3v5i+rzeE5jerr/otFVIspdbaM0+0uBm1GuelKJuar jZW3mPudFTXXB0LtSeDpIWusMQq62srWwAGlrNTcFVkAUajHBHW0R6jLswF+OobV9qLL YQkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T6E6SLEzYpkMhImNY09/lPTYQtXlDI04cgDyI9gS+K4=; b=KAyj8E+YVrski6fDHlWOFjwWys44oq5k2WtLjyAxtFgp1fz/pkSIeO4yDJUq78T8UW v6O31lt6N4rzzF/kpIrJbW/iV8YdBJxSo87sCIoQguTrMwJXfxnDwV6JB5/PSSqgRc8k dGCzqKf/xghTJgNkaqZhBHU6rYs22v1LSyBe5fuTCHRFbYRh0+BPEEoCh15jE6CMnCAT R2Lm0IHGVLYepNQ1JwwvApYNEELnCBfGOJ8q38MiJMSau0v66fTnbNSJL/PONumKl8Ap Qcyk8l/Sh7n7DQ3s1Hgx4dEby4o0CHIf8jFRwBxEo+9r7CbdVUybzGPnjul26ZT9vNY+ QyVg== X-Gm-Message-State: AFqh2kq2uU0ZMWM3UTBGOEdxSSMwNy1xQUp+c8e5J209ei+Wk+9ZxiQg 5jFPeaaW4MYqti263c1kBgbAlrfIulrxc6hT1DIzOA== X-Google-Smtp-Source: AMrXdXuYdlkvvhMo7JR7IYvuEfk1M6RumAut+2E6CP6yXDiHskTuAGy+yOCskPAN0VzmwVbkvDvC5w== X-Received: by 2002:a17:907:d48a:b0:7c0:dac7:36ea with SMTP id vj10-20020a170907d48a00b007c0dac736eamr19582726ejc.66.1672165301824; Tue, 27 Dec 2022 10:21:41 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:41 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v3 08/11] mptcp: userspace pm: use a single point of exit Date: Tue, 27 Dec 2022 19:20:54 +0100 Message-Id: <20221227182057.2288816-9-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1113; i=matthieu.baerts@tessares.net; h=from:subject; bh=X6mqozSm9v09ThbI9m6Y8WiJzcaWWHTPW/GoY6CoJDo=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd6qFgL4NLpdLS1LTBJ9+x/e6ExedvLDzWRLObe Cf+N4dqJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3egAKCRD2t4JPQmmgc4XjD/ 4x+z/WbkFSJibJI+12o7b8lbtvdHT3wNkqMQxY/w9AGLieAhn51GNU/sG53G/XWIAN8654BJX/LL3i GXnUJ3SFxQSB5+lI6dhGYkm+t65UICvpyCtFS2b18vfXvZmqD2v5xiK0RRmnAd/+MIquVq4IsnUHpu XRTEoLTyeK3gKR1W6PSbQdm4p09EhgcRvx+AXvaNy+KcnGfb3GMokaoA1JTyyW/5rwWe6VBdoqHnAQ s6xZvGeAmfUJTtGGdmWd7F88hDuMsoPMJvmahcDFlCedcndbF/tCwDdr83dD2AeIThTJUs3+AcXvmd q0l5WpwxX8UIZjvRkEc1FijMUlf+spchgZVX/2tGrlVnAe7IeSGhfUSeptJ4UaZAsOPUfPw4k/uFK3 84+t4NWxfBOIxy+6vwmaNNdorfRCOldiCq06Ryy3h6y2Zib/k84MPbH42X2hm0+1PBTqSLWZmWhkf6 dwYjP0+ek0yviNF5CBVC8jTIMpckMeenREvysdm0JbUFu7RNyNavSXL2IWyuqSFoyi/TQBV45NflJs sS8rZ6204kIRlh5rGs9gp6T31ORyFZphpVyi/j1TtDPE3S9WsKc1KhHQrQgjUaJz3U9Ufyt3ViUnn8 LbkHvtHWJ7yx2Uuf/h/YwPIMoxjb6eNmS0Ft588qL7v3TLgQ51nec/gnKVRQ== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Like in all other functions in this file, a single point of exit is used when extra operations are needed: unlock, decrement refcount, etc. There is no functional change for the moment but it is better to do the same here to make sure all cleanups are done in case of intermediate errors. Signed-off-by: Matthieu Baerts --- net/mptcp/pm_userspace.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index be389dad3f0a..27badb5a5820 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -59,8 +59,8 @@ int mptcp_userspace_pm_append_new_local_addr(struct mptcp= _sock *msk, */ e =3D sock_kmalloc(sk, sizeof(*e), GFP_ATOMIC); if (!e) { - spin_unlock_bh(&msk->pm.lock); - return -ENOMEM; + ret =3D -ENOMEM; + goto append_err; } =20 *e =3D *entry; @@ -74,6 +74,7 @@ int mptcp_userspace_pm_append_new_local_addr(struct mptcp= _sock *msk, ret =3D entry->addr.id; } =20 +append_err: spin_unlock_bh(&msk->pm.lock); return ret; } --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4BBEA63B9 for ; Tue, 27 Dec 2022 18:21:44 +0000 (UTC) Received: by mail-ed1-f53.google.com with SMTP id b88so12748550edf.6 for ; Tue, 27 Dec 2022 10:21:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7hSujlS3nFnOPbHBlmg6jHCCFtLwoDWGFBQwBrhobyM=; b=mZMePtpJeQLrICjPZQkbyK0oW8p16vT1RrNP2rJuBY8uhZnXagNs5Qy3o3HqBcndvH OJm8C/gec0Gw4c6m4J1Z3uDjEO6w0QCWdqM8d3wvSUCALAqdVBVgNPRt7MG9sUG/WwcK ceUK3Hy2JOdJ2CguxjXnXHvGCL1ux5QKBk+s4fZZBcHgTHRW5J2e9vhozWVYSMS1vHTG bY5jvcqkqR/SAITe37QM8MJa282pMVl3nn0hpa9YbJjO/VZ2QXuKRNeRVxgMBwO2lP6k tT0/xCv92Yb6v0NTWU6w33FxieRqj5biSvOwbBCMjfP7pmALXRPaFb6vLBxnkx9BAsGM hEQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7hSujlS3nFnOPbHBlmg6jHCCFtLwoDWGFBQwBrhobyM=; b=RbVD8dRpHyPWzmcnk4ACT4ZAg5/2IUAs3De3mdUp7JarGeijVS7aoRkttcRAm3+rW9 WhB3QG3VA9kVpb3bv6Le5s67FBjHao3eL4cvKKOjH0PnoE5mPI4osjIZ/OFqrDUdPyYq 0tE/h0QdYlbAuABiLgHAx6rsg8NHWgrCyIgDMJVelPUxeovdbZo3elNNMH3A64U7ZgNl hkPvyk5VJayt7aW1lxpAzSf5YNRAEv6nr25V8UdI/SnQxwlFwY4mWm2o8K2KMBKlXBvf 8ZWoNPFPJ9mGTA+tOk3jGEVT7C77XsEePzSN9ZhrcpL/O94Mw37NfUmCbPEPYXSeGfL/ YssQ== X-Gm-Message-State: AFqh2kqfG3I/b2K1UvdIIfCFocBLnDq49iu3P6xHiEEn2nhoRdHNy++9 mKgXHgljzhOqUfGio+kOTN2HcA7bykTzVVoW7xaMLQ== X-Google-Smtp-Source: AMrXdXsEFJCqpLDGkKLaALLvNgGX1GNYWLzobJqVjqXgazhuKC+fBwuPyenaZvrRZDZTrbZfqd9pAw== X-Received: by 2002:a05:6402:501f:b0:461:5e1b:85b5 with SMTP id p31-20020a056402501f00b004615e1b85b5mr25550991eda.2.1672165302431; Tue, 27 Dec 2022 10:21:42 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:42 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v3 09/11] selftests: mptcp: userspace: print titles Date: Tue, 27 Dec 2022 19:20:55 +0100 Message-Id: <20221227182057.2288816-10-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2588; i=matthieu.baerts@tessares.net; h=from:subject; bh=RRBhlicoV9KULZPIHN3Smnb1BSOOw5KsDm73nyunhLg=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd69pAicw2OjdxXoHaBF5Hmb6JBXg98D+zBAm9v kUluJ1uJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3egAKCRD2t4JPQmmgc7aIEA DCse5YBxnFMQPF2FNpizrxahpzlW260/CeVpSbnnQJ6BxnGrDmaIw+kpuTIqLkjgwFjm7U2ktKg8uU niyr4hVJ1Ht54LdaHHkALvJAff/FhMCEsCUPtNTe9V50DX4n89GSBU+9Xm9uxucrHrbyasYq1nE/WE fYHbZw5dm2iAomN/j29vt/jC7BU3jL2oju6ZL0hAE249fNCCESpy4Nn+Sf/9idjORN5XdvcgKqxQOv RLLJ/mV35Q+Ag7PgR5vC/9M+4FTS/BO/Yw8cs9L+Ou3RbfIQEjHOKF1ElKao2/xLO2U8Svi6Flvn6c Kl6Jqn3dY9fNoPWae3lIiN9KBmCBS7XXG4sq9D4gHo8ep/jRwC9q5A+NDEBi4GiaH8Cj5qr6+IT0Ye 60iUgF9Pg4FIjqbXXsalQs8wBJxPJbeUDRFq2hSvFLzgvFdb0AnMgc+cwRbAakBzTIXI5BAuvQAr8B PvcBHTf+gAxIWCqk5w0xXiSKuXy5c/bSTso/G79uofBsGT3+rH7bv33jexuhUoi98CAS/pZqDtCF4B JV4sBC43V6IX4CtAe5slijwqndR2Bln+Qogchj/7IOq0MZuV46Gi1Gb3nm8K5EJz6rbb8je7hZiSKt SB9OkBMqroJhTVJt+hSBfcfBfd++RwkY6OGsHcvs/Ki7aI8pEnzMXGvOkVbg== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This script is running a few tests after having setup the environment. Printing titles helps understand what is being tested. Signed-off-by: Matthieu Baerts --- .../selftests/net/mptcp/userspace_pm.sh | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/test= ing/selftests/net/mptcp/userspace_pm.sh index ab2d581f28a1..d2d7452d0d73 100755 --- a/tools/testing/selftests/net/mptcp/userspace_pm.sh +++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh @@ -43,6 +43,11 @@ rndh=3D$(printf %x "$sec")-$(mktemp -u XXXXXX) ns1=3D"ns1-$rndh" ns2=3D"ns2-$rndh" =20 +print_title() +{ + stdbuf -o0 -e0 printf "\t%s:\n" "${1}" +} + kill_wait() { kill $1 > /dev/null 2>&1 @@ -108,6 +113,7 @@ ip -net "$ns2" addr add dead:beef:1::2/64 dev ns2eth1 n= odad ip -net "$ns2" addr add dead:beef:2::2/64 dev ns2eth1 nodad ip -net "$ns2" link set ns2eth1 up =20 +print_title "Init" stdbuf -o0 -e0 printf "Created network namespaces ns1, ns2 \t\t\t[= OK]\n" =20 make_file() @@ -255,6 +261,8 @@ verify_announce_event() =20 test_announce() { + print_title "Announce tests" + # Capture events on the network namespace running the server :>"$server_evts" =20 @@ -359,6 +367,8 @@ verify_remove_event() =20 test_remove() { + print_title "Remove tests" + # Capture events on the network namespace running the server :>"$server_evts" =20 @@ -521,6 +531,8 @@ verify_subflow_events() =20 test_subflows() { + print_title "Subflows v4 or v6 only tests" + # Capture events on the network namespace running the server :>"$server_evts" =20 @@ -754,6 +766,8 @@ test_subflows() =20 test_subflows_v4_v6_mix() { + print_title "Subflows v4 and v6 mix tests" + # Attempt to add a listener at 10.0.2.1: ip netns exec "$ns1" ./pm_nl_ctl listen 10.0.2.1\ $app6_port > /dev/null 2>&1 & @@ -800,6 +814,8 @@ test_subflows_v4_v6_mix() =20 test_prio() { + print_title "Prio tests" + local count =20 # Send MP_PRIO signal from client to server machine @@ -876,6 +892,8 @@ verify_listener_events() =20 test_listener() { + print_title "Listener tests" + # Capture events on the network namespace running the client :>$client_evts =20 @@ -902,8 +920,10 @@ test_listener() verify_listener_events $client_evts $LISTENER_CLOSED $AF_INET 10.0.2.2 $c= lient4_port } =20 +print_title "Make connections" make_connection make_connection "v6" + test_announce test_remove test_subflows --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 32F8C63A5 for ; Tue, 27 Dec 2022 18:21:45 +0000 (UTC) Received: by mail-ej1-f47.google.com with SMTP id t17so33592614eju.1 for ; Tue, 27 Dec 2022 10:21:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XFrwfO0U3J+sx34kW8QI9rGrLqRX414oIawZFVlbbX8=; b=7iDp9NpwQa2oor/3o5gRnZsNTH0DIQyu/Uxp3y45/7gQL8G5qot5RD9ht1xSiMXiBI Aw3POllwJ5UbhFXklDHtBgYFTomaIsAHUfVcYcfKaGmLvzyN9oHcOtx/CE0VlVCR1Ai9 B/tPCgzbg8OwW/H+Ec1e5EwrxV1ME8waM5XsIBghZ6eM8sBGh+r7O6VWSs77IxCnxd1u EAWrQQn28/eD8Kk6G3lDUR8YXRK+fFbHe19B5rLox3/66ADu3pK6YeD97xGOciJBAAih 0+9drJn+t/DWooUdCezFmUeASDU4WSMq26gVAYfTTFFoIaij6VHc/fBPXhLEWwcWtaUw 8eNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XFrwfO0U3J+sx34kW8QI9rGrLqRX414oIawZFVlbbX8=; b=ev/m7vUjRSV9zLAu6At9ZYO/M7Bh1qvlc2hYIQWZux4oY3F/zkMH8AvuCYfogbyu4N HkGyRmGhjiB756Q+POSlem48zOLn4XZ3oDRJgnVGfV9SAG2PLZ15WGtcp38ygKdvxSWe oAGcFFxIcLIdxBtw6imUIFT+WPcf1k2a6hE1ckkU0WgY1bStg+Zl1p3YN2+vgxDBcUL4 JEyaofRQoWFUQdCoqwILul0K+74Oz12lkcprN6IgoGFvCZuCgZDIsjIEcP+5+/CFuR62 M3PmWSwl75xf434I5HJYiYGsLOwiUjKYz7IVnb8UOdCHiB4MmIeq+xG/xDrKLGjt+yLO e0bg== X-Gm-Message-State: AFqh2kqpg5W9jKucJrXKPA8GfGVn7MG78PhibYoUnuygfvtQd4jBsXyW H4ta1hxXXKw+TiSGPcIIj4zpk0Pi9Rir5rxi1Gob2w== X-Google-Smtp-Source: AMrXdXtD/i8uQWcqcFV5ZZzkRWSFIGnX8q9+uYax+lQ2KfWivor0h7rKd42zvdD4684CfmyEo0DQPg== X-Received: by 2002:a17:906:d047:b0:78d:f454:ba46 with SMTP id bo7-20020a170906d04700b0078df454ba46mr19122080ejb.69.1672165303231; Tue, 27 Dec 2022 10:21:43 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:42 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v3 10/11] selftests: mptcp: userspace: refactor asserts Date: Tue, 27 Dec 2022 19:20:56 +0100 Message-Id: <20221227182057.2288816-11-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3455; i=matthieu.baerts@tessares.net; h=from:subject; bh=LWH+Zbi9mHpSVcb37MxwobKpLqFWvY25Gk0klmSGlWs=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd6+wZBqmUgCJ7+Dqe7/YQaUzxUIdQuf452U02X nIKZyeyJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3egAKCRD2t4JPQmmgc0biEA CBRQ1feLELbTDKmzt9sunUAMCzE/K9F/mZm/AfCODD5m7N3YaMNtNw1t0xpTXqSD4Xl2mdQ8HVHJl/ ktQ4/Q7ZBLGe0UWWGanieLv4GW7y+CNQEcHQoH+4wc/G/fWBoFkrN9/gD4L1SpzAee6t1ka4Uv3g1W IiLNfr/5nc8+wE07zwIblfoWNXtv1/sW9+CA82YYxcXtnJCXH72BE+23zt8Fd6LmmkXBi+DMARUvg+ KkJqwxkXge/gbRrM0HdsS5JRBLsvLlSvG6gF8nBbW6L0LZusPYooekNAAxWvPhJ1GM9ImQvK6ApCFk nAEGAr3TUBXZ3Yw+iSjYKaAaiYfPL99aJqBEyG4sMDwUCWNU3rNaW5IntMmGY1wtxPgelootsXxldv 4iLDuqof3HKsWw56GjibR21zgAvgkJmzY/Oa8WDmcoXOymyGvLyD80GxtHK1Abc7ccqwFSgN7khhUj 9EYY5tZ82sSqnuSzu2lrSQ2DKAzwOkXQ22kwy3VDlUYlDZPLaf9733Zma/iQ6mSe5OyAJFAkNlicQE EBiW8acwIiNCzbdwxH6vubkvqnmw4C6ua+/Ch3m0Hl0dw0Zv9SULuoqiGK0ChnofmwrsdqpZQVLs7T /arroVA9AWobS53idy1zJCL7pyYMzO5lGPt61v7is7Ov2oJvkUnee4t9PMlA== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Instead of having a long list of conditions to check, it is possible to give a list of variable names to compare with their 'e_XXX' version. This will ease the introduction of the following commit which will print which condition has failed (if any). Signed-off-by: Matthieu Baerts --- .../selftests/net/mptcp/userspace_pm.sh | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/test= ing/selftests/net/mptcp/userspace_pm.sh index d2d7452d0d73..942b1b341c5b 100755 --- a/tools/testing/selftests/net/mptcp/userspace_pm.sh +++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh @@ -223,6 +223,36 @@ make_connection() fi } =20 +# $1: var name +check_expected_one() +{ + local var=3D"${1}" + local exp=3D"e_${var}" + + [ "${!var}" =3D "${!exp}" ] +} + +# $@: all var names to check +check_expected() +{ + local ret=3D0 + local var + + for var in "${@}" + do + check_expected_one "${var}" || ret=3D1 + done + + if [ ${ret} -eq 0 ] + then + stdbuf -o0 -e0 printf "[OK]\n" + return 0 + fi + + stdbuf -o0 -e0 printf "[FAIL]\n" + exit 1 +} + verify_announce_event() { local evt=3D$1 @@ -248,15 +278,8 @@ verify_announce_event() fi dport=3D$(sed --unbuffered -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' = "$evt") id=3D$(sed --unbuffered -n 's/.*\(rem_id:\)\([[:digit:]]*\).*$/\2/p;q' "$= evt") - if [ "$type" =3D "$e_type" ] && [ "$token" =3D "$e_token" ] && - [ "$addr" =3D "$e_addr" ] && [ "$dport" =3D "$e_dport" ] && - [ "$id" =3D "$e_id" ] - then - stdbuf -o0 -e0 printf "[OK]\n" - return 0 - fi - stdbuf -o0 -e0 printf "[FAIL]\n" - exit 1 + + check_expected "type" "token" "addr" "dport" "id" } =20 test_announce() @@ -355,14 +378,8 @@ verify_remove_event() type=3D$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$= evt") token=3D$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' = "$evt") id=3D$(sed --unbuffered -n 's/.*\(rem_id:\)\([[:digit:]]*\).*$/\2/p;q' "$= evt") - if [ "$type" =3D "$e_type" ] && [ "$token" =3D "$e_token" ] && - [ "$id" =3D "$e_id" ] - then - stdbuf -o0 -e0 printf "[OK]\n" - return 0 - fi - stdbuf -o0 -e0 printf "[FAIL]\n" - exit 1 + + check_expected "type" "token" "id" } =20 test_remove() @@ -517,16 +534,7 @@ verify_subflow_events() daddr=3D$(sed --unbuffered -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$e= vt") fi =20 - if [ "$type" =3D "$e_type" ] && [ "$token" =3D "$e_token" ] && - [ "$daddr" =3D "$e_daddr" ] && [ "$e_dport" =3D "$dport" ] && - [ "$family" =3D "$e_family" ] && [ "$saddr" =3D "$e_saddr" ] && - [ "$e_locid" =3D "$locid" ] && [ "$e_remid" =3D "$remid" ] - then - stdbuf -o0 -e0 printf "[OK]\n" - return 0 - fi - stdbuf -o0 -e0 printf "[FAIL]\n" - exit 1 + check_expected "type" "token" "daddr" "dport" "family" "saddr" "locid" "r= emid" } =20 test_subflows() @@ -879,15 +887,7 @@ verify_listener_events() sed --unbuffered -n 's/.*\(saddr4:\)\([0-9.]*\).*$/\2/p;q') fi =20 - if [ $type ] && [ $type =3D $e_type ] && - [ $family ] && [ $family =3D $e_family ] && - [ $saddr ] && [ $saddr =3D $e_saddr ] && - [ $sport ] && [ $sport =3D $e_sport ]; then - stdbuf -o0 -e0 printf "[OK]\n" - return 0 - fi - stdbuf -o0 -e0 printf "[FAIL]\n" - exit 1 + check_expected "type" "family" "saddr" "sport" } =20 test_listener() --=20 2.37.2 From nobody Sun May 5 03:15:13 2024 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 028B863B9 for ; Tue, 27 Dec 2022 18:21:45 +0000 (UTC) Received: by mail-ej1-f45.google.com with SMTP id tz12so33576008ejc.9 for ; Tue, 27 Dec 2022 10:21:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=b7p7LMcZCr67MTI56xnF3QP0ztYrIwIPiTqDadCdDv0=; b=f9oTr8jHD+eWn9Gp6g4W3R3NZiKwhmixLBQ1Sb7kj1Qcoqx2R+hd/qLnaIrHqSllrQ Rb2aSlbDEEHSMVzxGwgKCSuICqfGhBfG2HszmfIjHK1GTeIOIDbPpG6W6cdZ5b1b0Wbh BQL1u6W5yPlUPJ6sl8q6D+O6scplqR9hlL7UADrlZWWIWu3XmasESYE4ncirhw/qxo/7 ZvB+2FZ7C0p5leOZ46eMvwxi2Lus5CL7IKFJeO3P6hoeYN0nHdE7eZjOBPslFtNDMNR8 wn/YbXlxQ9orcLsxixRxI+ruwbrjVvEz1bD3dV4esg9SqL0mg3lFtDqCX49HRui1dgcF J3vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b7p7LMcZCr67MTI56xnF3QP0ztYrIwIPiTqDadCdDv0=; b=vNEufXjjgNYMX26ua5fKvlDTZ138J/O7EQekBSCt6R05Met7D/yhUBUODaZ9axsIu1 8andHv1UVfB3rpHU8Yy5H4gp9/0uMHlu5tqoTDyrUkYVTH+7roqNujvL62+8KLeYVftN hkLD2rnpgq8BF79gnZfuJrHsxiCn2ZEvjftgy4tjnPSP6rDreIlkHIZiS3Kbw2Jv6hVB AN8aZlOavPEQPTx7YK2vQtJzio+PYqd5jt4dXOYfppEivSR0/jOXYnTdwgeliou/Qz3l Fhoi9mSwBCwuosigYK4rwg7kezMSd+TEefmlYCGy6jfG7y7ByYf3HsJvunk7pEqGRk/M R6Ww== X-Gm-Message-State: AFqh2kppxYtWKXnvcUBESME7HbiycPnL39kB7ieaMmdhYG7iB1YYUyWC SB0IkFIz/OT1bfeKeuIWfbucoEHLOMfBu+1yqGEHAQ== X-Google-Smtp-Source: AMrXdXshP6WJk9LIlaS2rU4tA01+4etIC7sS2ji5vvlMaf7CCoxRibcN/UcuJTOXK9s0KPE4jnHAbA== X-Received: by 2002:a17:907:209c:b0:7c1:41bb:70ac with SMTP id pv28-20020a170907209c00b007c141bb70acmr18460498ejb.64.1672165304078; Tue, 27 Dec 2022 10:21:44 -0800 (PST) Received: from vdi08.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id o17-20020a1709062e9100b007bd9e683639sm6336612eji.130.2022.12.27.10.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 10:21:43 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v3 11/11] selftests: mptcp: userspace: print error details if any Date: Tue, 27 Dec 2022 19:20:57 +0100 Message-Id: <20221227182057.2288816-12-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221227182057.2288816-1-matthieu.baerts@tessares.net> References: <20221227182057.2288816-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3188; i=matthieu.baerts@tessares.net; h=from:subject; bh=jgD8NFThY1ikqtaw9FfAvbwdd1OEov8zgqa4cyP62jg=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBjqzd6BXB2UR97OAt5No0hcPS/ZeAOpL42vhKu71zM 7+h5q82JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCY6s3egAKCRD2t4JPQmmgc1F6EA CsLevyvMgHwFU0TTuSN9AHhdTtjEHvAi1eZ16b6wM4fdkzfI3aK2t90bsUdOotBSqVLttaUznc76mX xVgfIF6xR7gwvAfBQ15d1w8L4k2Or/0Es2hO/xlrB7sHiqNPn+D7dNms8usL8M2aC1XDjmuy8S+BoH Vo4+h465pbp8ebVoqF+lA4HXucKk2qal8PXtDM60smhBmrzJlTA+xT8rwvFvpynCFRhHQPyUiVkUjK nIAvTnSv6E//X1/rVlAG8jz7aOUG2XevpfTIrRKFb/dYN1sNxbEv6Xel1+CBOjIq3kOMpDWcNDtU0t IBliETJ/9+xh4qYjaYhnYHmioJay9Er4SwNaNzD27vCHAxc7tbeNSwZDNnZTQRE7QZW0Sx5jqLQK7h Dz+t3v83F5NdEvMrxmXhqkb9RY0bmfz1RF3JNnjPEvbNiQMBDu2+BQG+NuICt8QpwfvZqHD2VNQyTy YfEpeJlk/xI/hWgvi1LiQ7kMC5gbV92kQAKEc+b/1h2lNR1tFhKKZNVYIFu0U/0A1Xwv3gORB38T+0 f8v/9wKDRZHZoRb2aATeQ8eIBj1768m+3Kq9WC+mlAOvN26YZLhBS1sZWJoH2O+woOSujq8x7U4K6a OASol+AjQgO9+R6JROodAFA+2A8dA/qiPaDtMHgppSLASSSP/zU+HO67ObJg== X-Developer-Key: i=matthieu.baerts@tessares.net; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Before, only '[FAIL]' was printed in case of error during the validation phase. Now, in case of failure, the variable name, its value and expected one are displayed to help understand what was wrong. Signed-off-by: Matthieu Baerts --- .../selftests/net/mptcp/userspace_pm.sh | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/test= ing/selftests/net/mptcp/userspace_pm.sh index 942b1b341c5b..f38ceb1346d9 100755 --- a/tools/testing/selftests/net/mptcp/userspace_pm.sh +++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh @@ -199,11 +199,16 @@ make_connection() server_serverside=3D$(grep "type:1," "$server_evts" | sed --unbuffered -n 's/.*\(server_side:\)\([[:digit:]]*\).*$/\2/p;q= ') =20 + stdbuf -o0 -e0 printf "Established IP%s MPTCP Connection ns2 =3D> ns1 = \t\t" $is_v6 if [ "$client_token" !=3D "" ] && [ "$server_token" !=3D "" ] && [ "$clie= nt_serverside" =3D 0 ] && [ "$server_serverside" =3D 1 ] then - stdbuf -o0 -e0 printf "Established IP%s MPTCP Connection ns2 =3D> ns1 = \t\t[OK]\n" $is_v6 + stdbuf -o0 -e0 printf "[OK]\n" else + stdbuf -o0 -e0 printf "[FAIL]\n" + stdbuf -o0 -e0 printf "\tExpected tokens (c:%s - s:%s) and server (c:%d = - s:%d)\n" \ + "${client_token}" "${server_token}" \ + "${client_serverside}" "${server_serverside}" exit 1 fi =20 @@ -223,13 +228,26 @@ make_connection() fi } =20 -# $1: var name +# $1: var name ; $2: prev ret check_expected_one() { local var=3D"${1}" local exp=3D"e_${var}" + local prev_ret=3D"${2}" =20 - [ "${!var}" =3D "${!exp}" ] + if [ "${!var}" =3D "${!exp}" ] + then + return 0 + fi + + if [ "${prev_ret}" =3D "0" ] + then + stdbuf -o0 -e0 printf "[FAIL]\n" + fi + + stdbuf -o0 -e0 printf "\tExpected value for '%s': '%s', got '%s'.\n" \ + "${var}" "${!var}" "${!exp}" + return 1 } =20 # $@: all var names to check @@ -240,7 +258,7 @@ check_expected() =20 for var in "${@}" do - check_expected_one "${var}" || ret=3D1 + check_expected_one "${var}" "${ret}" || ret=3D1 done =20 if [ ${ret} -eq 0 ] @@ -249,7 +267,6 @@ check_expected() return 0 fi =20 - stdbuf -o0 -e0 printf "[FAIL]\n" exit 1 } =20 @@ -301,7 +318,7 @@ test_announce() then stdbuf -o0 -e0 printf "[OK]\n" else - stdbuf -o0 -e0 printf "[FAIL]\n" + stdbuf -o0 -e0 printf "[FAIL]\n\ttype defined: %s\n" "${type}" exit 1 fi =20 @@ -835,7 +852,7 @@ test_prio() count=3D$(ip netns exec "$ns2" nstat -as | grep MPTcpExtMPPrioTx | awk '{= print $2}') [ -z "$count" ] && count=3D0 if [ $count !=3D 1 ]; then - stdbuf -o0 -e0 printf "[FAIL]\n" + stdbuf -o0 -e0 printf "[FAIL]\n\tCount !=3D 1: %d\n" "${count}" exit 1 else stdbuf -o0 -e0 printf "[OK]\n" @@ -846,7 +863,7 @@ test_prio() count=3D$(ip netns exec "$ns1" nstat -as | grep MPTcpExtMPPrioRx | awk '{= print $2}') [ -z "$count" ] && count=3D0 if [ $count !=3D 1 ]; then - stdbuf -o0 -e0 printf "[FAIL]\n" + stdbuf -o0 -e0 printf "[FAIL]\n\tCount !=3D 1: %d\n" "${count}" exit 1 else stdbuf -o0 -e0 printf "[OK]\n" --=20 2.37.2