From nobody Wed May 8 20:40:31 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp4267834jad; Mon, 21 Feb 2022 08:54:38 -0800 (PST) X-Google-Smtp-Source: ABdhPJxbP9h2dAZ2zjCdBuXd79lrr0VkIJlJCBAeD++4AsOvkQtX97M8ODyCPO1ZYZEKgV0xVUD2 X-Received: by 2002:a17:902:7892:b0:14e:c520:e47d with SMTP id q18-20020a170902789200b0014ec520e47dmr19263421pll.105.1645462478602; Mon, 21 Feb 2022 08:54:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645462478; cv=none; d=google.com; s=arc-20160816; b=VF9eg/4DtEYKx81zrtsqYxBFWdFkFFkgDICAvDsv0eKUgL2c1wbjJ94kpac9LbwLvR hEM2Y8DfnYt7ZVA/WjogMsRFsi0x8y5MBU+Qcdp13CrTqCnVAC2LjOKE0GNGSYqRao8Q NQLWNdWKYChoj2GfaXLrEFazicZ/ih3oqDnXZRXuAxc8f5EQoTzpOlV+9U3LWD7iH8rA UZnzCrbuTQp9o0bMHhvjPmwRc6jIXTYNKrn3d7moRvzDm+inzU/0P3lylmAvlqmoYPyA agfK+l4HtU9yTHcRHLe31xpGs7WaTEIsoP9CP1KTfiM6vo6bSehPW/iFXctElSqlqiBk 4nfw== 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:message-id:date:subject:to:from :dkim-signature; bh=wHxivpAhOyJTP0gmeN2cbQpML6aHErtOTYK8YfzgirM=; b=ZOMOft9vNLTNn34Wejs1mDkSo+PqR46sPMMkKAlpwzQ/weJeORJS6oBG5ll6n4/dFa YgcqHUArybbiqXSprtuMm2C9Uj/cSax4tTxByUQUoALW2VIELYSgHa+g0x1GYhReFzLf GeVeaa2mq653mjY4Nmb0g20AqZ2/p1hnnbatauXH5k4rrimLzCNRMlDUIW1UNcKdVeEr oEjx/BPD7O8ji9gIaZS362fdGs4yRY+XNNveCMstDIQWTm5OikHNK9OgpaMtwbL/o9XY CXStC5krtq4UKVVo2qR8PxHEpNcFHoYcml2061akwWQp96BXL5uNrmFiCxpzJku9SHjb fdfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VbQwwiFW; spf=pass (google.com: domain of mptcp+bounces-3931-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3931-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id b22si18611120pgg.714.2022.02.21.08.54.38 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 Feb 2022 08:54:38 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3931-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VbQwwiFW; spf=pass (google.com: domain of mptcp+bounces-3931-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3931-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.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 sjc.edge.kernel.org (Postfix) with ESMTPS id A33943E0E0A for ; Mon, 21 Feb 2022 16:54:37 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C8DA45EB8; Mon, 21 Feb 2022 16:54:36 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 A015C2569 for ; Mon, 21 Feb 2022 16:54:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1645462473; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wHxivpAhOyJTP0gmeN2cbQpML6aHErtOTYK8YfzgirM=; b=VbQwwiFW9kzMe4k5YYqPJkX8LiJgdo0ktEt5NpvDr1Z6dqcxrd6NBEX3awVFxUWf0+b2g0 58ObVGp0osBkBsQnaXcKRFtiIaA91TxCAA74egWEYl0O2Mv0J/+QDR+QuMzcwqXpFtzY3A oJVqGPe/E+IN8vgxTrPP6CT0IJcy/PM= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-635-ZKvErc5aMq2CGcrqUWEkyw-1; Mon, 21 Feb 2022 11:54:32 -0500 X-MC-Unique: ZKvErc5aMq2CGcrqUWEkyw-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6E556814243 for ; Mon, 21 Feb 2022 16:54:31 +0000 (UTC) Received: from gerbillo.redhat.com (unknown [10.39.193.29]) by smtp.corp.redhat.com (Postfix) with ESMTP id D585284A29 for ; Mon, 21 Feb 2022 16:54:30 +0000 (UTC) From: Paolo Abeni To: mptcp@lists.linux.dev Subject: [PATCH mptcp-next] Squash-to: "mptcp: more careful RM_ADDR generation" Date: Mon, 21 Feb 2022 17:54:13 +0100 Message-Id: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pabeni@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When the self-tests flushed the subflows on both sides of the MPTCP connections, the number of subflows actually deleted on each side is unreliable. The test code always flushes first the client side, but the actual delete operations is performed asynchronously, and one on more subflows could be processed after that the other end already deleted it. The grand total of the deleted subflows is expected to be in the [nr_subflows: 2* nr_subflows] range. Address the issue checking the total number of deleted subflows in the simult flush cases and enforcing the above constraint Signed-off-by: Paolo Abeni Tested-by: Matthieu Baerts --- .../testing/selftests/net/mptcp/mptcp_join.sh | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 8e6a5292175a..58320856a392 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1130,16 +1130,24 @@ chk_rm_nr() { local rm_addr_nr=3D$1 local rm_subflow_nr=3D$2 - local invert=3D${3:-""} + local invert + local simult local count local dump_stats local addr_ns local subflow_ns =20 + shift 2 + while [ -n "$1" ]; do + [ "$1" =3D "invert" ] && invert=3Dtrue + [ "$1" =3D "simult" ] && simult=3Dtrue + shift + done + if [ -z $invert ]; then addr_ns=3D$ns1 subflow_ns=3D$ns2 - elif [ $invert =3D "invert" ]; then + elif [ $invert =3D "true" ]; then addr_ns=3D$ns2 subflow_ns=3D$ns1 fi @@ -1158,6 +1166,25 @@ chk_rm_nr() echo -n " - sf " count=3D`ip netns exec $subflow_ns nstat -as | grep MPTcpExtRmSubflow | a= wk '{print $2}'` [ -z "$count" ] && count=3D0 + if [ -n "$simult" ]; then + local cnt=3D$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmSubflow = | awk '{print $2}') + local suffix + + # in case of simult flush, the subflow removal count on each side is + # unreliable + [ -z "$cnt" ] && cnt=3D0 + count=3D$((count + cnt)) + [ "$count" !=3D "$rm_subflow_nr" ] && suffix=3D"$count in [$rm_subflow_n= r:$((rm_subflow_nr*2))]" + if [ $count -ge "$rm_subflow_nr" ] && \ + [ "$count" -le "$((rm_subflow_nr *2 ))" ]; then + echo "[ ok ] $suffix" + else + echo "[fail] got $count RM_SUBFLOW[s] expected in range [$rm_subflow_nr= :$((rm_subflow_nr*2))]" + ret=3D1 + dump_stats=3D1 + fi + return + fi if [ "$count" !=3D "$rm_subflow_nr" ]; then echo "[fail] got $count RM_SUBFLOW[s] expected $rm_subflow_nr" ret=3D1 @@ -1646,7 +1673,7 @@ remove_tests() run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow chk_join_nr "flush subflows and signal" 3 3 3 chk_add_nr 1 1 - chk_rm_nr 1 1 invert + chk_rm_nr 1 3 invert simult =20 # subflows flush reset @@ -1657,7 +1684,7 @@ remove_tests() pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow chk_join_nr "flush subflows" 3 3 3 - chk_rm_nr 0 3 + chk_rm_nr 0 3 simult =20 # addresses flush reset @@ -1669,7 +1696,7 @@ remove_tests() run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow chk_join_nr "flush addresses" 3 3 3 chk_add_nr 3 3 - chk_rm_nr 3 3 invert + chk_rm_nr 3 3 invert simult =20 # invalid addresses flush reset @@ -1953,7 +1980,7 @@ add_addr_ports_tests() run_tests $ns1 $ns2 10.0.1.1 0 -8 -2 slow chk_join_nr "flush subflows and signal with port" 3 3 3 chk_add_nr 1 1 - chk_rm_nr 1 1 invert + chk_rm_nr 1 3 invert simult =20 # multiple addresses with port reset --=20 2.34.1