From nobody Sun Feb 8 17:13:37 2026 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814122edc; Mon, 7 Mar 2022 12:44:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJyGUTSnK6QjGymUKUTaOflwxtMm5sqghSliSwOjeDFAEW9UCWeDBWqOMlLaJQwKdYlMVI/V X-Received: by 2002:a0d:ea97:0:b0:2d7:9394:17ce with SMTP id t145-20020a0dea97000000b002d7939417cemr10001349ywe.297.1646685898245; Mon, 07 Mar 2022 12:44:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685898; cv=none; d=google.com; s=arc-20160816; b=GsntdrNknxpHm0b0xcgOWKN8TzxjYcZdmkQmCpTN3URLx+DrD6PwSf5545s+tSGbM7 R5CmzA3ExnbFEEaIa9GiTjGnRIUb+Bbu/ewFRLdlU8Y0iha1pNJXC6KfV21TXEymHL3i TnlA+4ASzMDwqcvZOLk4CJ00VOrwD38eKUzwlhDagOwrpLhMAYEjxL34kgcaU/LE9ovd nkFIDRR5NsNXK3Ka+BBDedB70xrphDTgRVRq1QAMbtZynhJPPBfUCio/hnuVDOQ7sm0f 4dtEO7D/wttPc57nv1dwTvEam/Vyj8tWo2NVIMhGTtLuMTJemmN+TfEkkgrSEpzCP8Nr y9Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=mCvDQHLDEhRcbCwJV7ojFYFs+qyQ0k2xk+Lz8XCVcfg=; b=vSZaROXhEqM8CPLGmM/ZrSm9Nw09lJeavMoRN5cUtk0mEKHgPaTm9XQfz/FU5Gd5G3 jVqf1u0nj2UJr7C/VmwCUZoa9+CtBRWLxgYXfleftFejnnDAwCiWbQ7YtGu2dT9/bETm AxBVwEhB7zmrXCQopK8+XIYYzJPmz4FZKUEyZEQ9auatF7rUlQnLXuayynSl+TyT0kU8 hb1YOLKjTw/xkczNR9syRkMX1fToBClDlXVxncxDxO4ijgRORJ+UCPUbm9izb+c9bPt8 DptOQCoA60GiCdTiSdp0XCtS9pPBuv27OWHdoIyQP3ZBt165du2hkmTzWK53baVyjVlU AA2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=B7xNE61V; spf=pass (google.com: domain of mptcp+bounces-4139-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4139-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id be16-20020a05690c009000b002dbf9150095si14099931ywb.5.2022.03.07.12.44.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:58 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4139-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=B7xNE61V; spf=pass (google.com: domain of mptcp+bounces-4139-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4139-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 9A9881C0D2D for ; Mon, 7 Mar 2022 20:44:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EC9AC38FE; Mon, 7 Mar 2022 20:44:50 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 E290E4352 for ; Mon, 7 Mar 2022 20:44:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646685889; x=1678221889; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Y70bUn1hKmrA0uVOeYcMBCmyn9LGK/Kr0ab27W7G4mE=; b=B7xNE61VWVNziPt7td5IHemg973VWEzn8lp4Kv4HZU6UxpbfLiGIlaxE U4MLYBgXwOuW9IlfzpXSGTuO6ST+TO7W+4GLkkEbf9ftn+WQ4ziTDhsNB m72j1q+MW7vR5PbUWhry+Dll2o5G8U3s7mNGoAlkkRbzNf+l3ylEomzm1 +bqKmnWc4KfBYWL/fOhbB2uiZ2p2eWOwD8CI/ozQlWBEdZ3j3k4NRkqIu rBLziL3oNWCiPpcewervQTAkU89kh0+T0ddwbY+E5al5lXckvbJWqimih Enouz9PHm5hvrvYiaCSvTyU/IlcbM5Of/X1DEjdOW6DjdBv1Vh8cCZ3PX Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731793" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731793" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320493" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 8/9] selftests: mptcp: add implicit endpoint test case Date: Mon, 7 Mar 2022 12:44:38 -0800 Message-Id: <20220307204439.65164-9-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> 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: Paolo Abeni Ensure implicit endpoint are created when expected and that the user-space can update them Reviewed-by: Matthieu Baerts Co-developed-by: Matthieu Baerts Signed-off-by: Matthieu Baerts Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- .../testing/selftests/net/mptcp/mptcp_join.sh | 120 +++++++++++++++++- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 7 + 2 files changed, 126 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 1e2e8dd9f0d6..ee435948d130 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -310,6 +310,21 @@ wait_rm_addr() done } =20 +wait_mpj() +{ + local ns=3D"${1}" + local cnt old_cnt + + old_cnt=3D$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{prin= t $2}') + + local i + for i in $(seq 10); do + cnt=3D$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{print $= 2}') + [ "$cnt" =3D "${old_cnt}" ] || break + sleep 0.1 + done +} + pm_nl_set_limits() { local ns=3D$1 @@ -410,6 +425,80 @@ pm_nl_change_endpoint() fi } =20 +pm_nl_check_endpoint() +{ + local line expected_line + local title=3D"$1" + local msg=3D"$2" + local ns=3D$3 + local addr=3D$4 + local _flags=3D"" + local flags + local _port + local port + local dev + local _id + local id + + if [ -n "${title}" ]; then + printf "%03u %-36s %s" "${TEST_COUNT}" "${title}" "${msg}" + else + printf "%-${nr_blank}s %s" " " "${msg}" + fi + + shift 4 + while [ -n "$1" ]; do + if [ $1 =3D "flags" ]; then + _flags=3D$2 + [ ! -z $_flags ]; flags=3D"flags $_flags" + shift + elif [ $1 =3D "dev" ]; then + [ ! -z $2 ]; dev=3D"dev $1" + shift + elif [ $1 =3D "id" ]; then + _id=3D$2 + [ ! -z $_id ]; id=3D"id $_id" + shift + elif [ $1 =3D "port" ]; then + _port=3D$2 + [ ! -z $_port ]; port=3D" port $_port" + shift + fi + + shift + done + + if [ -z "$id" ]; then + echo "[skip] bad test - missing endpoint id" + return + fi + + if [ $ip_mptcp -eq 1 ]; then + line=3D$(ip -n $ns mptcp endpoint show $id) + # the dump order is: address id flags port dev + expected_line=3D"$addr" + [ -n "$addr" ] && expected_line=3D"$expected_line $addr" + expected_line=3D"$expected_line $id" + [ -n "$_flags" ] && expected_line=3D"$expected_line ${_flags//","/" "}" + [ -n "$dev" ] && expected_line=3D"$expected_line $dev" + [ -n "$port" ] && expected_line=3D"$expected_line $port" + else + line=3D$(ip netns exec $ns ./pm_nl_ctl get $_id) + # the dump order is: id flags dev address port + expected_line=3D"$id" + [ -n "$flags" ] && expected_line=3D"$expected_line $flags" + [ -n "$dev" ] && expected_line=3D"$expected_line $dev" + [ -n "$addr" ] && expected_line=3D"$expected_line $addr" + [ -n "$_port" ] && expected_line=3D"$expected_line $_port" + fi + if [ "$line" =3D "$expected_line" ]; then + echo "[ ok ]" + else + echo "[fail] expected '$expected_line' found '$line'" + ret=3D1 + fi +} + do_transfer() { listener_ns=3D"$1" @@ -2269,6 +2358,30 @@ fastclose_tests() chk_rst_nr 1 1 invert } =20 +implicit_tests() +{ + # userspace pm type prevents add_addr + reset + pm_nl_set_limits $ns1 2 2 + pm_nl_set_limits $ns2 2 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & + + wait_mpj $ns1 + TEST_COUNT=3D$((TEST_COUNT + 1)) + pm_nl_check_endpoint "implicit EP" "creation" \ + $ns2 10.0.2.2 id 1 flags implicit + + pm_nl_add_endpoint $ns2 10.0.2.2 id 33 + pm_nl_check_endpoint "" "ID change is prevented" \ + $ns2 10.0.2.2 id 1 flags implicit + + pm_nl_add_endpoint $ns2 10.0.2.2 flags signal + pm_nl_check_endpoint "" "modif is allowed" \ + $ns2 10.0.2.2 id 1 flags signal + wait +} + all_tests() { subflows_tests @@ -2287,6 +2400,7 @@ all_tests() deny_join_id0_tests fullmesh_tests fastclose_tests + implicit_tests } =20 # [$1: error message] @@ -2314,6 +2428,7 @@ usage() echo " -d deny_join_id0_tests" echo " -m fullmesh_tests" echo " -z fastclose_tests" + echo " -I implicit_tests" echo " -c capture pcap files" echo " -C enable data checksum" echo " -i use ip mptcp" @@ -2324,7 +2439,7 @@ usage() =20 =20 tests=3D() -while getopts 'fesltra64bpkdmchzCSi' opt; do +while getopts 'fesltra64bpkdmchzICSi' opt; do case $opt in f) tests+=3D(subflows_tests) @@ -2374,6 +2489,9 @@ while getopts 'fesltra64bpkdmchzCSi' opt; do z) tests+=3D(fastclose_tests) ;; + I) + tests+=3D(implicit_tests) + ;; c) capture=3D1 ;; diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/= selftests/net/mptcp/pm_nl_ctl.c index 22a5ec1e128e..a75a68ad652e 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -436,6 +436,13 @@ static void print_addr(struct rtattr *attrs, int len) printf(","); } =20 + if (flags & MPTCP_PM_ADDR_FLAG_IMPLICIT) { + printf("implicit"); + flags &=3D ~MPTCP_PM_ADDR_FLAG_IMPLICIT; + if (flags) + printf(","); + } + /* bump unknown flags, if any */ if (flags) printf("0x%x", flags); --=20 2.35.1