From nobody Tue Feb 10 04:13:02 2026 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp475159piq; Thu, 7 Apr 2022 16:40:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwVts99XRS3Cpea8HqxglG2QsBbdnrT1X0IroiriVgwN3/Rq2sn+0jJRcVqRthh54JznYlh X-Received: by 2002:a17:903:1d1:b0:154:61ec:749b with SMTP id e17-20020a17090301d100b0015461ec749bmr16383871plh.52.1649374853904; Thu, 07 Apr 2022 16:40:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649374853; cv=none; d=google.com; s=arc-20160816; b=DbUseVx2Cl5naGCLq+oYj/4QsuL9X6vsFNZUxWAR+fR4/e2WjYRGeFe8JtlYDFJ4UY EUJI3BW44e7wr/2HCZH63qsp8ZR8pYpmENWUCcc8c06crgTf3fdc3kIlYCN9NtOENdug jrUWuBc9v2ytKXE9WKxQZ9WuMz+tEr6SjgEoXT7DcvpAIUCGlJ4r6DEBbXBoK6eltTlk bR/3LzImHloaTgORiYozXh63A8UpDc6hvpJwpS8YMRczz/qot/RWvH8EBwzLB0p51DmO AxQzh83G3Qo48Xs5/p+rBKaBC7Ea0L44Sx+pBFI+/K43lG1O/vfUrv0kdDrEGDd3Ami+ 64rA== 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:to:from:dkim-signature; bh=G8jTCYSvmTaRB6yRTu6+S7h7wjY91OImblbHHsvJO1g=; b=O5UnKbKG21PoWGFJx15P7QTyFV1sSBgPt5wkxyPj/fXWjijru/pFdy/YtIXLWyS+B0 5cLXqe57bUDjKysjf3zEOUFIkmOLHbAgcMCNHaGV3dJvq3DmLajEd6NpIJtU3AoWfb+E MgmmfbK6dgJdY3i8EpOURsIOj70BO7oj0zYI54lXTDtq8jyfXBqW289l2QakCuXUGkqn IfWNQs5cKlPDFxvjEvj85hU9sIXJ/YwNDkcCmQw3mUConE59MexEEU6jqVWOsHLdnJvQ W7KgpVYq64/lW65egsUQmgfXIV4wQqonTbpvXNXz4BYkAhCHRYWrV+3Uw9XMmH6oruaF Baig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NVBg7gVT; spf=pass (google.com: domain of mptcp+bounces-4662-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4662-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id rm13-20020a17090b3ecd00b001cabb2abf33si3331915pjb.72.2022.04.07.16.40.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 07 Apr 2022 16:40:53 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4662-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NVBg7gVT; spf=pass (google.com: domain of mptcp+bounces-4662-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4662-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 7B90C3E0EC7 for ; Thu, 7 Apr 2022 23:40:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A885E3D7D; Thu, 7 Apr 2022 23:40:43 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 545583D76 for ; Thu, 7 Apr 2022 23:40:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649374842; x=1680910842; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=tfzehsJBmGdChZMPc0RL5lKqpr+R150YHyu/cK7Z6gI=; b=NVBg7gVTnsP3/lkfG7d15V3oLwtvJng9TiFaSAc1zP1Y7Bn/4ethpTim RPG2r/ZShVRn5aaGjmhjAfXm0+XksSzF4tiTvicTfGKJAwLk6FLeZv0z0 urnI403KxjUPWAD6VZYJ8qQOL17BYcrLHyOXCIwr7kjIFgLCkGxsfoCVC czFpeHDmQvRU1FEAuqmW34BqUTXCgz0pzYvT1S3VZVl2sR4962HT9EcrE 3WJTz4ZUECy+pEavAX3v0vstbmLuAtRDcEvDNLzZG3a2I9UXe4DWiPpIH sI1eZOF/MNCu57L9oVWpWATIePxA3fssH7ZrB+uM6FZiZEfmRuZmymrOF g==; X-IronPort-AV: E=McAfee;i="6400,9594,10310"; a="259062021" X-IronPort-AV: E=Sophos;i="5.90,242,1643702400"; d="scan'208";a="259062021" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2022 16:40:37 -0700 X-IronPort-AV: E=Sophos;i="5.90,242,1643702400"; d="scan'208";a="571270974" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2022 16:40:36 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v8 13/14] selftests: mptcp: create listeners to receive MPJs Date: Thu, 7 Apr 2022 19:40:28 -0400 Message-Id: <20220407234029.1774481-14-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220407234029.1774481-1-kishen.maloor@intel.com> References: <20220407234029.1774481-1-kishen.maloor@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" 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. Signed-off-by: Kishen Maloor --- 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.31.1