From nobody Mon Feb 9 16:51:32 2026 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp239586pis; Tue, 3 May 2022 19:39:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwnfB/QoD0bYeK92geEhoGBxHkYsy04M+Xb7UNtijwp6eEW7XSYv41OB0zfdg14FqC/jRJ7 X-Received: by 2002:a17:906:cc8b:b0:6f3:a107:b21b with SMTP id oq11-20020a170906cc8b00b006f3a107b21bmr18377212ejb.337.1651631958968; Tue, 03 May 2022 19:39:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651631958; cv=none; d=google.com; s=arc-20160816; b=CoRvlC5sQjMAImrYdYcL/lvty9CIezMeMjcggkCJXQ4C7cirCwRAZTiffaqVhOuTAO sv0yMxROq1bXekAUsbP928YrDK3GQyoPXbcnN0RoYifJ4WHH2MzqXeuyYwZrcOG7v20q HS6hW8/7xqrhsfhhEnOPdTcYCxP8zIf/R5jXo1If4nWNecyHb5WroOe/ChAqyfzte1bB B9dHtTpfpBzGjdYlYAYPJNzPVyO9Kb2mHsZHRuLedr5IPoskSNmvrTm/S0B2aNcmVZmA pPNbf+WEwP5hx7VOvYm4RLQEFvRfZRevGvREd4p60YaGqRrISo4ZmiX8m+lL7Vt7bw4s 7JWg== 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=wRezcm6aN2ws60krSBFIlANKxm25tTEj0vwdP/yAIps=; b=CgOgtETIE6TVrM3MUnBUydf5m3nJu6qajdv2JV/rStl39symVP2q2q2oASuA9DhUBn +zmQ1pUIVVEB9U4f1VzIFec2h1oaEGB1N4QFuexxsm2rDe0cJxkpw6Sp0ne04ugynW0I zpORA71MsHS0H/rwsFo3RtC/evARzkXdpFlRBEl4gwtn1Tzu7DFiLJV2hXdFWJefHiHh Gdb4u/mher5KLJu5flqiXXyPOyREk6cAiKgYaw2bWnugH6XK3PToY335ot3N0QVmqfoV WoTeLcNx6hVRNoRYki6OThn/k3k3U4/7aa8YU+RkhXALSsNdLJB0vbsziemiyqY9X+Mw nnAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="hnYuClM/"; spf=pass (google.com: domain of mptcp+bounces-5079-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5079-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id e17-20020a17090724d100b006e86e278dcesi14882402ejn.766.2022.05.03.19.39.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 May 2022 19:39:18 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5079-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="hnYuClM/"; spf=pass (google.com: domain of mptcp+bounces-5079-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5079-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 da.mirrors.kernel.org (Postfix) with ESMTPS id 0CBEA2E09BE for ; Wed, 4 May 2022 02:39:17 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DC13E20E8; Wed, 4 May 2022 02:39:11 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (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 678B820EE for ; Wed, 4 May 2022 02:39:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651631950; x=1683167950; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sW7hf1a4QtQVlP6hNueUerYRWH19zVXDJGN2cz//nbQ=; b=hnYuClM/YS4lS8p+QatkQqotGbeZeY1tQDaPBfLu8lIvoVbE/cQ91F5Z n4uBtSE1UrIveq7fNSvw60hWJ4WrEwZh3M5JuMp8tuZuy0PEVqfxyaMy8 Ck3gX5oWvOqkjQ1HZFZS34Hu8lFuE9mwyfDedTqu2wEBssGgJRdrRTTZC BAgc1Oqmx9yUlx3bYzxddJhFXmfhgv8gR/eQi/Ppu6RJTTXC2l3ew2NOS ctJespZ4sYzqlcb5qSZ0qhpsgtSQCUPUE+ACmRu28tyeCoXV76OKsemoF Gmy6Rb7//haCw6IXDgNrbEt+bX82BO/116XWRHisKDdzYi76U7jJW2nAK Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10336"; a="255109477" X-IronPort-AV: E=Sophos;i="5.91,196,1647327600"; d="scan'208";a="255109477" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 May 2022 19:39:08 -0700 X-IronPort-AV: E=Sophos;i="5.91,196,1647327600"; d="scan'208";a="584493405" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.20.240]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 May 2022 19:39:08 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Kishen Maloor , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 12/13] selftests: mptcp: create listeners to receive MPJs Date: Tue, 3 May 2022 19:39:00 -0700 Message-Id: <20220504023901.277012-13-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220504023901.277012-1-mathew.j.martineau@linux.intel.com> References: <20220504023901.277012-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: Kishen Maloor This change updates the "pm_nl_ctl" testing sample with a "listen" option to bind a MPTCP listening socket to the provided addr+port. This option is exercised in testing subflow initiation scenarios in conjunction with userspace path managers where the MPTCP application does not hold an active listener to accept requests for new subflows. Acked-by: Paolo Abeni Signed-off-by: Kishen Maloor Signed-off-by: Mat Martineau --- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/= selftests/net/mptcp/pm_nl_ctl.c index f881d8548153..6a2f4b981e1d 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -25,6 +25,9 @@ #ifndef MPTCP_PM_EVENTS #define MPTCP_PM_EVENTS "mptcp_pm_events" #endif +#ifndef IPPROTO_MPTCP +#define IPPROTO_MPTCP 262 +#endif =20 static void syntax(char *argv[]) { @@ -41,6 +44,7 @@ static void syntax(char *argv[]) fprintf(stderr, "\tdump\n"); fprintf(stderr, "\tlimits [ ]\n"); fprintf(stderr, "\tevents\n"); + fprintf(stderr, "\tlisten \n"); exit(0); } =20 @@ -1219,6 +1223,54 @@ int get_set_limits(int fd, int pm_family, int argc, = char *argv[]) return 0; } =20 +int add_listener(int argc, char *argv[]) +{ + struct sockaddr_storage addr; + struct sockaddr_in6 *a6; + struct sockaddr_in *a4; + u_int16_t family; + int enable =3D 1; + int sock; + int err; + + if (argc < 4) + syntax(argv); + + memset(&addr, 0, sizeof(struct sockaddr_storage)); + a4 =3D (struct sockaddr_in *)&addr; + a6 =3D (struct sockaddr_in6 *)&addr; + + if (inet_pton(AF_INET, argv[2], &a4->sin_addr)) { + family =3D AF_INET; + a4->sin_family =3D family; + a4->sin_port =3D htons(atoi(argv[3])); + } else if (inet_pton(AF_INET6, argv[2], &a6->sin6_addr)) { + family =3D AF_INET6; + a6->sin6_family =3D family; + a6->sin6_port =3D htons(atoi(argv[3])); + } else + error(1, errno, "can't parse ip %s", argv[2]); + + sock =3D socket(family, SOCK_STREAM, IPPROTO_MPTCP); + if (sock < 0) + error(1, errno, "can't create listener sock\n"); + + if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(enable))) { + close(sock); + error(1, errno, "can't set SO_REUSEADDR on listener sock\n"); + } + + err =3D bind(sock, (struct sockaddr *)&addr, + ((family =3D=3D AF_INET) ? sizeof(struct sockaddr_in) : + sizeof(struct sockaddr_in6))); + + if (err =3D=3D 0 && listen(sock, 30) =3D=3D 0) + pause(); + + close(sock); + return 0; +} + int set_flags(int fd, int pm_family, int argc, char *argv[]) { char data[NLMSG_ALIGN(sizeof(struct nlmsghdr)) + @@ -1375,6 +1427,8 @@ int main(int argc, char *argv[]) return set_flags(fd, pm_family, argc, argv); else if (!strcmp(argv[1], "events")) return capture_events(fd, events_mcast_grp); + else if (!strcmp(argv[1], "listen")) + return add_listener(argc, argv); =20 fprintf(stderr, "unknown sub-command: %s", argv[1]); syntax(argv); --=20 2.36.0