From patchwork Mon Mar 29 10:54:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1459524 X-Patchwork-Delegate: mathew.j.martineau@linux.intel.com 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=2001:19d0:306:5::1; helo=ml01.01.org; envelope-from=mptcp-bounces@lists.01.org; receiver=) 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=KPA7lcAo; dkim-atps=neutral Received: from ml01.01.org (ml01.01.org [IPv6:2001:19d0:306:5::1]) (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 4F88c706Nvz9sRf for ; Mon, 29 Mar 2021 21:55:02 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 55382100ED480 for ; Mon, 29 Mar 2021 03:55:01 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::52d; helo=mail-pg1-x52d.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) (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 37AC4100ED4AE for ; Mon, 29 Mar 2021 03:54:59 -0700 (PDT) Received: by mail-pg1-x52d.google.com with SMTP id v10so9140739pgs.12 for ; Mon, 29 Mar 2021 03:54:59 -0700 (PDT) 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=fjITPoBTLc6F+oRtIGltq6/kZQNrTFQ6E/fN60e54lM=; b=KPA7lcAoR8Ls6UwRF8uXxANjemZFgcQxtcRIkVwSfX1X/1E0+Pztsbrj2AsxqTXm/8 cDHT08iLhxggeP7onkuwQvnV7INCAzshCkNuyQEcScaWmmi74iHDTFhAfmsLNYmXKNfW z8ai1fpP/yjY6KbxhTSMtpzsWd5H5C3ScHQvWC6B4u+Aj2wXwQAehczt2rLZgqqxBR0F dqKIu7M0MrRos3UihX9U9Jeb5QgsHuEFDbmgzvX6+VxUm02rZ1yJq8AdZIJl0j7bb6oH XkK2NuLL56/rg8W13JwH7SSk7hPHTx3qf0l4D+++/jmiE56Zp6u5HMilTzlfr1W1uLZS t1jQ== 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=fjITPoBTLc6F+oRtIGltq6/kZQNrTFQ6E/fN60e54lM=; b=R6EOEoPMAofD1rh9hLZXSxuzMDhrJqY5lgkENWxko2/z3AZ6koVTn+P83tGpxU3JSD LASFI24AbtRfAWfvLDB0FRl0X6qG4ojXdGBeK0up9vzJoy1HTT05fy0FfrdZdl4czdIu R6ZrNAFpMMFHLuJqKCVznTpj4pF+I9jXVUUOju3YmCH78TQ+LaTRKm/7f/WXfzF/J+Ht 4Ujt4rA6YukY0bBmE2fzr0E6xtby7vPjRG9vlBLejCVSxOBWJLnA2aXIT5HRigCwYXNo H7/mrA3KtzzhugWaVFPSCwcMds51n6PZOoyOIAEILlNs4vw2Svr7nqgkOlQR4pcdAHBB 69UA== X-Gm-Message-State: AOAM5332XjMrIy2PzTJqgcK1D8LeMHonoAL02MBMuSm1BPI6q6v1G5qL 2gdDmIwQFEk18anK0JHknd7XPDDzOJQQzw== X-Google-Smtp-Source: ABdhPJzr8hEsLOI0qXnwcIv6nvOmnnBIHm0+PVz5iG9lFl3t7oWpwZyTIhZ7D9hxBVEsfUwL9vonhQ== X-Received: by 2002:a63:4c63:: with SMTP id m35mr22919236pgl.105.1617015298236; Mon, 29 Mar 2021 03:54:58 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id c72sm16576255pfb.165.2021.03.29.03.54.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Mar 2021 03:54:57 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Mon, 29 Mar 2021 18:54:14 +0800 Message-Id: <1c0a240472edcc1afbcb822bd9af3cf03800759e.1617014019.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: References: <26ccf630ac9be0aee87f4ccfcefc46515c9d61e8.1617014019.git.geliangtang@gmail.com> <14b6923c9fd052b140d5af261dfd2575d94b3e05.1617014019.git.geliangtang@gmail.com> <08ab4ce9f13e954b45d24c9e7842f7a6a9798d54.1617014019.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: MEPRDVORLLNFHSLER5UM5SIZAD5J2SSQ X-Message-ID-Hash: MEPRDVORLLNFHSLER5UM5SIZAD5J2SSQ X-MailFrom: geliangtang@gmail.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation CC: Geliang Tang X-Mailman-Version: 3.1.1 Precedence: list Subject: [MPTCP] [MPTCP][PATCH v2 mptcp-next 07/16] mptcp: add sk parameter for mptcp_parse_option List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added a new parameter name sk in mptcp_parse_option() and mptcp_get_options(). Signed-off-by: Geliang Tang --- net/mptcp/options.c | 10 ++++++---- net/mptcp/protocol.h | 3 ++- net/mptcp/subflow.c | 10 +++++----- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 6acb7469bae9..cb423cba5c3b 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -20,7 +20,8 @@ static bool mptcp_cap_flag_sha256(u8 flags) return (flags & MPTCP_CAP_FLAG_MASK) == MPTCP_CAP_HMAC_SHA256; } -static void mptcp_parse_option(const struct sk_buff *skb, +static void mptcp_parse_option(const struct sock *sk, + const struct sk_buff *skb, const unsigned char *ptr, int opsize, struct mptcp_options_received *mp_opt) { @@ -322,7 +323,8 @@ static void mptcp_parse_option(const struct sk_buff *skb, } } -void mptcp_get_options(const struct sk_buff *skb, +void mptcp_get_options(const struct sock *sk, + const struct sk_buff *skb, struct mptcp_options_received *mp_opt) { const struct tcphdr *th = tcp_hdr(skb); @@ -362,7 +364,7 @@ void mptcp_get_options(const struct sk_buff *skb, if (opsize > length) return; /* don't parse partial options */ if (opcode == TCPOPT_MPTCP) - mptcp_parse_option(skb, ptr, opsize, mp_opt); + mptcp_parse_option(sk, skb, ptr, opsize, mp_opt); ptr += opsize - 2; length -= opsize; } @@ -1016,7 +1018,7 @@ void mptcp_incoming_options(struct sock *sk, struct sk_buff *skb) return; } - mptcp_get_options(skb, &mp_opt); + mptcp_get_options(sk, skb, &mp_opt); if (!check_fully_established(msk, sk, subflow, skb, &mp_opt)) return; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index ae7d47352d09..cfdecfb90776 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -570,7 +570,8 @@ int __init mptcp_proto_v6_init(void); struct sock *mptcp_sk_clone(const struct sock *sk, const struct mptcp_options_received *mp_opt, struct request_sock *req); -void mptcp_get_options(const struct sk_buff *skb, +void mptcp_get_options(const struct sock *sk, + const struct sk_buff *skb, struct mptcp_options_received *mp_opt); void mptcp_finish_connect(struct sock *sk); diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index cbdfa5a6f8f6..75664da251a6 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -151,7 +151,7 @@ static int subflow_check_req(struct request_sock *req, return -EINVAL; #endif - mptcp_get_options(skb, &mp_opt); + mptcp_get_options(sk_listener, skb, &mp_opt); if (mp_opt.mp_capable) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MPCAPABLEPASSIVE); @@ -248,7 +248,7 @@ int mptcp_subflow_init_cookie_req(struct request_sock *req, int err; subflow_init_req(req, sk_listener); - mptcp_get_options(skb, &mp_opt); + mptcp_get_options(sk_listener, skb, &mp_opt); if (mp_opt.mp_capable && mp_opt.mp_join) return -EINVAL; @@ -395,7 +395,7 @@ static void subflow_finish_connect(struct sock *sk, const struct sk_buff *skb) subflow->ssn_offset = TCP_SKB_CB(skb)->seq; pr_debug("subflow=%p synack seq=%x", subflow, subflow->ssn_offset); - mptcp_get_options(skb, &mp_opt); + mptcp_get_options(sk, skb, &mp_opt); if (subflow->request_mptcp) { if (!mp_opt.mp_capable) { MPTCP_INC_STATS(sock_net(sk), @@ -642,7 +642,7 @@ static struct sock *subflow_syn_recv_sock(const struct sock *sk, goto create_msk; } - mptcp_get_options(skb, &mp_opt); + mptcp_get_options(sk, skb, &mp_opt); if (!mp_opt.mp_capable) { fallback = true; goto create_child; @@ -653,7 +653,7 @@ static struct sock *subflow_syn_recv_sock(const struct sock *sk, if (!new_msk) fallback = true; } else if (subflow_req->mp_join) { - mptcp_get_options(skb, &mp_opt); + mptcp_get_options(sk, skb, &mp_opt); if (!mp_opt.mp_join || !subflow_hmac_valid(req, &mp_opt) || !mptcp_can_accept_new_subflow(subflow_req->msk)) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_JOINACKMAC);