From nobody Thu Nov 27 12:37:15 2025 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 DD67B2F99B3 for ; Wed, 5 Nov 2025 09:29:37 +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=1762334977; cv=none; b=f9G4N64XIKpDOQjDvpPE9moZbmgn9XQhc7XTWbJmRqmeLf4NrRZ28gQVYpKb9cXB1Dcc8cE7GxSNkyct8ao8NCQetfkbCSXwBfiXwCSJQbnQG3qzLflM8LXu0TDmVU1zn8jOuWXQusEPUbK8dVCvqmoWCweVlQKNuyY3IDDjUQw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334977; c=relaxed/simple; bh=8CbuYlkjmsSs7Ma5qCln9dfxTghgpfqX/J3N4LCnDj0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aDjHgZAOtgCQwl0W1Nj/VrAUmJW0b1eEko2DrTplVbIRXqc/vXV9RXajU5SMFzbD976K+JMmEwHIHcNDCcg5FplFhvVIwvj384xibqYqkb7Xdb5CtZDykHDAPjlxnr1ANFej0Im/vqjKjFXt/aAdDgsAJtORQFyRHAT7w0jmdfI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dcNNhPus; 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="dcNNhPus" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 79BD5C4CEF8; Wed, 5 Nov 2025 09:29:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762334977; bh=8CbuYlkjmsSs7Ma5qCln9dfxTghgpfqX/J3N4LCnDj0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dcNNhPusf7mZ2+FP1R8o6bpcHlF1Er/OBjK8RQc5yB41zdovfdY250gU0+/75XcYS oCFm26DA/PHTV/urpE5vBYGRph5xkK8xU1+KCrM68GWhmgKeU3dBMLpLLbf11hvrIt U7y1K9me3PhtwHi+yYIWunm2ORY9q7Q9P3eGlRm+UaRJxovZ2iCln9ORPKZabhTpyl pHzELaW7NWisc/GiCeXspZpF4TP7LcInxYHCfwCHOhS+u/XfCUKwGk88eA58iG69EV prCBHQihvLsk+25OZWMdlVExJE0r6rg70JMvM0COIULKeJDKAZnGAjfd3lAzh43NF0 4VjBTr3Lr3K2Q== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 1/7] tcp: md5: remove redundant l3flag variable Date: Wed, 5 Nov 2025 17:29:24 +0800 Message-ID: <12ffcf64dc2c0b371183bf0c932043ae92e93baf.1762334694.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 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 The l3flag variable duplicates the value of 'flags' which already contains TCP_MD5SIG_FLAG_IFINDEX status. Remove it to simplify code. Signed-off-by: Geliang Tang --- net/ipv4/tcp_ipv4.c | 7 ++----- net/ipv6/tcp_ipv6.c | 9 +++------ 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index b7526a7888cb..2584ccae01e5 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -1512,7 +1512,6 @@ static int tcp_v4_parse_md5_keys(struct sock *sk, int= optname, const union tcp_md5_addr *addr; u8 prefixlen =3D 32; int l3index =3D 0; - bool l3flag; u8 flags; =20 if (optlen < sizeof(cmd)) @@ -1525,7 +1524,6 @@ static int tcp_v4_parse_md5_keys(struct sock *sk, int= optname, return -EINVAL; =20 flags =3D cmd.tcpm_flags & TCP_MD5SIG_FLAG_IFINDEX; - l3flag =3D cmd.tcpm_flags & TCP_MD5SIG_FLAG_IFINDEX; =20 if (optname =3D=3D TCP_MD5SIG_EXT && cmd.tcpm_flags & TCP_MD5SIG_FLAG_PREFIX) { @@ -1534,8 +1532,7 @@ static int tcp_v4_parse_md5_keys(struct sock *sk, int= optname, return -EINVAL; } =20 - if (optname =3D=3D TCP_MD5SIG_EXT && cmd.tcpm_ifindex && - cmd.tcpm_flags & TCP_MD5SIG_FLAG_IFINDEX) { + if (optname =3D=3D TCP_MD5SIG_EXT && cmd.tcpm_ifindex && flags) { struct net_device *dev; =20 rcu_read_lock(); @@ -1563,7 +1560,7 @@ static int tcp_v4_parse_md5_keys(struct sock *sk, int= optname, /* Don't allow keys for peers that have a matching TCP-AO key. * See the comment in tcp_ao_add_cmd() */ - if (tcp_ao_required(sk, addr, AF_INET, l3flag ? l3index : -1, false)) + if (tcp_ao_required(sk, addr, AF_INET, flags ? l3index : -1, false)) return -EKEYREJECTED; =20 return tcp_md5_do_add(sk, addr, AF_INET, prefixlen, l3index, flags, diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 7df21c1cba21..184b223fa0db 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -610,7 +610,6 @@ static int tcp_v6_parse_md5_keys(struct sock *sk, int o= ptname, union tcp_ao_addr *addr; int l3index =3D 0; u8 prefixlen; - bool l3flag; u8 flags; =20 if (optlen < sizeof(cmd)) @@ -623,7 +622,6 @@ static int tcp_v6_parse_md5_keys(struct sock *sk, int o= ptname, return -EINVAL; =20 flags =3D cmd.tcpm_flags & TCP_MD5SIG_FLAG_IFINDEX; - l3flag =3D cmd.tcpm_flags & TCP_MD5SIG_FLAG_IFINDEX; =20 if (optname =3D=3D TCP_MD5SIG_EXT && cmd.tcpm_flags & TCP_MD5SIG_FLAG_PREFIX) { @@ -635,8 +633,7 @@ static int tcp_v6_parse_md5_keys(struct sock *sk, int o= ptname, prefixlen =3D ipv6_addr_v4mapped(&sin6->sin6_addr) ? 32 : 128; } =20 - if (optname =3D=3D TCP_MD5SIG_EXT && cmd.tcpm_ifindex && - cmd.tcpm_flags & TCP_MD5SIG_FLAG_IFINDEX) { + if (optname =3D=3D TCP_MD5SIG_EXT && cmd.tcpm_ifindex && flags) { struct net_device *dev; =20 rcu_read_lock(); @@ -671,7 +668,7 @@ static int tcp_v6_parse_md5_keys(struct sock *sk, int o= ptname, * See the comment in tcp_ao_add_cmd() */ if (tcp_ao_required(sk, addr, AF_INET, - l3flag ? l3index : -1, false)) + flags ? l3index : -1, false)) return -EKEYREJECTED; return tcp_md5_do_add(sk, addr, AF_INET, prefixlen, l3index, flags, @@ -683,7 +680,7 @@ static int tcp_v6_parse_md5_keys(struct sock *sk, int o= ptname, /* Don't allow keys for peers that have a matching TCP-AO key. * See the comment in tcp_ao_add_cmd() */ - if (tcp_ao_required(sk, addr, AF_INET6, l3flag ? l3index : -1, false)) + if (tcp_ao_required(sk, addr, AF_INET6, flags ? l3index : -1, false)) return -EKEYREJECTED; =20 return tcp_md5_do_add(sk, addr, AF_INET6, prefixlen, l3index, flags, --=20 2.43.0 From nobody Thu Nov 27 12:37:15 2025 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 A18402FBDE6 for ; Wed, 5 Nov 2025 09:29:39 +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=1762334979; cv=none; b=FGanaoOi8g43e+13E+s0Nv6D27x2buCA8z2dFOiRzBl0W7OCckvis2VLVQ448NsUfMV9/xAfNwp82qTrEJ1V8T41lFpYyzcEgfCQ66BUJZ1Gd+enVx0ja3lq35vCiVYff8ISQl5vgenKt/92HeA+On981NWxvmFCo7IxsKhNH+Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334979; c=relaxed/simple; bh=rjkpNJIyxvm1zJRfVSf4V4t5diTXhl+huq2nEip5Hp4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FFzkn6HX88MYeUNXRYjJE9ChpFEvb4hjMVPVd+dPhJt/W7Y3qPar8sZM8402xLgBxJ6Is+z4Z+B2qmV2t8uPxC9HrhLsoO/bPo8X3Ai0C0rx5sCbZgSeYba7y3LQrdOI/Q8WzXqVeJiQuaH3BExRbv++quPtmaWOuUwovvnIoDA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=laZBwGGN; 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="laZBwGGN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22F15C4CEF8; Wed, 5 Nov 2025 09:29:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762334979; bh=rjkpNJIyxvm1zJRfVSf4V4t5diTXhl+huq2nEip5Hp4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=laZBwGGN103QOhu09ZCBd4g32W+DkDeEWwG/h+5wGWooA5sGsoDugMjIq4JCmhGS3 Ke1L24oZhPkGhSdKHTVNL1ZqcRSgVzVMfjbTDKWd2JqxkCYGewfO9fSOZ+/Zt05BIu 00Sq2650GjMhh5+HhdhrX03XebX84Io/iLh/TVhvc+NYzcoHaLr4jJLqx9HCAbKZ3c b7Xx5CKdm9MyY2fJoI+ST+r8k/WLUHCPUeKAtGdYxd18Ba7UopGdQ/no0Uq3fL9csO Bv6+3xr1ZF4Nk9JtJVjnsG9BANRDbaYFuigyJ0YBSzMDBlvjWWWFc/OsnFPRozRXc/ HXOwQdPSsMA3Q== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 2/7] mptcp: handle TCP_MAXSEG getsockopt in common case Date: Wed, 5 Nov 2025 17:29:25 +0800 Message-ID: <5984338e785588a8dd4f79b3a1d9a815bcd72bae.1762334694.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 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 Move TCP_MAXSEG getsockopt handling to the common switch statement for consistency with other TCP options. Signed-off-by: Geliang Tang --- net/mptcp/sockopt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index de90a2897d2d..e2d1b4b6b3b2 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -1408,6 +1408,7 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_sock= *msk, int optname, case TCP_FASTOPEN_CONNECT: case TCP_FASTOPEN_KEY: case TCP_FASTOPEN_NO_COOKIE: + case TCP_MAXSEG: return mptcp_getsockopt_first_sf_only(msk, SOL_TCP, optname, optval, optlen); case TCP_INQ: @@ -1432,9 +1433,6 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_sock= *msk, int optname, return mptcp_put_int_option(msk, optval, optlen, msk->notsent_lowat); case TCP_IS_MPTCP: return mptcp_put_int_option(msk, optval, optlen, 1); - case TCP_MAXSEG: - return mptcp_getsockopt_first_sf_only(msk, SOL_TCP, optname, - optval, optlen); } return -EOPNOTSUPP; } --=20 2.43.0 From nobody Thu Nov 27 12:37:15 2025 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 636AE2FE594 for ; Wed, 5 Nov 2025 09:29:41 +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=1762334981; cv=none; b=cK+IePyVxPunkyElfmB3Co6anQnnEWbpA+ruvrNf+KgGBRvrQxkgY4Aneqd9yBHbAGt8Ks5pECgB56zKcVXARGa4DUbjpU1DGZ2jVgQfxmEPW6NFlGG40qihQEwfaqKtUfSiivJY56MJPmUShGoH04bduEQ5t+Lo6OOWghTp0yI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334981; c=relaxed/simple; bh=naOkNDf8EvSxnlW0eJXzyLXgbjn/c3yEGbbtpGn6Ap0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LLIDq+IhEyP/+XoDFbGPfPLh4tjWdK3qF6hnrbIgCaPdCqk/zgev+FUFdIsW0K8t5c6tA3EmMTbvRgBeRrghuHhdUfSx1hyRyLgWIye5GYuBDZaPWzBCBeKwSeJniXxQNLFwRMCk1KeWOZcOa3l4ukarUYCGhxtABpyAapnrheE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dQcu2q8m; 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="dQcu2q8m" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D6183C4CEF8; Wed, 5 Nov 2025 09:29:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762334981; bh=naOkNDf8EvSxnlW0eJXzyLXgbjn/c3yEGbbtpGn6Ap0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dQcu2q8mbFszthpj33uOk7QdaTulNHWGbEjMjjx8nV9dt5L0qmbi3UAcJJvVhVGgH Liv/ztoAzkgetGeAPu9ykInCqptzAE3oyWNzTGRxMsST/UGMSsZq5yglVFcdZYwJG6 4CLBVNhtFODSkm3XmdWlUjig4ff56H2bOPOQbThu5NOG3tVRx6R1O8ESIuIYGOnbVx g92nPYbApJ4O2qU84uuSsdB9w/ZXIJDDiRpNN/Abm8LjQb2WqgtaBmI5A5zw/CnNzE 9qTLcbioML3+4UfhrDNR5Wc/oNv+C0+JaCz1R3NqdJJZvnQoYNt/SNPVyd2kJ2vnTp zDmoza8Ag5XIg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 3/7] mptcp: setsockopt support for TCP_MD5SIG Date: Wed, 5 Nov 2025 17:29:26 +0800 Message-ID: <9e4d438d9e8c4f2babec5d44854d9c0b1c7ef3fa.1762334694.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 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 Add setsockopt support for TCP_MD5SIG and TCP_MD5SIG_EXT. These options force fallback to TCP to maintain MD5 compatibility. Apply them only to the first subflow. Note that getsockopt for these options remains unsupported, consistent with TCP. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/575 Fixes: d9e4c1291810 ("mptcp: only admit explicitly supported sockopt") Signed-off-by: Geliang Tang --- net/mptcp/sockopt.c | 14 ++++++++++++-- net/mptcp/subflow.c | 3 +++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index e2d1b4b6b3b2..a3efaf5db256 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -13,6 +13,7 @@ #include #include #include "protocol.h" +#include "mib.h" =20 #define MIN_INFO_OPTLEN_SIZE 16 #define MIN_FULL_INFO_OPTLEN_SIZE 40 @@ -567,11 +568,12 @@ static bool mptcp_supported_sockopt(int level, int op= tname) case TCP_FASTOPEN_CONNECT: case TCP_FASTOPEN_KEY: case TCP_FASTOPEN_NO_COOKIE: + /* MD5 will force a fallback to TCP: OK to set while not connected */ + case TCP_MD5SIG: + case TCP_MD5SIG_EXT: return true; } =20 - /* TCP_MD5SIG, TCP_MD5SIG_EXT are not supported, MD5 is not compatible w= ith MPTCP */ - /* TCP_REPAIR, TCP_REPAIR_QUEUE, TCP_QUEUE_SEQ, TCP_REPAIR_OPTIONS, * TCP_REPAIR_WINDOW are not supported, better avoid this mess */ @@ -836,6 +838,14 @@ static int mptcp_setsockopt_sol_tcp(struct mptcp_sock = *msk, int optname, case TCP_FASTOPEN_NO_COOKIE: return mptcp_setsockopt_first_sf_only(msk, SOL_TCP, optname, optval, optlen); + case TCP_MD5SIG: + case TCP_MD5SIG_EXT: + ret =3D mptcp_setsockopt_first_sf_only(msk, SOL_TCP, optname, + optval, optlen); + if (ret =3D=3D 0) + WARN_ON_ONCE(!__mptcp_try_fallback(msk, + MPTCP_MIB_MD5SIGFALLBACK)); + return ret; } =20 ret =3D mptcp_get_int_option(msk, optval, optlen, &val); diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 7eef4aaf78e2..5e29eee72656 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -155,6 +155,9 @@ static int subflow_check_req(struct request_sock *req, =20 pr_debug("subflow_req=3D%p, listener=3D%p\n", subflow_req, listener); =20 + if (__mptcp_check_fallback(mptcp_sk(listener->conn))) + return 0; + #ifdef CONFIG_TCP_MD5SIG /* no MPTCP if MD5SIG is enabled on this socket or we may run out of * TCP option space. --=20 2.43.0 From nobody Thu Nov 27 12:37:15 2025 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 DA7FB2FE050 for ; Wed, 5 Nov 2025 09:29:42 +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=1762334982; cv=none; b=YSgD+FyGDnns1qNXwn1B545xiDL4K2sZK1eMPp+AFsCeGukK/r6+vF88olOr/uHJEsOCAYLMQR97M17svcCde8un7Rj7HAjIj3BBeI8OEadxXiNflbFH4B/Ibp31nZtECQwDj0aAgxDoRk39iMLdbDNvhocEgO9SaykeFNBwlp8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334982; c=relaxed/simple; bh=Rf5ia++5sbR2vhHm7r6sxedKuvOKmyMkbTV2z1RzLB4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PjQv5Zf153yEqp3ysr1lS1/PfqSWD3A7pgkpEvVAFPPnHsE4KSRs2Zij0c6xf+5DqBr2t29ALZvhk84JOT3R9gsP6ve+enEGA4yplTLrJv13Zg/qM4UMoDz1ToHeUvPDBXYMXt8ZfPjpWsjIBzPp7SzL+xEFhlmj/+Ac4Tsa8I0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VjVSeKXv; 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="VjVSeKXv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7E73DC4CEFB; Wed, 5 Nov 2025 09:29:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762334982; bh=Rf5ia++5sbR2vhHm7r6sxedKuvOKmyMkbTV2z1RzLB4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VjVSeKXvjcY7f8t0+l1Co+f9CpNk3K8hLekbWDU60hCZ3GaH+4xgQODqSqCU89/Pf ZVMjhB6tyNaukz5LR/oJIpEyJAOdofYA65/aWfsfpJaxKMgrCH41/GtWtgkD25jfs4 TMbUGm77Yt+BqaCMNQYXPGWej0jtCOV8KQy9IsS5Fl0XtF7373eNrqERqBS8Uq6E/i rj3jYbFBXJWLMqJVbbj8AMJTcz/KpWRYUyqA20w9LcYdUtsDo2asRvjTyUIdbSDteu dfw9Y0qLyydo1DzSqBBsXKH8TlxIDr+rqlDZZVcq2ubV9sYkytxmy1ieOQNeMRUKuP /40mMHuhG15tA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 4/7] selftests: mptcp: sockopt: add md5 argument Date: Wed, 5 Nov 2025 17:29:27 +0800 Message-ID: <3707a5f5bec46960aa8484e94b4fb11b25719798.1762334694.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 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 Add '-m' option to support TCP_MD5SIG tests. Accepts MD5 keys in 'md5,key=3D' or 'md5ext,prefixlen,ifindex,key' format. Signed-off-by: Geliang Tang --- .../testing/selftests/net/mptcp/mptcp_sockopt.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c b/tools/test= ing/selftests/net/mptcp/mptcp_sockopt.c index 286164f7246e..fcf1d7a195d1 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c @@ -27,6 +27,10 @@ #include =20 static int pf =3D AF_INET; +static bool md5; +static char key[TCP_MD5SIG_MAXKEYLEN]; +static int prefixlen; +static int ifindex; =20 #ifndef IPPROTO_MPTCP #define IPPROTO_MPTCP 262 @@ -135,7 +139,7 @@ static void die_perror(const char *msg) =20 static void die_usage(int r) { - fprintf(stderr, "Usage: mptcp_sockopt [-6]\n"); + fprintf(stderr, "Usage: mptcp_sockopt [-6] [-m md5,key|md5ext,prefixlen,i= findex,key]\n"); exit(r); } =20 @@ -263,7 +267,7 @@ static void parse_opts(int argc, char **argv) { int c; =20 - while ((c =3D getopt(argc, argv, "h6")) !=3D -1) { + while ((c =3D getopt(argc, argv, "h6m:")) !=3D -1) { switch (c) { case 'h': die_usage(0); @@ -271,6 +275,14 @@ static void parse_opts(int argc, char **argv) case '6': pf =3D AF_INET6; break; + case 'm': + md5 =3D true; + if (!strncmp(optarg, "md5,", 4)) + sscanf(optarg, "md5,key=3D%s", key); + else if (!strncmp(optarg, "md5ext,", 6)) + sscanf(optarg, "md5ext,prefixlen=3D%u,ifindex=3D%u,key=3D%s", + &prefixlen, &ifindex, key); + break; default: die_usage(1); break; --=20 2.43.0 From nobody Thu Nov 27 12:37:15 2025 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 74D122FE059 for ; Wed, 5 Nov 2025 09:29:44 +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=1762334984; cv=none; b=CaJh4YkB9mzFcSlDLX+Br7yh8CRrHWIdUbbHBkibh9FanN0rOu0OOCEp8RB3GPDrTC+9MylmFaMyXJ0+3FV01VAVTTY019Qnba7FSielH+CVO+qaClfYuqIT3SyhSDDtfnAGHr3wD0snFQ+DfDW179tpIsK0sWVnhlrvnceJbKo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334984; c=relaxed/simple; bh=Id8Y5cCpW8a6fTmhiL7u9VRBktxppJjIW8En60VP3lI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TBfYNXXDzQDwmPYX2D/mXpoYPB67DQypIRzxF9zFzcahpfSyioWCEUJ1mUWJ7CtsV01NQLvHAzpv2NJPRmCL7pkaNi30GP30Gz7bGSvArqEQYJ2n9N5dC6LwxPgo3y+qqfG9FBNatOnrFJe1rskxhkVlHSjMO2Ovy72jO27FW60= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Fn4Ft+jQ; 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="Fn4Ft+jQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0D4BAC4CEFB; Wed, 5 Nov 2025 09:29:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762334984; bh=Id8Y5cCpW8a6fTmhiL7u9VRBktxppJjIW8En60VP3lI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Fn4Ft+jQoQdMw7eL/4DrSY48RFyFrmiRCm5GU+D5yypT3LdyeABVfIcLqLTLF2tFt o7mh5beqvgVDHJnud8gW+P54q4sLvQebWdOHMv9pbIf1spMEkDH7OEnI0VrFM3FAbA BwdDG24+0tRsqXI2dzKpWMQz5WAFKMUXR0BZ/Z6o1cRfT/RaY6416yZ9luV9jcUZzt QBML9EJvg0ePC4prkDUX98VClLiXuiQZWimbzyOzaOiq3r2h4raxKtG8NE/53njvDq trOVirW5VQG/jLlmesQkg/KQx0WPJQ5hoPbgTtltLpaZz1MT7EYa8iyUkOumqY9uMa X+KX6q0AG6peA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 5/7] selftests: mptcp: sockopt: implement TCP_MD5SIG support Date: Wed, 5 Nov 2025 17:29:28 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 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 Add socket option handling for TCP_MD5SIG and TCP_MD5SIG_EXT. Configure MD5 keys using the key provided via '-m' parameter. Signed-off-by: Geliang Tang --- .../selftests/net/mptcp/mptcp_sockopt.c | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c b/tools/test= ing/selftests/net/mptcp/mptcp_sockopt.c index fcf1d7a195d1..e577fbec9373 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c @@ -25,6 +25,7 @@ #include =20 #include +#include =20 static int pf =3D AF_INET; static bool md5; @@ -186,6 +187,50 @@ static void xgetaddrinfo(const char *node, const char = *service, } } =20 +static void do_setsockopt_md5sig(int fd) +{ + struct sockaddr_storage *addr; + size_t key_len =3D strlen(key); + struct tcp_md5sig md5sig; + int opt =3D TCP_MD5SIG; + + memset(&md5sig, 0, sizeof(md5sig)); + addr =3D (struct sockaddr_storage *)&md5sig.tcpm_addr; + addr->ss_family =3D pf; + + if ((pf =3D=3D AF_INET ? inet_pton(pf, "127.0.0.1", &((struct sockaddr_in= *)addr)->sin_addr) : + inet_pton(pf, "::1", &((struct sockaddr_in6 *)addr)->sin6_addr)) != =3D 1) + perror("inet_pton failed"); + + if (key_len > sizeof(md5sig.tcpm_key)) + perror("Key too long\n"); + + memcpy(md5sig.tcpm_key, key, key_len); + md5sig.tcpm_keylen =3D key_len; + + if (prefixlen || ifindex) + opt =3D TCP_MD5SIG_EXT; + + if (prefixlen) { + md5sig.tcpm_flags |=3D TCP_MD5SIG_FLAG_PREFIX; + md5sig.tcpm_prefixlen =3D prefixlen; + } + + if (ifindex) { + md5sig.tcpm_flags |=3D TCP_MD5SIG_FLAG_IFINDEX; + md5sig.tcpm_ifindex =3D (uint8_t)ifindex; + } + + if (setsockopt(fd, IPPROTO_TCP, opt, &md5sig, sizeof(md5sig))) + perror("setsockopt(TCP_MD5SIG)"); +} + +static void do_setsockopts(int fd) +{ + if (md5) + do_setsockopt_md5sig(fd); +} + static int sock_listen_mptcp(const char * const listenaddr, const char * const port) { @@ -213,6 +258,8 @@ static int sock_listen_mptcp(const char * const listena= ddr, sizeof(one))) perror("setsockopt"); =20 + do_setsockopts(sock); + if (bind(sock, a->ai_addr, a->ai_addrlen) =3D=3D 0) break; /* success */ =20 @@ -250,6 +297,8 @@ static int sock_connect_mptcp(const char * const remote= addr, if (sock < 0) continue; =20 + do_setsockopts(sock); + if (connect(sock, a->ai_addr, a->ai_addrlen) =3D=3D 0) break; /* success */ =20 --=20 2.43.0 From nobody Thu Nov 27 12:37:15 2025 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 E64662FE050 for ; Wed, 5 Nov 2025 09:29:45 +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=1762334986; cv=none; b=YhpOaztrT+0abbar4sNwo3nxjxNcWu50NrmxFrREk09pa6X8IXZ3W0GUoIfWwLMuR2RTRhehTvmTeMJeWVgpbbqo9IblDBGKTLhVyCvcngyB0nUkdHL5qrbWmnvlx7ALNJAYJ+QuET9hAu6bphoyZgXv9cJgZhqU0JeLxvXHpnM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334986; c=relaxed/simple; bh=NLG6q2RVoio0QdnhhLSVMij1VEN87MGAaNi2WTRX5iA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P44Z+WMwX1a0mYNCoKxpNL61Rsoy+lWfD2mRema+xhgAuhgK6Y8d0pE+4sCmsh2Bi2s71ydAoqUqM8rq56Wc7FG1KKHWGN0G/QChFtx8RN/SLmC0ezcdUL3mSDArQ06szLfUpgwYIV8ABlriAifAO69cFxd2jnfxXNjc+3Q2OBs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jxColFUL; 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="jxColFUL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F2A9C19422; Wed, 5 Nov 2025 09:29:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762334985; bh=NLG6q2RVoio0QdnhhLSVMij1VEN87MGAaNi2WTRX5iA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jxColFULhZ11dkczFBUGvKO/kI3cj1fNknyjqEzzVnIPkjiZQV9RIVxY7fiwEtmpJ eAHFA4+iLjcM5ksxiqmcmwktyjCokMFNvQBdmtvwX/kwxBIx6JwT7o3CtEixRGfman 4YbTB1ZIBxi2TtrZUKaKPJVdXk31bvs176ANPloRiB4jyvUdWiOh9T6GhzkGa7jVjl Fw0hLkKHlSVihxSp9U0PuxrUt0Zoylq/7JnMKrYu6onQP/nE1yg4FUAF7demc3EV9m 3qlvUAx1VWeFT8c02exSgr3Z9r5nuleg4Gc/nPJcbqfVIkpN628N+0bL7jJ/RWNa/h cWVb2M+qwia9A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 6/7] selftests: mptcp: sockopt: skip getsockopt for MD5 tests Date: Wed, 5 Nov 2025 17:29:29 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 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 Skip getsockopt checks during MD5 tests since MD5 connections fallback to TCP and MPTCP socket options are not available. Signed-off-by: Geliang Tang --- .../selftests/net/mptcp/mptcp_sockopt.c | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c b/tools/test= ing/selftests/net/mptcp/mptcp_sockopt.c index e577fbec9373..9bac1494b238 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c @@ -426,7 +426,7 @@ static void do_getsockopt_mptcp_info(struct so_state *s= , int fd, size_t w) ret =3D getsockopt(fd, SOL_MPTCP, MPTCP_INFO, &i, &olen); =20 if (ret < 0) - die_perror("getsockopt MPTCP_INFO"); + return; =20 s->pkt_stats_avail =3D olen >=3D sizeof(i); =20 @@ -457,7 +457,7 @@ static void do_getsockopt_tcp_info(struct so_state *s, = int fd, size_t r, size_t =20 ret =3D getsockopt(fd, SOL_MPTCP, MPTCP_TCPINFO, &ti, &olen); if (ret < 0) - xerror("getsockopt MPTCP_TCPINFO (tries %d, %m)"); + return; =20 assert(olen <=3D sizeof(ti)); assert(ti.d.size_kernel > 0); @@ -512,7 +512,7 @@ static void do_getsockopt_subflow_addrs(struct so_state= *s, int fd) =20 ret =3D getsockopt(fd, SOL_MPTCP, MPTCP_SUBFLOW_ADDRS, &addrs, &olen); if (ret < 0) - die_perror("getsockopt MPTCP_SUBFLOW_ADDRS"); + return; =20 assert(olen <=3D sizeof(addrs)); assert(addrs.d.size_kernel > 0); @@ -582,13 +582,8 @@ static void do_getsockopt_mptcp_full_info(struct so_st= ate *s, int fd) olen =3D data_size; =20 ret =3D getsockopt(fd, SOL_MPTCP, MPTCP_FULL_INFO, &mfi, &olen); - if (ret < 0) { - if (errno =3D=3D EOPNOTSUPP) { - perror("MPTCP_FULL_INFO test skipped"); - return; - } - xerror("getsockopt MPTCP_FULL_INFO"); - } + if (ret < 0) + return; =20 assert(olen <=3D data_size); assert(mfi.size_tcpinfo_kernel > 0); @@ -692,7 +687,8 @@ static void connect_one_server(int fd, int pipefd) if (eof) total +=3D 1; /* sequence advances due to FIN */ =20 - assert(s.mptcpi_rcv_delta =3D=3D (uint64_t)total); + if (s.mptcpi_rcv_delta) + assert(s.mptcpi_rcv_delta =3D=3D (uint64_t)total); close(fd); } =20 @@ -727,7 +723,8 @@ static void process_one_client(int fd, int pipefd) xerror("expected EOF, got %lu", ret3); =20 do_getsockopts(&s, fd, ret, ret2); - if (s.mptcpi_rcv_delta !=3D (uint64_t)ret + 1) + if (s.mptcpi_rcv_delta && + s.mptcpi_rcv_delta !=3D (uint64_t)ret + 1) xerror("mptcpi_rcv_delta %" PRIu64 ", expect %" PRIu64 ", diff %" PRId64, s.mptcpi_rcv_delta, ret + 1, s.mptcpi_rcv_delta - (ret + 1)); =20 --=20 2.43.0 From nobody Thu Nov 27 12:37:15 2025 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 4ED7F2FE071 for ; Wed, 5 Nov 2025 09:29:47 +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=1762334987; cv=none; b=ZOM87gWaYVC+nzxCQmwIJC4Sw2f9k+tnPDzskHU1qQb48vCjyQKtEz9TdFKVxBVWRQ28gc7lWJCWfGhTcH5uyxsZwFK6q3hh/dNdkINaYIn4gu3xn+WgMDiEAN52enxukOc0uF2Q40A9TJM2tSHZuIyaJTBwKJV8C1cjOffd/W8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762334987; c=relaxed/simple; bh=DbGNanV8qRnBi1aTZ4kMJNNdGDkBgPO7ClDPcIcDGpk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=swweDnmdzBCDzuA3ajXzsP1lqWDzm6odWLhTqWV57OBpiKzINn7C36XCHtFNxnYscKNyzLNxvk3AIp2G+5ODbyiKQEckAZzMOeH7vQAZ7BY6kSd6BmbJ5gb9/s301NNm1g+8Bma61UVWMMfUTfl3+jnT4ET9FzsqQTIbgJuNVgI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MRRVKqzC; 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="MRRVKqzC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1E4F4C4CEF8; Wed, 5 Nov 2025 09:29:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762334987; bh=DbGNanV8qRnBi1aTZ4kMJNNdGDkBgPO7ClDPcIcDGpk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MRRVKqzCW5v3M70qeSGwtk060cHvB8C2sJuiss69yk3RT52E25mx+LPJXPw4aNf5Z m20yhW/N+9WP1zzTK3RLYK3zYqGBmNY1OQjSgiuhXbxjxPoNvfgimIgn8zEov7pYjU 6YrDonizhrDBYuWCRGzhQ33i2QhNrqNBnK4JYEswBRiTJjOPxyGpbyV5LJwPym9Oqo romz70k0Om4OWgLdVynrXYGwpX4Siy40wjMPuaa/q1X2HA6AUP20RQpg5dqrNQY36Q Lg+vDeEo8hIF/bRVqzd4MKmk+5Q0Spg/VvkPZ4FC20lIBQm3aURdW3PvRZNNN4bhiX g75hwZfCvlbIA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v6 7/7] selftests: mptcp: sockopt: add TCP_MD5SIG test cases Date: Wed, 5 Nov 2025 17:29:30 +0800 Message-ID: <4ba68f228cd04836ad8072a75074798083a1ea3b.1762334694.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 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 Add self tests for TCP_MD5SIG and TCP_MD5SIG_EXT: - IPv4/IPv6 test cases - VRF interface handling for extended MD5 tests - Integration into existing test suite Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/config | 3 ++ .../selftests/net/mptcp/mptcp_sockopt.sh | 51 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/config b/tools/testing/selft= ests/net/mptcp/config index 59051ee2a986..44e3523bc8c3 100644 --- a/tools/testing/selftests/net/mptcp/config +++ b/tools/testing/selftests/net/mptcp/config @@ -34,3 +34,6 @@ CONFIG_NFT_SOCKET=3Dm CONFIG_NFT_TPROXY=3Dm CONFIG_SYN_COOKIES=3Dy CONFIG_VETH=3Dy +CONFIG_TCP_MD5SIG=3Dy +CONFIG_NET_L3_MASTER_DEV=3Dy +CONFIG_NET_VRF=3Dy diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_sockopt.sh index f01989be6e9b..dc58bfe88daa 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh @@ -348,6 +348,56 @@ do_tcpinq_tests() return $? } =20 +do_tcpmd5_test() +{ + print_title "TCP_MD5SIG $*" | head -c 53 + ip netns exec "$ns_sbox" ./mptcp_sockopt "$@" + local lret=3D$? + if [ $lret -ne 0 ];then + ret=3D$lret + mptcp_lib_pr_fail + mptcp_lib_result_fail "TCP_MD5SIG: $*" + return $lret + fi + + mptcp_lib_pr_ok + mptcp_lib_result_pass "TCP_MD5SIG: $*" + return $lret +} + +do_tcpmd5_tests() +{ + local lret=3D0 + + mptcp_lib_print_info "sockopt TCP_MD5SIG" + + do_tcpmd5_test -m "md5,key=3D0123456789" + lret=3D$? + if [ $lret -ne 0 ] ; then + return $lret + fi + do_tcpmd5_test -6 -m "md5,key=3D0123456789" + lret=3D$? + if [ $lret -ne 0 ] ; then + return $lret + fi + + ip netns exec "$ns_sbox" ip link add vrf-test type vrf table 100 + vrf=3D$(ip netns exec "$ns_sbox" ip link show vrf-test | + awk -F':' '{print $1; exit}') + do_tcpmd5_test -m "md5ext,prefixlen=3D1,ifindex=3D$vrf,key=3D0123456789" + lret=3D$? + if [ $lret -ne 0 ] ; then + ip netns exec "$ns_sbox" ip link del vrf-test + return $lret + fi + do_tcpmd5_test -6 -m "md5ext,prefixlen=3D1,ifindex=3D$vrf,key=3D012345678= 9" + lret=3D$? + + ip netns exec "$ns_sbox" ip link del vrf-test + return $lret +} + sin=3D$(mktemp) sout=3D$(mktemp) cin=3D$(mktemp) @@ -363,6 +413,7 @@ run_tests $ns1 $ns2 dead:beef:1::1 =20 do_mptcp_sockopt_tests do_tcpinq_tests +do_tcpmd5_tests =20 mptcp_lib_result_print_all_tap exit $ret --=20 2.43.0