From nobody Mon Apr 29 10:04:58 2024 Received: from mail-pj1-f66.google.com (mail-pj1-f66.google.com [209.85.216.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E17BA4E for ; Fri, 7 Oct 2022 09:31:38 +0000 (UTC) Received: by mail-pj1-f66.google.com with SMTP id a5-20020a17090aa50500b002008eeb040eso6634151pjq.1 for ; Fri, 07 Oct 2022 02:31:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nO7JZOj8eZzaZowvWDLnLkzvnwe/mqL013eA6SW/Fbk=; b=m/aOL8Ezs4MzAZiGBVy7ISB0eiKZNZOoXQp9YXfI1zKdXKPj4hyp2gyxXud2pwMc7p nwxKlYaZh63lmWnEk0pfZMvaK7tMt39pDjDGOoK8imt6Fukrvr3koTlSFSED9CzCh1HH A9TcQmfiW4oV86lHAEuKlqY7zU+3X3Zy4b3yt4B6EhKB1oAEkOwuWOtFpV93DvzpjnwR rwW4bJpViraycnq0xCikfFGIfO5nXK2BjYbozYMg0mNWowkQjYjBHE/UqEME5o957Gwi emdXqVySBuUqen9mOqeQhPHj0NMQZdWXh+7+g9Ld027j1F2BdKfcwbbHaI/OvwhlVyCR YZuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nO7JZOj8eZzaZowvWDLnLkzvnwe/mqL013eA6SW/Fbk=; b=QS6534Se61ZKxODi5MpgSBNlGbMqjg/13ohG6jCotaIbP9ErErySQETPnh+WYyKWSa okvj5LEYSGcL+LcXesmkBklu7oVPn+dk5XIRquwqOVwKp54cVYtJ3PdZ4/NzUGd147nS KjUkdBuJIeQ0niVkEkwrbEmcj7FCF/H09j2LXgdlWAJx1bQQR3JgJQkWqTewHPIcXOjR ZZeL0Tiwwiz0imGhpKAD1orv9ltCcrgK05CFaYBHODFHM6eIM77u2TOnFVhZut6tih+k MSHz/UW82d9jaH7CUEs1iHuc29vmo8VsLSU6vPqaWrkyzj+er/jnU3yK/7/NymdLHoiC 3DyQ== X-Gm-Message-State: ACrzQf1geUg+duclXaetZTVSdInzA11cOJmSGZj6YepoRRyTITlyfWHp 99UKsmFEggTCxugFY5W4GZNPuBmqx6wwmQ== X-Google-Smtp-Source: AMsMyM5gCz3ZEY3yP4Nud7C9ErUm3cElGmuQh63myX3B0k4D1NwZIx4OCJZ9JirPvs97WHAte3ilsQ== X-Received: by 2002:a17:902:6807:b0:17f:7fa2:be26 with SMTP id h7-20020a170902680700b0017f7fa2be26mr4338939plk.34.1665135097518; Fri, 07 Oct 2022 02:31:37 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.87]) by smtp.gmail.com with ESMTPSA id 61-20020a17090a0fc300b001fd7e56da4csm4187421pjz.39.2022.10.07.02.31.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Oct 2022 02:31:37 -0700 (PDT) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: mathew.j.martineau@linux.intel.com Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v5 1/3] mptcp: introduce 'sk' to replace 'sock->sk' in mptcp_listen() Date: Fri, 7 Oct 2022 17:29:20 +0800 Message-Id: <20221007092922.13169-2-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221007092922.13169-1-imagedong@tencent.com> References: <20221007092922.13169-1-imagedong@tencent.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: Menglong Dong 'sock->sk' is used frequently in mptcp_listen(). Therefore, we can introduce the 'sk' and replace 'sock->sk' with it. Signed-off-by: Menglong Dong Reviewed-by: Mat Martineau --- net/mptcp/protocol.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 1aa940928b4f..04d92dc0941f 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3642,12 +3642,13 @@ static int mptcp_stream_connect(struct socket *sock= , struct sockaddr *uaddr, static int mptcp_listen(struct socket *sock, int backlog) { struct mptcp_sock *msk =3D mptcp_sk(sock->sk); + struct sock *sk =3D sock->sk; struct socket *ssock; int err; =20 pr_debug("msk=3D%p", msk); =20 - lock_sock(sock->sk); + lock_sock(sk); ssock =3D __mptcp_nmpc_socket(msk); if (!ssock) { err =3D -EINVAL; @@ -3655,16 +3656,16 @@ static int mptcp_listen(struct socket *sock, int ba= cklog) } =20 mptcp_token_destroy(msk); - inet_sk_state_store(sock->sk, TCP_LISTEN); - sock_set_flag(sock->sk, SOCK_RCU_FREE); + inet_sk_state_store(sk, TCP_LISTEN); + sock_set_flag(sk, SOCK_RCU_FREE); =20 err =3D ssock->ops->listen(ssock, backlog); - inet_sk_state_store(sock->sk, inet_sk_state_load(ssock->sk)); + inet_sk_state_store(sk, inet_sk_state_load(ssock->sk)); if (!err) - mptcp_copy_inaddrs(sock->sk, ssock->sk); + mptcp_copy_inaddrs(sk, ssock->sk); =20 unlock: - release_sock(sock->sk); + release_sock(sk); return err; } =20 --=20 2.37.2 From nobody Mon Apr 29 10:04:58 2024 Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E827BA4E for ; Fri, 7 Oct 2022 09:31:39 +0000 (UTC) Received: by mail-pg1-f195.google.com with SMTP id e129so4146436pgc.9 for ; Fri, 07 Oct 2022 02:31:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oOQDNU+tpQiTofOoC1wShftRml644KUfUVNzyJL61kQ=; b=jbZ16Z/gT109JJzqzR3AIsqRMTypqrayYq0gB4/xbOhMnmKC+JFp2V/a8VW0DZ2Nth cMxtmH9xlS0qTmh6//PlOXh6/Gh7rSvWwEol5mTG07rFtx6jPHbYpHV7qm04A0FwMCU0 5q0Mp1wwvdYcrEfmJC6KhW5VmoUfVs9r+1GrKsIB0mUhogIWru5mZETG/EUJaEvI4Tjr CQFWhKHKPf+95hglgAsPfvxE06xSybQyb/NRtmmQ9hVquZOHfYgLuQq3O13+oa0NnZtb pX5EUHC3nTYRY65Y/cBQGPvB7GIKgYmD9YdJ+oTGhvK/zfULaCuQUtoSmvxr6AEKdxHW 3How== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oOQDNU+tpQiTofOoC1wShftRml644KUfUVNzyJL61kQ=; b=fsKdb/jhHfUj6xAPj1tuajlK7v33vG30Jaq1q2+W8/C9PHC65NGH8lXhqpuw2xFiC6 ymBfHbAm9ArYyxFRxYAIUZfTuUL1r2+Gn3noHMFk8IOcFVLqtQVxr/yE933zMui9sAll XaofA0H5hDe3qoiq98iPO4iQ2+p+d5qdwTnbX1U0AvQSafSvLKyCsysrBygZnhpwth0s b5d4rxyRQtbn4FBG0XqFenJg2uRu7rPtKsUX9GiaaidG0lnru6w3K+U8YVKjp5GLd4pR CzTHLEII9TCwez8/vi/bJe4SqEfctK2sRXlerXIpXRLpilorll8X+ZIuQfL+pa+lGntd 1xJg== X-Gm-Message-State: ACrzQf1S5RXFZr+0pwYUyxCzjjbhCRkT+6ReoCyNnAvSO7sLFt9yJt0o TLdxHOcYzJU6ApdWG9IZW80= X-Google-Smtp-Source: AMsMyM4wOeud4iOn5jJdX9aooxrmpnUCexM2XClsKfp8FAD278UURkB2sEgxk1+d2CYmK4/hmrpq+Q== X-Received: by 2002:a63:5a05:0:b0:434:23a5:a5ca with SMTP id o5-20020a635a05000000b0043423a5a5camr3751073pgb.515.1665135099447; Fri, 07 Oct 2022 02:31:39 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.87]) by smtp.gmail.com with ESMTPSA id 61-20020a17090a0fc300b001fd7e56da4csm4187421pjz.39.2022.10.07.02.31.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Oct 2022 02:31:38 -0700 (PDT) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: mathew.j.martineau@linux.intel.com Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v5 2/3] mptcp: add statistics for mptcp socket in use Date: Fri, 7 Oct 2022 17:29:21 +0800 Message-Id: <20221007092922.13169-3-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221007092922.13169-1-imagedong@tencent.com> References: <20221007092922.13169-1-imagedong@tencent.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: Menglong Dong Do the statistics of mptcp socket in use with sock_prot_inuse_add(). Therefore, we can get the count of used mptcp socket from /proc/net/protocols: & cat /proc/net/protocols protocol size sockets memory press maxhdr slab module cl co di ac io= in de sh ss gs se re sp bi br ha uh gp em MPTCPv6 2048 0 0 no 0 yes kernel y n y y y= y y y y y y y n n n y y y n MPTCP 1896 1 0 no 0 yes kernel y n y y y= y y y y y y y n n n y y y n Signed-off-by: Menglong Dong Reviewed-by: Mat Martineau --- v5: - rebase to solve merge conflict v4: - rename MPTCP_DESTROIED to MPTCP_DESTROYED v2: - decrease the statistics for listening mptcp socket inuse with mptcp_listen_inuse_dec() - add MPTCP_DESTROIED flags to store if mptcp_destroy_common() was called on the msk. For fallback case, we need to decrease the statistics only once, and mptcp_destroy_common() can be called more than once. --- net/mptcp/protocol.c | 22 +++++++++++++++++++++- net/mptcp/protocol.h | 1 + net/mptcp/subflow.c | 3 +++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 04d92dc0941f..3d1570a9d3e9 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2974,6 +2974,16 @@ static void mptcp_copy_inaddrs(struct sock *msk, con= st struct sock *ssk) inet_sk(msk)->inet_rcv_saddr =3D inet_sk(ssk)->inet_rcv_saddr; } =20 +static void mptcp_listen_inuse_dec(struct sock *sk) +{ + struct mptcp_sock *msk =3D mptcp_sk(sk); + struct socket *ssock; + + ssock =3D __mptcp_nmpc_socket(msk); + if (ssock && inet_sk_state_load(ssock->sk) =3D=3D TCP_LISTEN) + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); +} + static int mptcp_disconnect(struct sock *sk, int flags) { struct mptcp_sock *msk =3D mptcp_sk(sk); @@ -2986,6 +2996,7 @@ static int mptcp_disconnect(struct sock *sk, int flag= s) if (mptcp_sk(sk)->token) mptcp_event(MPTCP_EVENT_CLOSED, mptcp_sk(sk), NULL, GFP_KERNEL); =20 + mptcp_listen_inuse_dec(sk); /* msk->subflow is still intact, the following will not free the first * subflow */ @@ -3160,6 +3171,11 @@ void mptcp_destroy_common(struct mptcp_sock *msk, un= signed int flags) skb_rbtree_purge(&msk->out_of_order_queue); mptcp_data_unlock(sk); =20 + if ((__mptcp_check_fallback(msk) && + !test_and_set_bit(MPTCP_DESTROYED, &msk->flags)) || + !sk_unhashed(sk)) + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); + /* move all the rx fwd alloc into the sk_mem_reclaim_final in * inet_sock_destruct() will dispose it */ @@ -3174,6 +3190,7 @@ static void mptcp_destroy(struct sock *sk) { struct mptcp_sock *msk =3D mptcp_sk(sk); =20 + mptcp_listen_inuse_dec(sk); /* clears msk->subflow, allowing the following to close * even the initial subflow */ @@ -3529,6 +3546,7 @@ static int mptcp_connect(struct sock *sk, struct sock= addr *uaddr, int addr_len) =20 mptcp_token_destroy(msk); inet_sk_state_store(sk, TCP_SYN_SENT); + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); subflow =3D mptcp_subflow_ctx(ssock->sk); #ifdef CONFIG_TCP_MD5SIG /* no MPTCP if MD5SIG is enabled on this socket or we may run out of @@ -3661,8 +3679,10 @@ static int mptcp_listen(struct socket *sock, int bac= klog) =20 err =3D ssock->ops->listen(ssock, backlog); inet_sk_state_store(sk, inet_sk_state_load(ssock->sk)); - if (!err) + if (!err) { + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); mptcp_copy_inaddrs(sk, ssock->sk); + } =20 unlock: release_sock(sk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 18f866b1afda..374ef75e4bb9 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -116,6 +116,7 @@ #define MPTCP_WORK_EOF 3 #define MPTCP_FALLBACK_DONE 4 #define MPTCP_WORK_CLOSE_SUBFLOW 5 +#define MPTCP_DESTROYED 6 =20 /* MPTCP socket release cb flags */ #define MPTCP_PUSH_PENDING 1 diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 07dd23d0fe04..da6cfa73a3bd 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -747,6 +747,9 @@ static struct sock *subflow_syn_recv_sock(const struct = sock *sk, mptcp_sk(new_msk)->setsockopt_seq =3D ctx->setsockopt_seq; mptcp_pm_new_connection(mptcp_sk(new_msk), child, 1); mptcp_token_accept(subflow_req, mptcp_sk(new_msk)); + sock_prot_inuse_add(sock_net(new_msk), + new_msk->sk_prot, + 1); ctx->conn =3D new_msk; new_msk =3D NULL; =20 --=20 2.37.2 From nobody Mon Apr 29 10:04:58 2024 Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CFE47A4E for ; Fri, 7 Oct 2022 09:31:41 +0000 (UTC) Received: by mail-pg1-f194.google.com with SMTP id bh13so4175610pgb.4 for ; Fri, 07 Oct 2022 02:31:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=u7lcW4Bg683HfDSH1iijL+2r4PqGfhjxnDSrzqJPet0=; b=AfB7ySYLqhjov+Dsn6xjM1vHbcnBFZ4dH4HjkqJp8DE4k0anHfyzJip5SgbDl8srge IVZo9ZJYQkdc21RMN9rG+DMlY2qa9B2Agj6FaBKR+GJUqafQxHL49tUQBylXjF/VmG2b xUzOdkQ5ba71H4dh7QSojIpOZ5X5cyyfbNgYaAMaGA8pyJOH1FEa5POhGNLg9HeVsK5A zNxfhF/+KI4waMq00Sb1peHXUHihvYBKqEzVkfbBb0tK3Lc8LwTKvt+e2iZSduR6Sym/ Wr1i7qgmVkRoveOOwzKW9YQcaAPqtE2kiVvlZQMSVrLUwzecR9JAbhJ9OTNnw3VF6Q5R uxGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u7lcW4Bg683HfDSH1iijL+2r4PqGfhjxnDSrzqJPet0=; b=TSscwOiri5Pf5jHGhEjOp3z/bv2o6f7jRf9+NB0xE3OIObIoU3QyyhQ8GSP4KXaQs7 0nBwks/vkvkXKXKQaz4YVk9EsoIJ9lI20sCecBVq3Z06yk+lAoLjEzrresTqm6zZaNIQ J7Fu2uBHZyaiTI21iY3XUgr6e5lK4Kh+suueV+eTwXLigEI2nXxcjatEIeyVC4C2d9/h HvCE6028eklYuqWFcidESEub9kquUJOXd+1gqpowJLcczmc6IDle6mFqcpoNtbv7dVxX VZSp3BEfLPifGv8PRp7LRnH15MNGm3ZlbcbDHguwjdhOo9PJa6vJSpn+gNpZjYOrzxHC DQQw== X-Gm-Message-State: ACrzQf0Fx0WPRVYiR2vAITaCqep4pmXggWKTbrCg3C3nkGYNl04lKoA4 HNQdB0HpHpVIcnzjku9SXhjUvAayi3UFjw== X-Google-Smtp-Source: AMsMyM4jiPwUXU2ftDW5zWhkT42buaO7MpcmsdySf59+amk1wfAgkxRE9FUWk78rb2ci8GnisX+xkg== X-Received: by 2002:a63:4e18:0:b0:43c:2fc7:2eea with SMTP id c24-20020a634e18000000b0043c2fc72eeamr3846155pgb.119.1665135101329; Fri, 07 Oct 2022 02:31:41 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.87]) by smtp.gmail.com with ESMTPSA id 61-20020a17090a0fc300b001fd7e56da4csm4187421pjz.39.2022.10.07.02.31.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Oct 2022 02:31:40 -0700 (PDT) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: mathew.j.martineau@linux.intel.com Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v5 3/3] selftest: mptcp: add test for mptcp socket in use Date: Fri, 7 Oct 2022 17:29:22 +0800 Message-Id: <20221007092922.13169-4-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221007092922.13169-1-imagedong@tencent.com> References: <20221007092922.13169-1-imagedong@tencent.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: Menglong Dong Add the function chk_msk_inuse() to diag.sh, which is used to check the statistics of mptcp socket in use. As mptcp socket in listen state will be closed randomly after 'accept', we need to get the count of listening mptcp socket through 'ss' command. mptcp_connect command with '-r' flag seems won't exit after flush_pids, therefore we need consider this additional statistics. But after the second flush_pids, it will exit. All tests pass. Signed-off-by: Menglong Dong Reviewed-by: Mat Martineau --- tools/testing/selftests/net/mptcp/diag.sh | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/self= tests/net/mptcp/diag.sh index 515859a5168b..d969cb45b8a9 100755 --- a/tools/testing/selftests/net/mptcp/diag.sh +++ b/tools/testing/selftests/net/mptcp/diag.sh @@ -141,6 +141,28 @@ chk_msk_listen() nr=3D$(ss -Ml $filter | wc -l) } =20 +chk_msk_inuse() +{ + local nr listen_nr + local expected=3D$1 + + shift 1 + msg=3D$* + + nr=3D$(ip netns exec $ns awk '$1~/^MPTCP$/{print $3}' /proc/net/protocols) + listen_nr=3D$(ss -N $ns -Ml | grep -c LISTEN) + expected=3D$(($expected+$listen_nr)) + + printf "%-50s" "$msg" + + if [ $nr !=3D $expected ]; then + echo "[ fail ] expected $expected found $nr" + ret=3D$test_cnt + else + echo "[ ok ]" + fi +} + # $1: ns, $2: port wait_local_port_listen() { @@ -194,8 +216,11 @@ wait_connected $ns 10000 chk_msk_nr 2 "after MPC handshake " chk_msk_remote_key_nr 2 "....chk remote_key" chk_msk_fallback_nr 0 "....chk no fallback" +chk_msk_inuse 2 "msk in use statistics" flush_pids =20 +# with '-r' flag, client won't exit after flush_pids +chk_msk_inuse 1 "msk in use statistics" =20 echo "a" | \ timeout ${timeout_test} \ @@ -231,6 +256,9 @@ for I in `seq 1 $NR_CLIENTS`; do done =20 wait_msk_nr $((NR_CLIENTS*2)) "many msk socket present" +chk_msk_inuse $((NR_CLIENTS*2+1)) "msk in use statistics" flush_pids =20 +chk_msk_inuse 0 "msk in use statistics" + exit $ret --=20 2.37.2