From nobody Tue May 7 05:49:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp901130piq; Tue, 29 Mar 2022 04:35:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz1wwn0Q0hYPhva5QVLkgPkyKxsLdJb9HhuINdDZEkwcdg/GpaH9ALML+Olv5mOIqUJhGa6 X-Received: by 2002:a05:6214:27e1:b0:441:651c:1cb5 with SMTP id jt1-20020a05621427e100b00441651c1cb5mr25210862qvb.71.1648553743719; Tue, 29 Mar 2022 04:35:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648553743; cv=none; d=google.com; s=arc-20160816; b=sUcNPTV6YwJGDl9FgcLpkRgHo+pleaLZVJxJ1HhU8ePIt4rLcz+mXUTVjIBLAWIgBS XhAmu0mjz4Agwv7ftaIsQbL2Z5AZFfH7d/GVqq/hVR3Kh+2JqMbQzXeXAt74cx+Wh/Lw BYO6hW89wRAhRNJegJtD3H3FYw+HpeC6XwyOvIGloGPxD/UedJIvn1+YHYu3+YzV7gPI YcO3LOaLufs9blqVPW4G29Zktzx3ktxbDTlKyyvIy6RiA5BZHWLDFmiN4RSB1s7RGjQH mMRHPSYCPrCNlBCJcfwVSLIVrhD9P0e4toxfETGYmWzctVoHg0HngZ/+1Kinv5Jq+fi0 FOSA== 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; bh=3F2rl6e/gTzmc0Dhu5tGecasBh4apkUN7Qku3xiEkmE=; b=ZeWlrJT/Ez39K5OhBAD0wJC41WYDjLrSGBcEnDwR2hFovrDzOxIyrYLSD9EaAj3Opi TFXrjEE2xOzokeY4NmHYq9/+v0HWJPtIyLOX/cNZ54vjtnupw7DUAoiF1256LYEVwo2K rxFNzOVWtpK/7uRq8sw9EgFACUTXfAxk73UpcVms3Z8aKivjAQmO/57LfvNVKhUeDVaY B6kouHR81Y5WgO4gboiGuNRvpMHnrS3pbVOEL5NBAZOGTlJxSn5CSWyQOJS7SP/bf6xM kmuKomiFukEl0UtVBuWHNPpYjm/JfOawovUCGGhkM98qxklJYoHQvjG8jOZI8PC9kDtZ mPhg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-4524-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4524-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id o12-20020ac85a4c000000b002e1fbf3c0e9si12012908qta.730.2022.03.29.04.35.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 29 Mar 2022 04:35:43 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4524-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-4524-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4524-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 0B9F61C09CF for ; Tue, 29 Mar 2022 11:35:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 04FCC7C; Tue, 29 Mar 2022 11:35:42 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from Chamillionaire.breakpoint.cc (Chamillionaire.breakpoint.cc [193.142.43.52]) (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 81614211E for ; Tue, 29 Mar 2022 11:35:40 +0000 (UTC) Received: from fw by Chamillionaire.breakpoint.cc with local (Exim 4.92) (envelope-from ) id 1nZA8K-0004uE-KY; Tue, 29 Mar 2022 13:35:32 +0200 From: Florian Westphal To: Cc: Florian Westphal Subject: [PATCH mptcp-next v3 1/4] mptcp: diag: switch to context structure Date: Tue, 29 Mar 2022 13:35:20 +0200 Message-Id: <20220329113523.19793-2-fw@strlen.de> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220329113523.19793-1-fw@strlen.de> References: <20220329113523.19793-1-fw@strlen.de> 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" Raw access to cb->arg[] is deprecated, use a context structure. Signed-off-by: Florian Westphal Reviewed-by: Mat Martineau --- no change. net/mptcp/mptcp_diag.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/net/mptcp/mptcp_diag.c b/net/mptcp/mptcp_diag.c index f44125dd6697..c4992eeb67d8 100644 --- a/net/mptcp/mptcp_diag.c +++ b/net/mptcp/mptcp_diag.c @@ -66,20 +66,28 @@ static int mptcp_diag_dump_one(struct netlink_callback = *cb, return err; } =20 +struct mptcp_diag_ctx { + long s_slot; + long s_num; +}; + static void mptcp_diag_dump(struct sk_buff *skb, struct netlink_callback *= cb, const struct inet_diag_req_v2 *r) { bool net_admin =3D netlink_net_capable(cb->skb, CAP_NET_ADMIN); + struct mptcp_diag_ctx *diag_ctx =3D (void *)cb->ctx; struct net *net =3D sock_net(skb->sk); struct inet_diag_dump_data *cb_data; struct mptcp_sock *msk; struct nlattr *bc; =20 + BUILD_BUG_ON(sizeof(cb->ctx) < sizeof(*diag_ctx)); + cb_data =3D cb->data; bc =3D cb_data->inet_diag_nla_bc; =20 - while ((msk =3D mptcp_token_iter_next(net, &cb->args[0], &cb->args[1])) != =3D - NULL) { + while ((msk =3D mptcp_token_iter_next(net, &diag_ctx->s_slot, + &diag_ctx->s_num)) !=3D NULL) { struct inet_sock *inet =3D (struct inet_sock *)msk; struct sock *sk =3D (struct sock *)msk; int ret =3D 0; @@ -101,7 +109,7 @@ static void mptcp_diag_dump(struct sk_buff *skb, struct= netlink_callback *cb, sock_put(sk); if (ret < 0) { /* will retry on the same position */ - cb->args[1]--; + diag_ctx->s_num--; break; } cond_resched(); --=20 2.35.1 From nobody Tue May 7 05:49:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp901109piq; Tue, 29 Mar 2022 04:35:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJztgvLgJmRkPLPEL6otz/WKLGi9XpRTKlEnW+wJ4mU4Nhz9X269bCJ3yXU57VGvHdJjdHhr X-Received: by 2002:a17:90b:390c:b0:1c7:9a94:1797 with SMTP id ob12-20020a17090b390c00b001c79a941797mr4078128pjb.221.1648553742071; Tue, 29 Mar 2022 04:35:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648553742; cv=none; d=google.com; s=arc-20160816; b=CQTq+imdwuWtfUN0zVmyXtX0f3TvA9AAMTr98M//3uTmrt9UXLnM8f1KplkO114zyH C2s42HcrYyC9QokZq9DAqH8YHcYlpVH+tA/4J5uK15fZxZrL8ssWTwIdHN/mk5GU3rY6 jS8uQSZsAvcftBsdZ29ENqEhVxRRtZ6GGu+dfEVAKhpy+krpWjKGg7+SpBUc1yqJsKEh KcwFVw4LBCF/AVDiWBhx+bxf9QYl6TVwUAYBfbyIAPlPi4c+zPvnk5UucCxUV0SkvesB YRbZCysj+DG9tc47MFMsqUPkkIRK4VmoosGrhhSPn3I9hg4Wuh7axbj2vtHDd960glz+ ri4A== 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; bh=48/e5Hwkqhpdga3K9AMCg/iI9bPB48k+dUfC7K1uvfc=; b=mHhEfqvvcILHc0aHP8+rEDGPcOxLz6yaECrnTbbzAcYyfaUKuv+P4XQ/z2HdztvcZY Rha43l8nQIY1bjN0jmly9YSfzsZRBPdorZobupHhOLu7eupOM3AZ/vKDE97MKB9e4c/4 tBPUHj/Q3AoZWRjg4RHEBWA1+jt0n1gyiBb0rWruqc4VsKXpDacoP1Qe8c0LTFaEa32F jVUvCYq+LWhYpgFmZFuFyW0njONLR79RuMOWTcQ9k+haYJnfhHVaBf2nTQosUiN1I8PR JvrFeX+jmUgHvNOugOsQcpZMr0l2CmQNnRJgNSMapc2aQlZ8RBUdcu5WidV0NcPSyu/Y 5X7w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-4523-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4523-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id b7-20020a170902bd4700b00153b2d16540si15314003plx.328.2022.03.29.04.35.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 29 Mar 2022 04:35:42 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4523-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; spf=pass (google.com: domain of mptcp+bounces-4523-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4523-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 956883E05CC for ; Tue, 29 Mar 2022 11:35:41 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 85104211F; Tue, 29 Mar 2022 11:35:40 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from Chamillionaire.breakpoint.cc (Chamillionaire.breakpoint.cc [193.142.43.52]) (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 0ECC17C for ; Tue, 29 Mar 2022 11:35:38 +0000 (UTC) Received: from fw by Chamillionaire.breakpoint.cc with local (Exim 4.92) (envelope-from ) id 1nZA8O-0004uM-RL; Tue, 29 Mar 2022 13:35:36 +0200 From: Florian Westphal To: Cc: Florian Westphal Subject: [PATCH mptcp-next v3 2/4] mptcp: remove locking in mptcp_diag_fill_info Date: Tue, 29 Mar 2022 13:35:21 +0200 Message-Id: <20220329113523.19793-3-fw@strlen.de> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220329113523.19793-1-fw@strlen.de> References: <20220329113523.19793-1-fw@strlen.de> 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" Problem is that listener iteration would call this from atomic context so this locking is not allowed. One way is to drop locks before calling the helper, but afaics the lock isn't really needed, all values are fetched via READ_ONCE(). Signed-off-by: Florian Westphal Reviewed-by: Mat Martineau --- no change. net/mptcp/sockopt.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index f949d22f52bd..826b0c1dae98 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -853,15 +853,11 @@ static int mptcp_getsockopt_first_sf_only(struct mptc= p_sock *msk, int level, int =20 void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info) { - struct sock *sk =3D &msk->sk.icsk_inet.sk; u32 flags =3D 0; - bool slow; u8 val; =20 memset(info, 0, sizeof(*info)); =20 - slow =3D lock_sock_fast(sk); - info->mptcpi_subflows =3D READ_ONCE(msk->pm.subflows); info->mptcpi_add_addr_signal =3D READ_ONCE(msk->pm.add_addr_signaled); info->mptcpi_add_addr_accepted =3D READ_ONCE(msk->pm.add_addr_accepted); @@ -882,8 +878,6 @@ void mptcp_diag_fill_info(struct mptcp_sock *msk, struc= t mptcp_info *info) info->mptcpi_snd_una =3D READ_ONCE(msk->snd_una); info->mptcpi_rcv_nxt =3D READ_ONCE(msk->ack_seq); info->mptcpi_csum_enabled =3D READ_ONCE(msk->csum_enabled); - - unlock_sock_fast(sk, slow); } EXPORT_SYMBOL_GPL(mptcp_diag_fill_info); =20 --=20 2.35.1 From nobody Tue May 7 05:49:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp901153piq; Tue, 29 Mar 2022 04:35:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwJdhetQBjF/Pavpdh0OHHg6a1ibP2UkwQHVxMKEeyO7YiV5J/qRMtjgnkye+JOcdK7qMSt X-Received: by 2002:a05:622a:194:b0:2e1:e733:5798 with SMTP id s20-20020a05622a019400b002e1e7335798mr27009890qtw.104.1648553746283; Tue, 29 Mar 2022 04:35:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648553746; cv=none; d=google.com; s=arc-20160816; b=WOVImS2bXgeVrrQGo0gUC65vKD3DqoqH/ZdVY8guqP/2SPpKLKDbu385AKf4ToJcTz 1pXE/N7TulwhvLZqOfRGYkxzMd4eakfGCzpZm8tt0bEBnBRkdoVXspGxmrlCYAF109H9 4ZshLFAYeHpM29lHwcpzE0VUfc7Tlh0GOazH57aVlezc04WaFh9PGA7SWjZucWldXvSu UDzLeaXyLQO2AHyArs7CoKE9piFV+n0gXYrwf+4jgUkSG3nAR+Yo1J1u9g+vUSXZi/bI zqb+dbifeCstXuUibQ4zt7O+Om+xZNlCbzFkB5SQQpohhpy9o/154g30LMWm5KUCLIXk b7Dw== 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; bh=5nJ7PuPBElyeSTmWW18NHtoa7bqBAlt8zL7RUymUDIU=; b=Rq7HidCprjZ0PJhCks8U564BDCUdokikjR6fRXpNzwMP/C7q2R5nnG89ubW8QtSOQP iIr5rs0SvuJgoIHC6CxdfqXngK5CSm841DyRHagzzDbMg1vPBmuCaKhLqPU8Q/P4LF23 GhzAKL4QjvsyFlXB7YGnj9hTeAz6JmdlQ9fTWfLnCxVlNaSGN/UrcS6lzjhza5AvthxG VKbylXUhwobb8zGkpklynhayhsg5L6nUtUpcA+k4cDosg95MR/0mzCNRh3HHkwTPIl7+ p1v9gO3sMDa0qEbQ24sebdiB7sRQkCBIouwLNe1D/Oh/wONmAisp8FbuMq4iRO3D0KQa iZXg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-4525-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4525-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id w8-20020a05622a134800b002e06509adf3si11370952qtk.0.2022.03.29.04.35.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 29 Mar 2022 04:35:46 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4525-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-4525-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4525-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 ED7601C0781 for ; Tue, 29 Mar 2022 11:35:45 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 60C987C; Tue, 29 Mar 2022 11:35:44 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from Chamillionaire.breakpoint.cc (Chamillionaire.breakpoint.cc [193.142.43.52]) (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 D9E64211E for ; Tue, 29 Mar 2022 11:35:42 +0000 (UTC) Received: from fw by Chamillionaire.breakpoint.cc with local (Exim 4.92) (envelope-from ) id 1nZA8T-0004uY-31; Tue, 29 Mar 2022 13:35:41 +0200 From: Florian Westphal To: Cc: Florian Westphal Subject: [PATCH mptcp-next v3 3/4] mptcp: listen diag dump support Date: Tue, 29 Mar 2022 13:35:22 +0200 Message-Id: <20220329113523.19793-4-fw@strlen.de> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220329113523.19793-1-fw@strlen.de> References: <20220329113523.19793-1-fw@strlen.de> 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" makes 'ss -Ml' show mptcp listen sockets. Iterate over the tcp listen sockets and pick those that have mptcp ulp info attached. mptcp_diag_get_info() is modified to prefer msk->first for mptcp sockets in listen state. This reports accurate number for recv and send queue (pending / max connection backlog counters). Sample output: ss -Mil State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 20 127.0.0.1:12000 0.0.0.0:* subflows_max:2 Signed-off-by: Florian Westphal Reviewed-by: Mat Martineau --- Changes: - init nlattr *bc properly - fix sock_put indentation net/mptcp/mptcp_diag.c | 91 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/net/mptcp/mptcp_diag.c b/net/mptcp/mptcp_diag.c index c4992eeb67d8..dbb6d876a203 100644 --- a/net/mptcp/mptcp_diag.c +++ b/net/mptcp/mptcp_diag.c @@ -69,8 +69,83 @@ static int mptcp_diag_dump_one(struct netlink_callback *= cb, struct mptcp_diag_ctx { long s_slot; long s_num; + unsigned int l_slot; + unsigned int l_num; }; =20 +static void mptcp_diag_dump_listeners(struct sk_buff *skb, struct netlink_= callback *cb, + const struct inet_diag_req_v2 *r, + bool net_admin) +{ + struct inet_diag_dump_data *cb_data =3D cb->data; + struct mptcp_diag_ctx *diag_ctx =3D (void *)cb->ctx; + struct nlattr *bc =3D cb_data->inet_diag_nla_bc; + struct net *net =3D sock_net(skb->sk); + int i; + + for (i =3D diag_ctx->l_slot; i < INET_LHTABLE_SIZE; i++) { + struct inet_listen_hashbucket *ilb; + struct hlist_nulls_node *node; + struct sock *sk; + int num =3D 0; + + ilb =3D &tcp_hashinfo.listening_hash[i]; + + rcu_read_lock(); + spin_lock(&ilb->lock); + sk_nulls_for_each(sk, node, &ilb->nulls_head) { + const struct mptcp_subflow_context *ctx =3D mptcp_subflow_ctx(sk); + struct inet_sock *inet =3D inet_sk(sk); + int ret; + + if (num < diag_ctx->l_num) + goto next_listen; + + if (!ctx || strcmp(inet_csk(sk)->icsk_ulp_ops->name, "mptcp")) + goto next_listen; + + sk =3D ctx->conn; + if (!sk || !net_eq(sock_net(sk), net)) + goto next_listen; + + if (r->sdiag_family !=3D AF_UNSPEC && + sk->sk_family !=3D r->sdiag_family) + goto next_listen; + + if (r->id.idiag_sport !=3D inet->inet_sport && + r->id.idiag_sport) + goto next_listen; + + if (!refcount_inc_not_zero(&sk->sk_refcnt)) + goto next_listen; + + ret =3D sk_diag_dump(sk, skb, cb, r, bc, net_admin); + + sock_put(sk); + + if (ret < 0) { + spin_unlock(&ilb->lock); + rcu_read_unlock(); + diag_ctx->l_slot =3D i; + diag_ctx->l_num =3D num; + return; + } + diag_ctx->l_num =3D num + 1; + num =3D 0; +next_listen: + ++num; + } + spin_unlock(&ilb->lock); + rcu_read_unlock(); + + cond_resched(); + diag_ctx->l_num =3D 0; + } + + diag_ctx->l_num =3D 0; + diag_ctx->l_slot =3D i; +} + static void mptcp_diag_dump(struct sk_buff *skb, struct netlink_callback *= cb, const struct inet_diag_req_v2 *r) { @@ -114,6 +189,9 @@ static void mptcp_diag_dump(struct sk_buff *skb, struct= netlink_callback *cb, } cond_resched(); } + + if ((r->idiag_states & TCPF_LISTEN) && r->id.idiag_dport =3D=3D 0) + mptcp_diag_dump_listeners(skb, cb, r, net_admin); } =20 static void mptcp_diag_get_info(struct sock *sk, struct inet_diag_msg *r, @@ -124,6 +202,19 @@ static void mptcp_diag_get_info(struct sock *sk, struc= t inet_diag_msg *r, =20 r->idiag_rqueue =3D sk_rmem_alloc_get(sk); r->idiag_wqueue =3D sk_wmem_alloc_get(sk); + + if (inet_sk_state_load(sk) =3D=3D TCP_LISTEN) { + struct sock *lsk =3D READ_ONCE(msk->first); + + if (lsk) { + /* override with settings from tcp listener, + * so Send-Q will show accept queue. + */ + r->idiag_rqueue =3D READ_ONCE(lsk->sk_ack_backlog); + r->idiag_wqueue =3D READ_ONCE(lsk->sk_max_ack_backlog); + } + } + if (!info) return; =20 --=20 2.35.1 From nobody Tue May 7 05:49:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp901183piq; Tue, 29 Mar 2022 04:35:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwAG9Ra4QJs9J4YQJfQY9iuvDHJFP6C8HpUD4FUmibLL3lBE4JuidDLtvx2Qj2bVaKLVqy7 X-Received: by 2002:a63:d454:0:b0:386:86:6aaa with SMTP id i20-20020a63d454000000b0038600866aaamr1725637pgj.60.1648553749865; Tue, 29 Mar 2022 04:35:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648553749; cv=none; d=google.com; s=arc-20160816; b=rpeHnDU/kiraq3NnY+XB+VGzVRu1a+JIebntrwE/0//VpUiONiOkIjqyXAGegN7Sqr GVACg1BuSqn0cVph9Z3iAjxfJj6jGKnzlfWnmH9hdMTAoNMGgrdkaZfdllcUJr1tB+OM 8F1oeMFhU2Q6QAthU2NPqCNL5ZK7CFCqOWkWcG5M29WM7xP8bd0sGDnAcpLICVDqelmT +jsxk2KzjJdqg2IoYRnwqlJlQ0Gs/x1aZGYV1D+50JTvGdUmlJOO1vbHCmycak3WdgAv Y5uq8UM30vdn/uJK3h9Cf+Q8spWrMjui9ziSbSiEACxx+g8zNMWblug+2aDWRtYce7F6 uWLg== 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; bh=cHk51gx2DsKha/JIVt0XtjCgJJK+2I8cl6NvvSpAT4I=; b=xgIi5NPjTxlfeAFrWcP1fg6RGqXcXO7OIUMr+7DNVjOEes62nVobFkDkYKOAT+HMey rSgcO9wca/kJ8/9d3nM22ucxXbGe92O1Kmucz3yYp2Qe9G/mQ4lBdPv4mpS6/sdL2p46 pXGFfpBLnOpWSwgkYIFnQ9+nRJg0fJsQFQQYP3btLPSK68hpG8GtUcVp18m2ngOvduWv 9Ew32D+rLDjNwaZ8FZHu1lf7CjkWmemg0xSEhrmfbF7flzc8E2mm/4/nRZQOOT+7xXqe gkHTMrLQGsTzEB60uvb4Kk7s1jAg8wevGLif9fdQhYmMzXRnN3+MiJ2UMxAa0KlxNWz8 E5Jw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-4526-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4526-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id n14-20020a170902d2ce00b001541561fef7si17909544plc.41.2022.03.29.04.35.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 29 Mar 2022 04:35:49 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4526-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; spf=pass (google.com: domain of mptcp+bounces-4526-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4526-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 96AF83E0477 for ; Tue, 29 Mar 2022 11:35:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8B6F0211E; Tue, 29 Mar 2022 11:35:48 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from Chamillionaire.breakpoint.cc (Chamillionaire.breakpoint.cc [193.142.43.52]) (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 249057C for ; Tue, 29 Mar 2022 11:35:47 +0000 (UTC) Received: from fw by Chamillionaire.breakpoint.cc with local (Exim 4.92) (envelope-from ) id 1nZA8X-0004uv-Ae; Tue, 29 Mar 2022 13:35:45 +0200 From: Florian Westphal To: Cc: Florian Westphal Subject: [PATCH mptcp-next v3 4/4] selftests/mptcp: add diag listen tests Date: Tue, 29 Mar 2022 13:35:23 +0200 Message-Id: <20220329113523.19793-5-fw@strlen.de> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220329113523.19793-1-fw@strlen.de> References: <20220329113523.19793-1-fw@strlen.de> 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" Check dumping of mptcp listener sockets: 1. filter by dport should not return any results 2. filter by sport should return listen sk 3. filter by saddr+sport should return listen sk 4. no filter should return listen sk Signed-off-by: Florian Westphal Reviewed-by: Mat Martineau --- new in v3. tools/testing/selftests/net/mptcp/diag.sh | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/self= tests/net/mptcp/diag.sh index ff821025d309..9dd43d7d957b 100755 --- a/tools/testing/selftests/net/mptcp/diag.sh +++ b/tools/testing/selftests/net/mptcp/diag.sh @@ -71,6 +71,43 @@ chk_msk_remote_key_nr() __chk_nr "grep -c remote_key" $* } =20 +__chk_listen() +{ + local filter=3D"$1" + local expected=3D$2 + + shift 2 + msg=3D$* + + nr=3D$(ss -N $ns -Ml "$filter" | grep -c LISTEN) + printf "%-50s" "$msg" + + if [ $nr !=3D $expected ]; then + echo "[ fail ] expected $expected found $nr" + ret=3D$test_cnt + else + echo "[ ok ]" + fi +} + +chk_msk_listen() +{ + lport=3D$1 + local msg=3D"check for listen socket" + + # destination port search should always return empty list + __chk_listen "dport $lport" 0 "listen match for dport $lport" + + # should return 'our' mptcp listen socket + __chk_listen "sport $lport" 1 "listen match for sport $lport" + + __chk_listen "src inet:0.0.0.0:$lport" 1 "listen match for saddr and spor= t" + + __chk_listen "" 1 "all listen sockets" + + nr=3D$(ss -Ml $filter | wc -l) +} + # $1: ns, $2: port wait_local_port_listen() { @@ -113,6 +150,7 @@ echo "a" | \ 0.0.0.0 >/dev/null & wait_local_port_listen $ns 10000 chk_msk_nr 0 "no msk on netns creation" +chk_msk_listen 10000 =20 echo "b" | \ timeout ${timeout_test} \ --=20 2.35.1