From patchwork Mon Nov 30 06:17:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1408035 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.01.org (client-ip=198.145.21.10; helo=ml01.01.org; envelope-from=mptcp-bounces@lists.01.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=q0toNPkN; dkim-atps=neutral Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Ckw604plVz9sTv for ; Mon, 30 Nov 2020 17:18:32 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 320E3100EF274; Sun, 29 Nov 2020 22:18:31 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::441; helo=mail-pf1-x441.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 480A0100EF25B for ; Sun, 29 Nov 2020 22:18:29 -0800 (PST) Received: by mail-pf1-x441.google.com with SMTP id q10so9775025pfn.0 for ; Sun, 29 Nov 2020 22:18:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=F5MZdevS9OakDVDuNIIbMwCEgVZHeXlq2oFlg5kO2Qw=; b=q0toNPkNDAZ/xWgOJGNyPrtz+03gcwJSrzK2Kt8SczgB3C0GuV+DMF6bvHOI0nf3bf rk4ZuftFyWWtBJarh0M7mr4k+YSCsUR0FdQElJfR+l9+pc3o3xxIV4xQ5IUvJ0Z2lKcZ 2FZJb41beYjMFeW4BfMak8sGfFzJtfdnVFfmV6y0QYQMmpzlgatJUwwHdZbfypUbEzsN BZo+Bfop+OxS5KDsCou/oAjdILFjBax/gHRkfeR8Lrn2kcvQyZR+1Ej149CuBrIQLqmQ 304VnkKHCCXwoi6H0mMTp9s9UGJjEG7iYmXGgPNjzylAQdGsBkgl+PqNlmNd9tguQC+e RmUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=F5MZdevS9OakDVDuNIIbMwCEgVZHeXlq2oFlg5kO2Qw=; b=q4Sqwwork1k45xnbh+/l/8tYxEZB1DuxKoIWBaMfK8TAIdtu/MNGtbWR9ODB6bAVUN yUgjp8EPMg33RB+kYwv/eZ7wWSrDJ2Ltq3PEIiH4Yf2iXKbEpeTBOJu7bwxISzpx0UvS eVRdlIlrtvF69FKChgN81kjJTbMFDFrWVoPBlnV1SIbrmfwIrRWV6bBst38xEnzyCfj+ bmmkjrZ4RHvuwz/U9+aWX+XmHIQL3XRAT59dT6gVslNEbbziybcqM0j7Cka6yuwanWZP /inXuF8rNqap2OuaKT3uS3pSgAo5IC2BqwDiayD8lEHOZjF5jVsgJp4GNp2A5a3rAp8o ZbIw== X-Gm-Message-State: AOAM533P+fitA3PYYo6AJlRa3zdzB4LHIWmHl8/ocGOq4iR/Ed3+unjT PeZJOu898LPK6bEZdpSEuo8+DUozt9sIKg== X-Google-Smtp-Source: ABdhPJzUOe4p8yA88/Mwn69OizWIz7NWdvR1LMymtelxEll6NIQ+e4YnNRtzf/Ij55OyL+xnbpGgbA== X-Received: by 2002:a62:15d8:0:b029:198:30d:b49d with SMTP id 207-20020a6215d80000b0290198030db49dmr7984083pfv.5.1606717108479; Sun, 29 Nov 2020 22:18:28 -0800 (PST) Received: from localhost ([2400:8800:300:11c:9b7d:697f:b379:5b54]) by smtp.gmail.com with ESMTPSA id g14sm21042672pji.32.2020.11.29.22.18.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 29 Nov 2020 22:18:27 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Mon, 30 Nov 2020 14:17:54 +0800 Message-Id: <119365e22834280ba21b71fdaf6b18cf403229bf.1606716547.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <883454467503573bd37d633fb12644a67b10d4bf.1606716547.git.geliangtang@gmail.com> References: <9bfd982aa08d39d84846b7fa655230dc11e91f1c.1606716547.git.geliangtang@gmail.com> <86984323249f08d04d6bff717afbdc94f314e291.1606716547.git.geliangtang@gmail.com> <8778018030d1dc833b40fb8ff1afa1bbe02551b0.1606716547.git.geliangtang@gmail.com> <71b221fa770a0c60949e788017dedb56fff3394d.1606716547.git.geliangtang@gmail.com> <883454467503573bd37d633fb12644a67b10d4bf.1606716547.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: VWZOMQUCNQ3QDWXUZYCMOJTTEW446NMZ X-Message-ID-Hash: VWZOMQUCNQ3QDWXUZYCMOJTTEW446NMZ X-MailFrom: geliangtang@gmail.com X-Mailman-Rule-Hits: member-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address CC: Geliang Tang X-Mailman-Version: 3.1.1 Precedence: list Subject: [MPTCP] [MPTCP][PATCH v7 mptcp-next 6/7] mptcp: add the mibs for ADD_ADDR with port List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added the mibs for ADD_ADDR with port: MPTCP_MIB_PORTADD for receiving of the ADD_ADDR suboption with a port number. MPTCP_MIB_PORTSYNRX, MPTCP_MIB_PORTSYNACKRX, MPTCP_MIB_PORTACKRX, for receiving of the MP_JOIN's SYN or SYN/ACK or ACK with a port number which is different from the msk's port number. MPTCP_MIB_MISMATCHPORTSYNRX and MPTCP_MIB_MISMATCHPORTACKRX, for receiving a SYN or ACK MP_JOIN with a mismatched port-number. Signed-off-by: Geliang Tang --- net/mptcp/mib.c | 6 ++++++ net/mptcp/mib.h | 6 ++++++ net/mptcp/options.c | 4 ++++ net/mptcp/subflow.c | 8 +++++++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c index 84d119436b22..d1d11e000539 100644 --- a/net/mptcp/mib.c +++ b/net/mptcp/mib.c @@ -29,6 +29,12 @@ static const struct snmp_mib mptcp_snmp_list[] = { SNMP_MIB_ITEM("DuplicateData", MPTCP_MIB_DUPDATA), SNMP_MIB_ITEM("AddAddr", MPTCP_MIB_ADDADDR), SNMP_MIB_ITEM("EchoAdd", MPTCP_MIB_ECHOADD), + SNMP_MIB_ITEM("PortAdd", MPTCP_MIB_PORTADD), + SNMP_MIB_ITEM("MPJoinPortSynRx", MPTCP_MIB_JOINPORTSYNRX), + SNMP_MIB_ITEM("MPJoinPortSynAckRx", MPTCP_MIB_JOINPORTSYNACKRX), + SNMP_MIB_ITEM("MPJoinPortAckRx", MPTCP_MIB_JOINPORTACKRX), + SNMP_MIB_ITEM("MismatchPortSynRx", MPTCP_MIB_MISMATCHPORTSYNRX), + SNMP_MIB_ITEM("MismatchPortAckRx", MPTCP_MIB_MISMATCHPORTACKRX), SNMP_MIB_ITEM("RmAddr", MPTCP_MIB_RMADDR), SNMP_MIB_ITEM("RmSubflow", MPTCP_MIB_RMSUBFLOW), SNMP_MIB_SENTINEL diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h index 47bcecce1106..447ef50118a3 100644 --- a/net/mptcp/mib.h +++ b/net/mptcp/mib.h @@ -22,6 +22,12 @@ enum linux_mptcp_mib_field { MPTCP_MIB_DUPDATA, /* Segments discarded due to duplicate DSS */ MPTCP_MIB_ADDADDR, /* Received ADD_ADDR with echo-flag=0 */ MPTCP_MIB_ECHOADD, /* Received ADD_ADDR with echo-flag=1 */ + MPTCP_MIB_PORTADD, /* Received ADD_ADDR with a port-number */ + MPTCP_MIB_JOINPORTSYNRX, /* Received a SYN MP_JOIN with a different port-number */ + MPTCP_MIB_JOINPORTSYNACKRX, /* Received a SYNACK MP_JOIN with a different port-number */ + MPTCP_MIB_JOINPORTACKRX, /* Received an ACK MP_JOIN with a different port-number */ + MPTCP_MIB_MISMATCHPORTSYNRX, /* Received a SYN MP_JOIN with a mismatched port-number */ + MPTCP_MIB_MISMATCHPORTACKRX, /* Received an ACK MP_JOIN with a mismatched port-number */ MPTCP_MIB_RMADDR, /* Received RM_ADDR */ MPTCP_MIB_RMSUBFLOW, /* Remove a subflow */ __MPTCP_MIB_MAX diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 6088fc80db75..57b5cf92769b 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -974,6 +974,10 @@ void mptcp_incoming_options(struct sock *sk, struct sk_buff *skb) mptcp_pm_del_add_timer(msk, &addr); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ECHOADD); } + + if (mp_opt.port) + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_PORTADD); + mp_opt.add_addr = 0; } diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 7da6a00a35a6..9fd330094b76 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -190,8 +190,10 @@ static void subflow_init_req(struct request_sock *req, tcp_request_sock_ops.destructor(req); subflow_req->msk = NULL; subflow_req->mp_join = 0; + SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MISMATCHPORTSYNRX); return; } + SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_JOINPORTSYNRX); } if (unlikely(req->syncookie) && subflow_req->msk) { @@ -383,6 +385,7 @@ static void subflow_finish_connect(struct sock *sk, const struct sk_buff *skb) pr_debug("synack inet_dport=%d %d", ntohs(inet_sk(sk)->inet_dport), ntohs(inet_sk(parent)->inet_dport)); + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_JOINPORTSYNACKRX); } } else if (mptcp_check_fallback(sk)) { fallback: @@ -650,8 +653,11 @@ static struct sock *subflow_syn_recv_sock(const struct sock *sk, pr_debug("ack inet_sport=%d %d", ntohs(inet_sk(sk)->inet_sport), ntohs(inet_sk((struct sock *)owner)->inet_sport)); - if (!mptcp_pm_sport_in_anno_list(owner, sk)) + if (!mptcp_pm_sport_in_anno_list(owner, sk)) { + SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MISMATCHPORTACKRX); goto out; + } + SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_JOINPORTACKRX); } } }