From patchwork Wed Mar 17 07:36:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1454533 X-Patchwork-Delegate: matthieu.baerts@tessares.net 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; 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=dFmC5giR; 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 4F0hmw2qSSz9sWP for ; Wed, 17 Mar 2021 18:36:48 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id D0722100EB82D; Wed, 17 Mar 2021 00:36:46 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::52a; helo=mail-pg1-x52a.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pg1-x52a.google.com (mail-pg1-x52a.google.com [IPv6:2607:f8b0:4864:20::52a]) (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 DC9FA100EB82A for ; Wed, 17 Mar 2021 00:36:44 -0700 (PDT) Received: by mail-pg1-x52a.google.com with SMTP id o16so7295396pgu.3 for ; Wed, 17 Mar 2021 00:36:44 -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=dFvrVILi9D2mswG0Wt8THCXmn9u1BaCiX147FBvgk00=; b=dFmC5giR1Myo+41ONuzQC+22MQ0/7QUDukvDGcFltIZapFmTXyWO8ShChP2pAl42hK kJ/iKg5P4mHmXyAEgeH8SFkb+jeWPrD27zjf5Jgc+4k7NfxcfUa8xAIGMN8+Y+/U7/b7 acBAhf8Nwoxw1xCD4e/JkbsAU8r+kWCCtriVaFdxQD97JRBfRvgYxejnrGSmM4Uw2hGv 9CmcffKvDu53kyhIyWpKGe6U8wmCjJnH1v4eyaGKQvGhVozCnO7c2Q/C83nn6uDRXZ/E AFVNmxfl5V0SaJPtm+LcDYeDyxmAL5zfuT/SkwwQXa01DVno+WESwgQ7guLbj0KSqm9R oEHg== 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=dFvrVILi9D2mswG0Wt8THCXmn9u1BaCiX147FBvgk00=; b=SUD7eyV9oT4oL3iiUrMQOL4RnDZg0aXPaZ/twek9ybuNWK7zKvELIQ3IuAlJYEIXu7 Z0Y9eISAmMixSF/HQulP6Wt/634+Rakg4FzRjcSnaiXQtJ0U5KD+aPBzQ+bQ2kgiVucb PmDRsnOJRpWH1QFp6MoIUz5oJMT9RaxALO1jH1eW62FetF7uBFV5dDAPqsg/s9XwFxeo BNfRQ57Ahs6OokCyIWt1Y7S9oOTLt3PBQG10iA5pjy3hTn52GoVJr5rasmhritd6heXi 5gr0gKgqXolVYoqDBw20F01mcHx56pg2uNcu0Mh5SURsxm2EjNv0yzIA4SoNh7obwOCG i+/g== X-Gm-Message-State: AOAM531UFc5Rz5ww8uZc+3js3kU9kuvuhJ84CtP3c2WaZE3Oa6x7ES6z brX4NRpmevP+yWlHYbHOj85jefAPotPexA== X-Google-Smtp-Source: ABdhPJwJDv7O9nb9w4+ehniqFINFZBj1cWP8QSpIyPA2KZ27cCfoUBTJdbXFqL4KFlEjxAXzD/g2pg== X-Received: by 2002:a65:46c7:: with SMTP id n7mr1532244pgr.267.1615966603819; Wed, 17 Mar 2021 00:36:43 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id il6sm1460515pjb.56.2021.03.17.00.36.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Mar 2021 00:36:42 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Wed, 17 Mar 2021 15:36:16 +0800 Message-Id: <468e80774d427c36d69d3927b2ed4e8bbf81fdef.1615966219.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: References: MIME-Version: 1.0 Message-ID-Hash: YXBPYCI65TB7USHDNOGTPVFBRUNJACUW X-Message-ID-Hash: YXBPYCI65TB7USHDNOGTPVFBRUNJACUW 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 v3 mptcp-next 1/7] mptcp: move flags and ifindex out of mptcp_addr_info List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch moved the flags and ifindex fields from struct mptcp_addr_info to struct mptcp_pm_addr_entry. Add the flags and ifindex values as two new parameters to __mptcp_subflow_connect. In mptcp_pm_create_subflow_or_signal_addr, pass the local address entry's flags and ifindex fields to __mptcp_subflow_connect. In mptcp_pm_nl_add_addr_received, just pass two zeros to it. Signed-off-by: Geliang Tang --- net/mptcp/pm_netlink.c | 41 ++++++++++++++++++++++------------------- net/mptcp/protocol.h | 5 ++--- net/mptcp/subflow.c | 7 ++++--- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index a62f887c5198..745073ddded8 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -25,6 +25,8 @@ static int pm_nl_pernet_id; struct mptcp_pm_addr_entry { struct list_head list; struct mptcp_addr_info addr; + u8 flags; + int ifindex; struct rcu_head rcu; struct socket *lsk; }; @@ -168,7 +170,7 @@ select_local_address(const struct pm_nl_pernet *pernet, rcu_read_lock(); __mptcp_flush_join_list(msk); list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { - if (!(entry->addr.flags & MPTCP_PM_ADDR_FLAG_SUBFLOW)) + if (!(entry->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW)) continue; if (entry->addr.family != sk->sk_family) { @@ -206,7 +208,7 @@ select_signal_address(struct pm_nl_pernet *pernet, unsigned int pos) * can lead to additional addresses not being announced. */ list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { - if (!(entry->addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) + if (!(entry->flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) continue; if (i++ == pos) { ret = entry; @@ -459,7 +461,8 @@ static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk) check_work_pending(msk); remote_address((struct sock_common *)sk, &remote); spin_unlock_bh(&msk->pm.lock); - __mptcp_subflow_connect(sk, &local->addr, &remote); + __mptcp_subflow_connect(sk, &local->addr, &remote, + local->flags, local->ifindex); spin_lock_bh(&msk->pm.lock); return; } @@ -514,7 +517,7 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk) local.family = remote.family; spin_unlock_bh(&msk->pm.lock); - __mptcp_subflow_connect(sk, &local, &remote); + __mptcp_subflow_connect(sk, &local, &remote, 0, 0); spin_lock_bh(&msk->pm.lock); add_addr_echo: @@ -683,7 +686,7 @@ void mptcp_pm_nl_work(struct mptcp_sock *msk) static bool address_use_port(struct mptcp_pm_addr_entry *entry) { - return (entry->addr.flags & + return (entry->flags & (MPTCP_PM_ADDR_FLAG_SIGNAL | MPTCP_PM_ADDR_FLAG_SUBFLOW)) == MPTCP_PM_ADDR_FLAG_SIGNAL; } @@ -735,11 +738,11 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet, if (entry->addr.id > pernet->next_id) pernet->next_id = entry->addr.id; - if (entry->addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL) { + if (entry->flags & MPTCP_PM_ADDR_FLAG_SIGNAL) { addr_max = pernet->add_addr_signal_max; WRITE_ONCE(pernet->add_addr_signal_max, addr_max + 1); } - if (entry->addr.flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) { + if (entry->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) { addr_max = pernet->local_addr_max; WRITE_ONCE(pernet->local_addr_max, addr_max + 1); } @@ -841,10 +844,10 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct sock_common *skc) return -ENOMEM; entry->addr = skc_local; - entry->addr.ifindex = 0; - entry->addr.flags = 0; entry->addr.id = 0; entry->addr.port = 0; + entry->ifindex = 0; + entry->flags = 0; entry->lsk = NULL; ret = mptcp_pm_nl_append_new_local_addr(pernet, entry); if (ret < 0) @@ -959,14 +962,14 @@ static int mptcp_pm_parse_addr(struct nlattr *attr, struct genl_info *info, if (tb[MPTCP_PM_ADDR_ATTR_IF_IDX]) { u32 val = nla_get_s32(tb[MPTCP_PM_ADDR_ATTR_IF_IDX]); - entry->addr.ifindex = val; + entry->ifindex = val; } if (tb[MPTCP_PM_ADDR_ATTR_ID]) entry->addr.id = nla_get_u8(tb[MPTCP_PM_ADDR_ATTR_ID]); if (tb[MPTCP_PM_ADDR_ATTR_FLAGS]) - entry->addr.flags = nla_get_u32(tb[MPTCP_PM_ADDR_ATTR_FLAGS]); + entry->flags = nla_get_u32(tb[MPTCP_PM_ADDR_ATTR_FLAGS]); if (tb[MPTCP_PM_ADDR_ATTR_PORT]) entry->addr.port = htons(nla_get_u16(tb[MPTCP_PM_ADDR_ATTR_PORT])); @@ -1218,11 +1221,11 @@ static int mptcp_nl_cmd_del_addr(struct sk_buff *skb, struct genl_info *info) spin_unlock_bh(&pernet->lock); return -EINVAL; } - if (entry->addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL) { + if (entry->flags & MPTCP_PM_ADDR_FLAG_SIGNAL) { addr_max = pernet->add_addr_signal_max; WRITE_ONCE(pernet->add_addr_signal_max, addr_max - 1); } - if (entry->addr.flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) { + if (entry->flags & MPTCP_PM_ADDR_FLAG_SUBFLOW) { addr_max = pernet->local_addr_max; WRITE_ONCE(pernet->local_addr_max, addr_max - 1); } @@ -1338,10 +1341,10 @@ static int mptcp_nl_fill_addr(struct sk_buff *skb, goto nla_put_failure; if (nla_put_u8(skb, MPTCP_PM_ADDR_ATTR_ID, addr->id)) goto nla_put_failure; - if (nla_put_u32(skb, MPTCP_PM_ADDR_ATTR_FLAGS, entry->addr.flags)) + if (nla_put_u32(skb, MPTCP_PM_ADDR_ATTR_FLAGS, entry->flags)) goto nla_put_failure; - if (entry->addr.ifindex && - nla_put_s32(skb, MPTCP_PM_ADDR_ATTR_IF_IDX, entry->addr.ifindex)) + if (entry->ifindex && + nla_put_s32(skb, MPTCP_PM_ADDR_ATTR_IF_IDX, entry->ifindex)) goto nla_put_failure; if (addr->family == AF_INET && @@ -1569,7 +1572,7 @@ static int mptcp_nl_cmd_set_flags(struct sk_buff *skb, struct genl_info *info) if (ret < 0) return ret; - if (addr.addr.flags & MPTCP_PM_ADDR_FLAG_BACKUP) + if (addr.flags & MPTCP_PM_ADDR_FLAG_BACKUP) bkup = 1; list_for_each_entry(entry, &pernet->local_addr_list, list) { @@ -1579,9 +1582,9 @@ static int mptcp_nl_cmd_set_flags(struct sk_buff *skb, struct genl_info *info) return ret; if (bkup) - entry->addr.flags |= MPTCP_PM_ADDR_FLAG_BACKUP; + entry->flags |= MPTCP_PM_ADDR_FLAG_BACKUP; else - entry->addr.flags &= ~MPTCP_PM_ADDR_FLAG_BACKUP; + entry->flags &= ~MPTCP_PM_ADDR_FLAG_BACKUP; } } diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index e53a9568d587..9005ccc2bc7d 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -173,8 +173,6 @@ struct mptcp_addr_info { sa_family_t family; __be16 port; u8 id; - u8 flags; - int ifindex; union { struct in_addr addr; #if IS_ENABLED(CONFIG_MPTCP_IPV6) @@ -557,7 +555,8 @@ struct socket *__mptcp_nmpc_socket(const struct mptcp_sock *msk); /* called with sk socket lock held */ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info *loc, - const struct mptcp_addr_info *remote); + const struct mptcp_addr_info *remote, + u8 flags, int ifindex); int mptcp_subflow_create_socket(struct sock *sk, struct socket **new_sock); void mptcp_info2sockaddr(const struct mptcp_addr_info *info, struct sockaddr_storage *addr, diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 6af443a18bac..5fc3cada11dd 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -1251,7 +1251,8 @@ void mptcp_info2sockaddr(const struct mptcp_addr_info *info, } int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info *loc, - const struct mptcp_addr_info *remote) + const struct mptcp_addr_info *remote, + u8 flags, int ifindex) { struct mptcp_sock *msk = mptcp_sk(sk); struct mptcp_subflow_context *subflow; @@ -1295,7 +1296,7 @@ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info *loc, if (addr.ss_family == AF_INET6) addrlen = sizeof(struct sockaddr_in6); #endif - ssk->sk_bound_dev_if = loc->ifindex; + ssk->sk_bound_dev_if = ifindex; err = kernel_bind(sf, (struct sockaddr *)&addr, addrlen); if (err) goto failed; @@ -1307,7 +1308,7 @@ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info *loc, subflow->local_id = local_id; subflow->remote_id = remote_id; subflow->request_join = 1; - subflow->request_bkup = !!(loc->flags & MPTCP_PM_ADDR_FLAG_BACKUP); + subflow->request_bkup = !!(flags & MPTCP_PM_ADDR_FLAG_BACKUP); mptcp_info2sockaddr(remote, &addr, ssk->sk_family); mptcp_add_pending_subflow(msk, subflow); From patchwork Wed Mar 17 07:36:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1454534 X-Patchwork-Delegate: matthieu.baerts@tessares.net 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; 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=AtIpNcyt; 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 4F0hmz6PJdz9sRR for ; Wed, 17 Mar 2021 18:36:51 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id DB839100EB834; Wed, 17 Mar 2021 00:36:49 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::102f; helo=mail-pj1-x102f.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) (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 78D8B100EB82F for ; Wed, 17 Mar 2021 00:36:48 -0700 (PDT) Received: by mail-pj1-x102f.google.com with SMTP id bt4so619694pjb.5 for ; Wed, 17 Mar 2021 00:36:48 -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=GJxJm1sX/3pMSzIZaUkSl5gKXvAgllOaqoX3zUawJJY=; b=AtIpNcytkYOgGOCmerF+6RLGoFTqelwD1SQhpV14fz3W53FTmklXHI+WyJz3fOL5ac xrvb3IbysOS+FLp1bS+28tM9bLnkCEKtIlBSlxe65o7DU6o14i+78wOhSdGXuO8sQ9qQ MJ3nz+VUmd3fZkO8kEfPMxoCr/K2jbk1LOvTKABiQWCImiNqZEY5CSbBpmIXh/dsJFht DKw4XxQ4ZlGjP+yEEb97DmbuMYyoa190WnT9JHj63RUKkM7TKY6fJyViADDgqNI3LR2A Lxmb5l9+BYNxnrWQCf4a3wX4CLGLEYY+zM+1ZTdTtkwRYQGz/1+YGt1XtfT3gfdpHjJg 9c9Q== 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=GJxJm1sX/3pMSzIZaUkSl5gKXvAgllOaqoX3zUawJJY=; b=DlC64D35c1vYmNAMWY3uB3dszXKM5XvGLq7drnI/GPHkHNLBPyYF+eujaP6l5wOiNJ egEplqhApcXDyT/0jlQGIaFELfC1Dp2aUghZKihpmlbAFBKCIXqE+ZYSEI904AkMlYDf Bus7R98yZFOWZPrtWrT/Quo8cUBW59My+UAnsQmURR+QsDgh+vsSjpkz77gstmNqLUZy aKv0q2KV7sCqT56K8160dj/8dnnYgpnsJseBlz+mZJRhMI3FRPkL76/vFJFqWAV/Zmf2 beeFJC/xy2qfLmyBWyzae9wL0EfqI0fjN1nFWbh8cHcYvKmQ7aal20Gg2yV5eub8tnNu k9jw== X-Gm-Message-State: AOAM533tNBoNOOkcvfJ8JXm1DEt27MvH6F8gAtvtI2AFOXlngt2BxHOZ G/9QKLJS2Aov/Tv46/hoepkFghxzHaosHg== X-Google-Smtp-Source: ABdhPJw/dsN90aNvD4ojeDAdJIjhyfGHENIsXvIHNGL9FkhrxLiVo0sqku6wCUuEXO90OPeCf/6o/w== X-Received: by 2002:a17:90a:fb83:: with SMTP id cp3mr3237801pjb.33.1615966607722; Wed, 17 Mar 2021 00:36:47 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id t17sm19314530pgk.25.2021.03.17.00.36.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Mar 2021 00:36:47 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Wed, 17 Mar 2021 15:36:17 +0800 Message-Id: <48a821dc73542f7d4729015eb4c10ad95370dfb1.1615966219.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <468e80774d427c36d69d3927b2ed4e8bbf81fdef.1615966219.git.geliangtang@gmail.com> References: <468e80774d427c36d69d3927b2ed4e8bbf81fdef.1615966219.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: XANF4JJZ7VPLFSQ25QFDZSPUMQSU7RSX X-Message-ID-Hash: XANF4JJZ7VPLFSQ25QFDZSPUMQSU7RSX 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 v3 mptcp-next 2/7] mptcp: use mptcp_addr_info in mptcp_out_options List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch moved the mptcp_addr_info struct from protocol.h to mptcp.h, added a new struct mptcp_addr_info member addr in struct mptcp_out_options, and dropped the original addr, addr6, addr_id and port fields in it. Then we can use opts->addr to get the adding address from PM directly using mptcp_pm_add_addr_signal. Since the port number became as a big-endian order now, use ntohs to convert it before printing it out. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 21 +++++++++++++-------- net/mptcp/options.c | 42 ++++++++++++++++++------------------------ net/mptcp/protocol.h | 12 ------------ 3 files changed, 31 insertions(+), 44 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 16fe34d139c3..80d98a7db3c6 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -41,20 +41,25 @@ struct mptcp_rm_list { u8 nr; }; +struct mptcp_addr_info { + u8 id; + sa_family_t family : 4; + __be16 port; + union { + struct in_addr addr; +#if IS_ENABLED(CONFIG_MPTCP_IPV6) + struct in6_addr addr6; +#endif + }; +}; + struct mptcp_out_options { #if IS_ENABLED(CONFIG_MPTCP) u16 suboptions; u64 sndr_key; u64 rcvr_key; - union { - struct in_addr addr; -#if IS_ENABLED(CONFIG_MPTCP_IPV6) - struct in6_addr addr6; -#endif - }; - u8 addr_id; - u16 port; u64 ahmac; + struct mptcp_addr_info addr; struct mptcp_rm_list rm_list; u8 join_id; u8 backup; diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 4b7119eb2c31..7e01f44ed885 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -626,7 +626,6 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff * struct mptcp_sock *msk = mptcp_sk(subflow->conn); bool drop_other_suboptions = false; unsigned int opt_size = *size; - struct mptcp_addr_info saddr; bool echo; bool port; int len; @@ -643,45 +642,40 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff * } if (!mptcp_pm_should_add_signal(msk) || - !(mptcp_pm_add_addr_signal(msk, remaining, &saddr, &echo, &port))) + !(mptcp_pm_add_addr_signal(msk, remaining, &opts->addr, &echo, &port))) return false; - len = mptcp_add_addr_len(saddr.family, echo, port); + len = mptcp_add_addr_len(opts->addr.family, echo, port); if (remaining < len) return false; *size = len; if (drop_other_suboptions) *size -= opt_size; - opts->addr_id = saddr.id; - if (port) - opts->port = ntohs(saddr.port); - if (saddr.family == AF_INET) { + if (opts->addr.family == AF_INET) { opts->suboptions |= OPTION_MPTCP_ADD_ADDR; - opts->addr = saddr.addr; if (!echo) { opts->ahmac = add_addr_generate_hmac(msk->local_key, msk->remote_key, - opts->addr_id, - &opts->addr, - opts->port); + opts->addr.id, + &opts->addr.addr, + opts->addr.port); } } #if IS_ENABLED(CONFIG_MPTCP_IPV6) - else if (saddr.family == AF_INET6) { + else if (opts->addr.family == AF_INET6) { opts->suboptions |= OPTION_MPTCP_ADD_ADDR6; - opts->addr6 = saddr.addr6; if (!echo) { opts->ahmac = add_addr6_generate_hmac(msk->local_key, msk->remote_key, - opts->addr_id, - &opts->addr6, - opts->port); + opts->addr.id, + &opts->addr.addr6, + opts->addr.port); } } #endif pr_debug("addr_id=%d, ahmac=%llu, echo=%d, port=%d", - opts->addr_id, opts->ahmac, echo, opts->port); + opts->addr.id, opts->ahmac, echo, ntohs(opts->addr.port)); return true; } @@ -1217,7 +1211,7 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, len = TCPOLEN_MPTCP_ADD_ADDR6_BASE; #endif - if (opts->port) + if (opts->addr.port) len += TCPOLEN_MPTCP_PORT_LEN; if (opts->ahmac) { @@ -1226,19 +1220,19 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, } *ptr++ = mptcp_option(MPTCPOPT_ADD_ADDR, - len, echo, opts->addr_id); + len, echo, opts->addr.id); if (OPTION_MPTCP_ADD_ADDR & opts->suboptions) { - memcpy((u8 *)ptr, (u8 *)&opts->addr.s_addr, 4); + memcpy((u8 *)ptr, (u8 *)&opts->addr.addr.s_addr, 4); ptr += 1; } #if IS_ENABLED(CONFIG_MPTCP_IPV6) else if (OPTION_MPTCP_ADD_ADDR6 & opts->suboptions) { - memcpy((u8 *)ptr, opts->addr6.s6_addr, 16); + memcpy((u8 *)ptr, opts->addr.addr6.s6_addr, 16); ptr += 4; } #endif - if (!opts->port) { + if (!opts->addr.port) { if (opts->ahmac) { put_unaligned_be64(opts->ahmac, ptr); ptr += 2; @@ -1247,7 +1241,7 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, if (opts->ahmac) { u8 *bptr = (u8 *)ptr; - put_unaligned_be16(opts->port, bptr); + put_unaligned_be16(opts->addr.port, bptr); bptr += 2; put_unaligned_be64(opts->ahmac, bptr); bptr += 8; @@ -1256,7 +1250,7 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, ptr += 3; } else { - put_unaligned_be32(opts->port << 16 | + put_unaligned_be32(opts->addr.port << 16 | TCPOPT_NOP << 8 | TCPOPT_NOP, ptr); ptr += 1; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 9005ccc2bc7d..b993e372c4ad 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -169,18 +169,6 @@ static inline __be32 mptcp_option(u8 subopt, u8 len, u8 nib, u8 field) ((nib & 0xF) << 8) | field); } -struct mptcp_addr_info { - sa_family_t family; - __be16 port; - u8 id; - union { - struct in_addr addr; -#if IS_ENABLED(CONFIG_MPTCP_IPV6) - struct in6_addr addr6; -#endif - }; -}; - enum mptcp_pm_status { MPTCP_PM_ADD_ADDR_RECEIVED, MPTCP_PM_ADD_ADDR_SEND_ACK, From patchwork Wed Mar 17 07:36:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1454535 X-Patchwork-Delegate: matthieu.baerts@tessares.net 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; 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=etInfj87; 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 4F0hn660nhz9sRR for ; Wed, 17 Mar 2021 18:36:58 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E72A5100EB82F; Wed, 17 Mar 2021 00:36:56 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::633; helo=mail-pl1-x633.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) (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 90B8A100EB825 for ; Wed, 17 Mar 2021 00:36:52 -0700 (PDT) Received: by mail-pl1-x633.google.com with SMTP id a13so346741pln.8 for ; Wed, 17 Mar 2021 00:36:52 -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=Rcqv7DsvDrtBebjImXtQq73OW9VnvGcaoYqM6s5mp3E=; b=etInfj87nwT9jYlUKJqbr6NX/PrANDDND2/boo3L8i+qhmwbipZpW6c86DNKfLfMfL WmuEF5jbb5VctQ+HPTVM4B4da8GfUiL01Vsl501bm8bJRtxb2plKpQiMqBH95SKl2BjD pZ2VuUWTreY+KhA83X/bAGV0S8dJ9gLgf/s9uNwL8wjfX/6GqmxNlsUn2RYWbHffkyS8 yB6cIBgewVp3lXYLyKfJQEX6bnALuCJ9OlGxPB/b0Lh4w9d5LjPmMYHLlMuViCxT+VNT I5TiVdogArcGJH8qMgY80tEwe3FuTEpIwhx1TKMqdLTVNoBXaybGaiiN5+oljgh1cZnJ qERg== 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=Rcqv7DsvDrtBebjImXtQq73OW9VnvGcaoYqM6s5mp3E=; b=W57L2/JwMo5RKsdl/JTLRlL3qAqu1wbuiahB2XVm7av1ol8EVhleco4OzgAGgJZNv0 LYX9rCysQb6PzypbdyX8CYnYGwWgsJdEoteawg6Ue+7j4XhSkB2hf3YV66dR0AuoMQrY YeoS7T1yCWc7orDZCBS8rJ3TejLThcwLypciVqxKYyRKoFtsZ71NhhIMsGz5OfCe9fFR egGZ3hUzg0HNr7oyqGdO1WILZvNouoO30sYfnFvowisE1c3r4JY4+O4WOOFGvdSookZL ZDUreYqlWyss/vRX8ahovsY3ClJdpRoHrxGyr+VLCJAh13pccHnHNd/SSoZj+djotpNn ku+g== X-Gm-Message-State: AOAM5314AMigfZAYVwNDg9TqqH8jKKWHJuEy0EXS8YkamQCDt85mujAU HCzvSYE3Viw99+XbiRQi8CFRj16PR9V/5A== X-Google-Smtp-Source: ABdhPJzYYh3Ekeu0KvsTSZnC2ZYMSJaVZk5I8tlJM3DxzlpVFg1C4M/nHu5XocYezw4A94k8aO7BmA== X-Received: by 2002:a17:902:9b84:b029:e5:ee87:6840 with SMTP id y4-20020a1709029b84b02900e5ee876840mr3223144plp.82.1615966611859; Wed, 17 Mar 2021 00:36:51 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id u24sm19231445pfm.214.2021.03.17.00.36.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Mar 2021 00:36:51 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Wed, 17 Mar 2021 15:36:18 +0800 Message-Id: <666cf05ae98c7be040adeac64c10c0e348723ff6.1615966219.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <48a821dc73542f7d4729015eb4c10ad95370dfb1.1615966219.git.geliangtang@gmail.com> References: <468e80774d427c36d69d3927b2ed4e8bbf81fdef.1615966219.git.geliangtang@gmail.com> <48a821dc73542f7d4729015eb4c10ad95370dfb1.1615966219.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: AL46JGLTJ6ISOGSFHNSUCTT5V4OOVLZF X-Message-ID-Hash: AL46JGLTJ6ISOGSFHNSUCTT5V4OOVLZF 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 v3 mptcp-next 3/7] mptcp: drop OPTION_MPTCP_ADD_ADDR6 List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Since the family field was added in struct mptcp_out_options, no need to use OPTION_MPTCP_ADD_ADDR6 to identify the IPv6 address. Drop it. Signed-off-by: Geliang Tang --- net/mptcp/options.c | 15 +++++---------- net/mptcp/protocol.h | 9 ++++----- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 7e01f44ed885..5b8103668e9a 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -652,8 +652,8 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff * *size = len; if (drop_other_suboptions) *size -= opt_size; + opts->suboptions |= OPTION_MPTCP_ADD_ADDR; if (opts->addr.family == AF_INET) { - opts->suboptions |= OPTION_MPTCP_ADD_ADDR; if (!echo) { opts->ahmac = add_addr_generate_hmac(msk->local_key, msk->remote_key, @@ -664,7 +664,6 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff * } #if IS_ENABLED(CONFIG_MPTCP_IPV6) else if (opts->addr.family == AF_INET6) { - opts->suboptions |= OPTION_MPTCP_ADD_ADDR6; if (!echo) { opts->ahmac = add_addr6_generate_hmac(msk->local_key, msk->remote_key, @@ -1198,16 +1197,12 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, } mp_capable_done: - if ((OPTION_MPTCP_ADD_ADDR -#if IS_ENABLED(CONFIG_MPTCP_IPV6) - | OPTION_MPTCP_ADD_ADDR6 -#endif - ) & opts->suboptions) { + if (OPTION_MPTCP_ADD_ADDR & opts->suboptions) { u8 len = TCPOLEN_MPTCP_ADD_ADDR_BASE; u8 echo = MPTCP_ADDR_ECHO; #if IS_ENABLED(CONFIG_MPTCP_IPV6) - if (OPTION_MPTCP_ADD_ADDR6 & opts->suboptions) + if (opts->addr.family == AF_INET6) len = TCPOLEN_MPTCP_ADD_ADDR6_BASE; #endif @@ -1221,12 +1216,12 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, *ptr++ = mptcp_option(MPTCPOPT_ADD_ADDR, len, echo, opts->addr.id); - if (OPTION_MPTCP_ADD_ADDR & opts->suboptions) { + if (opts->addr.family == AF_INET) { memcpy((u8 *)ptr, (u8 *)&opts->addr.addr.s_addr, 4); ptr += 1; } #if IS_ENABLED(CONFIG_MPTCP_IPV6) - else if (OPTION_MPTCP_ADD_ADDR6 & opts->suboptions) { + else if (opts->addr.family == AF_INET6) { memcpy((u8 *)ptr, opts->addr.addr6.s6_addr, 16); ptr += 4; } diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index b993e372c4ad..f004fcbfec11 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -22,11 +22,10 @@ #define OPTION_MPTCP_MPJ_SYNACK BIT(4) #define OPTION_MPTCP_MPJ_ACK BIT(5) #define OPTION_MPTCP_ADD_ADDR BIT(6) -#define OPTION_MPTCP_ADD_ADDR6 BIT(7) -#define OPTION_MPTCP_RM_ADDR BIT(8) -#define OPTION_MPTCP_FASTCLOSE BIT(9) -#define OPTION_MPTCP_PRIO BIT(10) -#define OPTION_MPTCP_RST BIT(11) +#define OPTION_MPTCP_RM_ADDR BIT(7) +#define OPTION_MPTCP_FASTCLOSE BIT(8) +#define OPTION_MPTCP_PRIO BIT(9) +#define OPTION_MPTCP_RST BIT(10) /* MPTCP option subtypes */ #define MPTCPOPT_MP_CAPABLE 0 From patchwork Wed Mar 17 07:36:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1454536 X-Patchwork-Delegate: matthieu.baerts@tessares.net 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=NOBiR3YY; 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) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F0hnD2zzsz9sRR for ; Wed, 17 Mar 2021 18:37:04 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 029A0100EB83B; Wed, 17 Mar 2021 00:36:58 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::630; helo=mail-pl1-x630.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) (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 B3204100EB825 for ; Wed, 17 Mar 2021 00:36:56 -0700 (PDT) Received: by mail-pl1-x630.google.com with SMTP id a8so337274plp.13 for ; Wed, 17 Mar 2021 00:36:56 -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=M1ptuX0Ukizj9kyVGM4nYbqb6MVFcznWXl8E3WUpWcQ=; b=NOBiR3YY1AxE9Fp7fdYuSKfeLddGKuDRQe4n672FGnUZMvVs3tlLMycmuLEPHpFt1Q 0DGZ0y/b+d3vnOw7/3FO9xunR6UO41lBEXBfQKFbJMK+ZGNz3ygs0SO+DErjCScudA+n V4cZxSmIZPBSuqR90xag3+BYfOIJ5MbcTOoGtOcXi4qYmjTNuPpKO9ZyLAfkUo5mrNia bnTrfa1CS+voRLrlkQneLFYZ692TTJ8uD2tvJMg5/H2qqkMv9ursAbVPPtP/+lP0zoG9 8o+sB1LDGKFBliW41bhBbRr7RWjNyevmbv81nw0Fb/ojK9NB92KeWZojj3xiyiKo0wMv yCsw== 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=M1ptuX0Ukizj9kyVGM4nYbqb6MVFcznWXl8E3WUpWcQ=; b=O3SSdzawInqyVvrrqi0t0LCAQFzpWj2ESm6fkmp0SX+beM+FHVYTIehpicv0CrP5OZ dEx5Mnd5GOxVISeYVX8jPmTKKmVQ/B3LMUpa9rCvfHMYOOVY6HTOxdRAFCr0XirI57q3 VMsdE00hYGRx628Rjj0ZxGH7nHpdnuO2TBOvaPvZlBryxCjTzDuoKU4nUQyj17mtab2a RoJE/JbiNz++fwcyprpejxMLYdDCzP5VjAU9PULAMK2HBGvTeVcNbmBRya7S3STc2+B5 Ky2aur7Eym+OLsJMRXxhHTfw7EkgKF5MhYdWodyF12VxJZpEY8wfwqGwI0JDnqpZ6PhF fcSQ== X-Gm-Message-State: AOAM5306eLxtZow7Z6X1Nnjx9a9FVJIBNK6Uf6/jfJs0xNG73T6t48Rn 9QoCc7Hvf3Qpi3b3LL+CDG9hInu0esdbvQ== X-Google-Smtp-Source: ABdhPJzlLv5ofXzmdNBz05AAmg+yxykSuMpLK2Ee2SSabytmx/nwPI5chD2f2C1iHQgOGi8wOYVzeQ== X-Received: by 2002:a17:902:fe07:b029:e6:6cba:d95a with SMTP id g7-20020a170902fe07b02900e66cbad95amr3289913plj.70.1615966615824; Wed, 17 Mar 2021 00:36:55 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id h16sm15247072pfc.194.2021.03.17.00.36.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Mar 2021 00:36:55 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Wed, 17 Mar 2021 15:36:19 +0800 Message-Id: <5b55310e5e6682adfc02b6cc47480eae20612b83.1615966219.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <666cf05ae98c7be040adeac64c10c0e348723ff6.1615966219.git.geliangtang@gmail.com> References: <468e80774d427c36d69d3927b2ed4e8bbf81fdef.1615966219.git.geliangtang@gmail.com> <48a821dc73542f7d4729015eb4c10ad95370dfb1.1615966219.git.geliangtang@gmail.com> <666cf05ae98c7be040adeac64c10c0e348723ff6.1615966219.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: 2XGIJ6LBQZTXMOEXVVU6HIVOSWQXJEDL X-Message-ID-Hash: 2XGIJ6LBQZTXMOEXVVU6HIVOSWQXJEDL 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 v3 mptcp-next 4/7] mptcp: use mptcp_addr_info in mptcp_options_received List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added a new struct mptcp_addr_info member addr in struct mptcp_options_received, and dropped the original family, addr_id, addr, addr6 and port fields in it. Then we can pass the parameter mp_opt.addr directly to mptcp_pm_add_addr_received and mptcp_pm_add_addr_echoed. Since the port number became as a big-endian order now, use ntohs to convert it before printing it out. Signed-off-by: Geliang Tang --- net/mptcp/options.c | 58 +++++++++++++++++--------------------------- net/mptcp/protocol.h | 10 +------- 2 files changed, 23 insertions(+), 45 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 5b8103668e9a..0bc5eb0f835c 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -220,45 +220,45 @@ static void mptcp_parse_option(const struct sk_buff *skb, if (!mp_opt->echo) { if (opsize == TCPOLEN_MPTCP_ADD_ADDR || opsize == TCPOLEN_MPTCP_ADD_ADDR_PORT) - mp_opt->family = MPTCP_ADDR_IPVERSION_4; + mp_opt->addr.family = MPTCP_ADDR_IPVERSION_4; #if IS_ENABLED(CONFIG_MPTCP_IPV6) else if (opsize == TCPOLEN_MPTCP_ADD_ADDR6 || opsize == TCPOLEN_MPTCP_ADD_ADDR6_PORT) - mp_opt->family = MPTCP_ADDR_IPVERSION_6; + mp_opt->addr.family = MPTCP_ADDR_IPVERSION_6; #endif else break; } else { if (opsize == TCPOLEN_MPTCP_ADD_ADDR_BASE || opsize == TCPOLEN_MPTCP_ADD_ADDR_BASE_PORT) - mp_opt->family = MPTCP_ADDR_IPVERSION_4; + mp_opt->addr.family = MPTCP_ADDR_IPVERSION_4; #if IS_ENABLED(CONFIG_MPTCP_IPV6) else if (opsize == TCPOLEN_MPTCP_ADD_ADDR6_BASE || opsize == TCPOLEN_MPTCP_ADD_ADDR6_BASE_PORT) - mp_opt->family = MPTCP_ADDR_IPVERSION_6; + mp_opt->addr.family = MPTCP_ADDR_IPVERSION_6; #endif else break; } mp_opt->add_addr = 1; - mp_opt->addr_id = *ptr++; - if (mp_opt->family == MPTCP_ADDR_IPVERSION_4) { - memcpy((u8 *)&mp_opt->addr.s_addr, (u8 *)ptr, 4); + mp_opt->addr.id = *ptr++; + if (mp_opt->addr.family == MPTCP_ADDR_IPVERSION_4) { + memcpy((u8 *)&mp_opt->addr.addr.s_addr, (u8 *)ptr, 4); ptr += 4; if (opsize == TCPOLEN_MPTCP_ADD_ADDR_PORT || opsize == TCPOLEN_MPTCP_ADD_ADDR_BASE_PORT) { - mp_opt->port = get_unaligned_be16(ptr); + mp_opt->addr.port = get_unaligned_be16(ptr); ptr += 2; } } #if IS_ENABLED(CONFIG_MPTCP_IPV6) else { - memcpy(mp_opt->addr6.s6_addr, (u8 *)ptr, 16); + memcpy(mp_opt->addr.addr6.s6_addr, (u8 *)ptr, 16); ptr += 16; if (opsize == TCPOLEN_MPTCP_ADD_ADDR6_PORT || opsize == TCPOLEN_MPTCP_ADD_ADDR6_BASE_PORT) { - mp_opt->port = get_unaligned_be16(ptr); + mp_opt->addr.port = get_unaligned_be16(ptr); ptr += 2; } } @@ -268,8 +268,8 @@ static void mptcp_parse_option(const struct sk_buff *skb, ptr += 8; } pr_debug("ADD_ADDR%s: id=%d, ahmac=%llu, echo=%d, port=%d", - (mp_opt->family == MPTCP_ADDR_IPVERSION_6) ? "6" : "", - mp_opt->addr_id, mp_opt->ahmac, mp_opt->echo, mp_opt->port); + (mp_opt->addr.family == MPTCP_ADDR_IPVERSION_6) ? "6" : "", + mp_opt->addr.id, mp_opt->ahmac, mp_opt->echo, ntohs(mp_opt->addr.port)); break; case MPTCPOPT_RM_ADDR: @@ -335,7 +335,7 @@ void mptcp_get_options(const struct sk_buff *skb, mp_opt->add_addr = 0; mp_opt->ahmac = 0; mp_opt->fastclose = 0; - mp_opt->port = 0; + mp_opt->addr.port = 0; mp_opt->rm_addr = 0; mp_opt->dss = 0; mp_opt->mp_prio = 0; @@ -991,17 +991,17 @@ static bool add_addr_hmac_valid(struct mptcp_sock *msk, if (mp_opt->echo) return true; - if (mp_opt->family == MPTCP_ADDR_IPVERSION_4) + if (mp_opt->addr.family == MPTCP_ADDR_IPVERSION_4) hmac = add_addr_generate_hmac(msk->remote_key, msk->local_key, - mp_opt->addr_id, &mp_opt->addr, - mp_opt->port); + mp_opt->addr.id, &mp_opt->addr.addr, + mp_opt->addr.port); #if IS_ENABLED(CONFIG_MPTCP_IPV6) else hmac = add_addr6_generate_hmac(msk->remote_key, msk->local_key, - mp_opt->addr_id, &mp_opt->addr6, - mp_opt->port); + mp_opt->addr.id, &mp_opt->addr.addr6, + mp_opt->addr.port); #endif pr_debug("msk=%p, ahmac=%llu, mp_opt->ahmac=%llu\n", @@ -1043,30 +1043,16 @@ void mptcp_incoming_options(struct sock *sk, struct sk_buff *skb) } if (mp_opt.add_addr && add_addr_hmac_valid(msk, &mp_opt)) { - struct mptcp_addr_info addr; - - addr.port = htons(mp_opt.port); - addr.id = mp_opt.addr_id; - if (mp_opt.family == MPTCP_ADDR_IPVERSION_4) { - addr.family = AF_INET; - addr.addr = mp_opt.addr; - } -#if IS_ENABLED(CONFIG_MPTCP_IPV6) - else if (mp_opt.family == MPTCP_ADDR_IPVERSION_6) { - addr.family = AF_INET6; - addr.addr6 = mp_opt.addr6; - } -#endif if (!mp_opt.echo) { - mptcp_pm_add_addr_received(msk, &addr); + mptcp_pm_add_addr_received(msk, &mp_opt.addr); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ADDADDR); } else { - mptcp_pm_add_addr_echoed(msk, &addr); - mptcp_pm_del_add_timer(msk, &addr); + mptcp_pm_add_addr_echoed(msk, &mp_opt.addr); + mptcp_pm_del_add_timer(msk, &mp_opt.addr); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ECHOADD); } - if (mp_opt.port) + if (mp_opt.addr.port) MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_PORTADD); mp_opt.add_addr = 0; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index f004fcbfec11..7a2686ca7a0d 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -133,7 +133,6 @@ struct mptcp_options_received { add_addr : 1, rm_addr : 1, mp_prio : 1, - family : 4, echo : 1, backup : 1; u32 token; @@ -148,16 +147,9 @@ struct mptcp_options_received { ack64:1, mpc_map:1, __unused:2; - u8 addr_id; + struct mptcp_addr_info addr; struct mptcp_rm_list rm_list; - union { - struct in_addr addr; -#if IS_ENABLED(CONFIG_MPTCP_IPV6) - struct in6_addr addr6; -#endif - }; u64 ahmac; - u16 port; u8 reset_reason:4; u8 reset_transient:1; }; From patchwork Wed Mar 17 07:36:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1454537 X-Patchwork-Delegate: matthieu.baerts@tessares.net 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=iURh3G4r; 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 4F0hnF573tz9sRR for ; Wed, 17 Mar 2021 18:37:05 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 0FA6A100EB82A; Wed, 17 Mar 2021 00:37:04 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::1033; helo=mail-pj1-x1033.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) (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 892EA100EB825 for ; Wed, 17 Mar 2021 00:37:02 -0700 (PDT) Received: by mail-pj1-x1033.google.com with SMTP id w8so621368pjf.4 for ; Wed, 17 Mar 2021 00:37:02 -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=7EtplKdJEpxcOqrixvWN5uGioPyylHRwkjcTLzx69c0=; b=iURh3G4rA+924lbpEjpHZDvmq+DVTEgof8+kDJckPgg4568FXkVncZNPb+y465nmkp QaJo+xC7i+uSdKLxwcfvpMVZdxYW4CFRybas1cKg0jo4FzFljDBBWnRYrHMd53wc0msn nVhY/a144o1fkx3oeNCoXNYGl9Gst/ltpLLeOHzo8/imH1N7CSSg9VwnXoUccG63uXEQ Er312zCZ+uhtUnNvKFVHz4yueXlgUwHWtowii/FOdTHpmZmJ5tr80+8kfIjuJt41SxNq rPoTLu5mxnDPf1Q2/ZkTSwjJX+3aV8l2NOosxTOK692JUvm+AEgy92x73xM9+ZQDuZ8H O+qA== 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=7EtplKdJEpxcOqrixvWN5uGioPyylHRwkjcTLzx69c0=; b=Gvawc7Ki/9IRlFu7aMFgt6TgCqyKr3YwjyrOH2Rfd/1lrg4fvjVq7zGeNf3goSiYyX K8v8fILcfDx+1MpDZiqjDxB6J5ObNvOInD03ClbpysDEOlrHC8sZ2aG01xqKbGQWDYdD Fw/VgltqYRWUH5EI4zyyq369HBvLDxLw9lNcpH16QNq6Y143DydAHnTTYoLXl9p1fCbU As+imUHj67r0pCjlnMJgTWvW2oxKZGYwK2dIHwVWFdq0ZGBXrKu+nNKZ8Z446ZQKT9Ar TshcGXhxnBo7YLHqrLlMRJvkb25k3xpqOIGfb1f5poKDtRAwXLiVNaHEbTO3gt4b2Wus R6hg== X-Gm-Message-State: AOAM5315JZteszHswlGePS0oXFEm7P3lDW71Goz4DmhnJGU5ZgVQxJI/ wJHZVFsZTncPwx59JNxMi/IPUzA2sZR0Cw== X-Google-Smtp-Source: ABdhPJxH0qSt+v2E3mKfct8kthDFw98eF1pbPyt0z3c1UZuhF63+2Evjzel25Im59SwJ0VNYx4Jgxg== X-Received: by 2002:a17:90a:a898:: with SMTP id h24mr3190493pjq.9.1615966621838; Wed, 17 Mar 2021 00:37:01 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id q10sm17541680pgs.44.2021.03.17.00.36.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Mar 2021 00:37:00 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Wed, 17 Mar 2021 15:36:20 +0800 Message-Id: <5842d55dd4413d694cf9c871261dac4fb99e5ab7.1615966219.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <5b55310e5e6682adfc02b6cc47480eae20612b83.1615966219.git.geliangtang@gmail.com> References: <468e80774d427c36d69d3927b2ed4e8bbf81fdef.1615966219.git.geliangtang@gmail.com> <48a821dc73542f7d4729015eb4c10ad95370dfb1.1615966219.git.geliangtang@gmail.com> <666cf05ae98c7be040adeac64c10c0e348723ff6.1615966219.git.geliangtang@gmail.com> <5b55310e5e6682adfc02b6cc47480eae20612b83.1615966219.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: KU7X347OR5LZIJQZZEPBNUZUV4THNBKK X-Message-ID-Hash: KU7X347OR5LZIJQZZEPBNUZUV4THNBKK 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 v3 mptcp-next 5/7] mptcp: drop MPTCP_ADDR_IPVERSION_4/6 List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Since the type of the address family in struct mptcp_options_received became sa_family_t, we should set AF_INET/AF_INET6 to it, instead of using MPTCP_ADDR_IPVERSION_4/6. Signed-off-by: Geliang Tang --- net/mptcp/options.c | 14 +++++++------- net/mptcp/protocol.h | 2 -- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 0bc5eb0f835c..5c6437c90859 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -220,22 +220,22 @@ static void mptcp_parse_option(const struct sk_buff *skb, if (!mp_opt->echo) { if (opsize == TCPOLEN_MPTCP_ADD_ADDR || opsize == TCPOLEN_MPTCP_ADD_ADDR_PORT) - mp_opt->addr.family = MPTCP_ADDR_IPVERSION_4; + mp_opt->addr.family = AF_INET; #if IS_ENABLED(CONFIG_MPTCP_IPV6) else if (opsize == TCPOLEN_MPTCP_ADD_ADDR6 || opsize == TCPOLEN_MPTCP_ADD_ADDR6_PORT) - mp_opt->addr.family = MPTCP_ADDR_IPVERSION_6; + mp_opt->addr.family = AF_INET6; #endif else break; } else { if (opsize == TCPOLEN_MPTCP_ADD_ADDR_BASE || opsize == TCPOLEN_MPTCP_ADD_ADDR_BASE_PORT) - mp_opt->addr.family = MPTCP_ADDR_IPVERSION_4; + mp_opt->addr.family = AF_INET; #if IS_ENABLED(CONFIG_MPTCP_IPV6) else if (opsize == TCPOLEN_MPTCP_ADD_ADDR6_BASE || opsize == TCPOLEN_MPTCP_ADD_ADDR6_BASE_PORT) - mp_opt->addr.family = MPTCP_ADDR_IPVERSION_6; + mp_opt->addr.family = AF_INET6; #endif else break; @@ -243,7 +243,7 @@ static void mptcp_parse_option(const struct sk_buff *skb, mp_opt->add_addr = 1; mp_opt->addr.id = *ptr++; - if (mp_opt->addr.family == MPTCP_ADDR_IPVERSION_4) { + if (mp_opt->addr.family == AF_INET) { memcpy((u8 *)&mp_opt->addr.addr.s_addr, (u8 *)ptr, 4); ptr += 4; if (opsize == TCPOLEN_MPTCP_ADD_ADDR_PORT || @@ -268,7 +268,7 @@ static void mptcp_parse_option(const struct sk_buff *skb, ptr += 8; } pr_debug("ADD_ADDR%s: id=%d, ahmac=%llu, echo=%d, port=%d", - (mp_opt->addr.family == MPTCP_ADDR_IPVERSION_6) ? "6" : "", + (mp_opt->addr.family == AF_INET6) ? "6" : "", mp_opt->addr.id, mp_opt->ahmac, mp_opt->echo, ntohs(mp_opt->addr.port)); break; @@ -991,7 +991,7 @@ static bool add_addr_hmac_valid(struct mptcp_sock *msk, if (mp_opt->echo) return true; - if (mp_opt->addr.family == MPTCP_ADDR_IPVERSION_4) + if (mp_opt->addr.family == AF_INET) hmac = add_addr_generate_hmac(msk->remote_key, msk->local_key, mp_opt->addr.id, &mp_opt->addr.addr, diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 7a2686ca7a0d..14f0114be17a 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -90,8 +90,6 @@ /* MPTCP ADD_ADDR flags */ #define MPTCP_ADDR_ECHO BIT(0) -#define MPTCP_ADDR_IPVERSION_4 4 -#define MPTCP_ADDR_IPVERSION_6 6 /* MPTCP MP_PRIO flags */ #define MPTCP_PRIO_BKUP BIT(0) From patchwork Wed Mar 17 07:36:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1454538 X-Patchwork-Delegate: matthieu.baerts@tessares.net 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; 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=S8StiIeJ; 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 4F0hnN0gbwz9sRR for ; Wed, 17 Mar 2021 18:37:12 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 1B5B9100EB82B; Wed, 17 Mar 2021 00:37:10 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::533; helo=mail-pg1-x533.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com [IPv6:2607:f8b0:4864:20::533]) (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 E02D9100EB825 for ; Wed, 17 Mar 2021 00:37:07 -0700 (PDT) Received: by mail-pg1-x533.google.com with SMTP id o10so24286731pgg.4 for ; Wed, 17 Mar 2021 00:37:07 -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=lE9fhjLUj1iqD+pkmza2KnHgIx1HkCQ9UCtC78GS0FI=; b=S8StiIeJ1im32HztIAOnB0HETX0G79pahL1NwTN+97oVrRbb9vymwPWKmtNJwoHls3 8KCpl3UFIcair2NxhlNzcf923RrZyuSGIcBkrlokDV7Tc+Sh95qGLDEgLr6m0laEsWPq Ca6RB9nBPrQWKJJgP8fPa/YE3zoijXO8FwDqOKOAOBzMjIjiZMta0i0/WchFl7NIltvp 32epsgMUk5ObIboyU3iAX3ZwJS+z3xfbkMJXKUHcsvCa1Rhjamzi6+l968rTMriRUXqj zWsYIxYIS9I6n6FiX38QB6ew32H0KyRj/pX+E2s1NUynZJ30I9L90mqSVlCyIQ1Y0kjP qi+A== 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=lE9fhjLUj1iqD+pkmza2KnHgIx1HkCQ9UCtC78GS0FI=; b=PAH/3/VY1bidLoAI3jUTISQNVe4bg3weAOJgatTosi1uvLOZ54/dQvJ431xFbdO+gN pT8gycs6hQFMuxV4ELMitHZcd+rilydal8CnzIiENqWXpdMTIKhNG3UAAqiK8DbSIE73 06AdHno+1F6iRggMBcV7P1HFj/ZB91Xqzl6ghYazivFUdNDerztBWT8fKbZaLACek+Zu FmnfbPJLVgPnQ9y2gYpdS1/RNqGAezY8s2aV6GqpWrvygaIM5at67iGx3QrAHaBNdxF9 FSxfTYsT4ZVTJcvUodtvhL15Zj6HDFWdU9YMQRHfdw3DCMERGsOxrvxwLx8CutzGtqzL NXfQ== X-Gm-Message-State: AOAM533FM3mu/jez+x3eyhYtAkvcud5Tw4xNnFrfpmB51+nOTG6nyQRq g8XIRV43HBZuEPJX74zT73181jWfXn5Ryg== X-Google-Smtp-Source: ABdhPJwqOBMyt+klt+M3Ag38rmeNSDXo8RQzwmj+6lGiaDg8SbcMy1wURH9VMWYdOuah3uUb1yudng== X-Received: by 2002:a63:d70f:: with SMTP id d15mr1564901pgg.397.1615966627187; Wed, 17 Mar 2021 00:37:07 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id v35sm17870427pga.3.2021.03.17.00.37.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Mar 2021 00:37:06 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Wed, 17 Mar 2021 15:36:21 +0800 Message-Id: X-Mailer: git-send-email 2.30.2 In-Reply-To: <5842d55dd4413d694cf9c871261dac4fb99e5ab7.1615966219.git.geliangtang@gmail.com> References: <468e80774d427c36d69d3927b2ed4e8bbf81fdef.1615966219.git.geliangtang@gmail.com> <48a821dc73542f7d4729015eb4c10ad95370dfb1.1615966219.git.geliangtang@gmail.com> <666cf05ae98c7be040adeac64c10c0e348723ff6.1615966219.git.geliangtang@gmail.com> <5b55310e5e6682adfc02b6cc47480eae20612b83.1615966219.git.geliangtang@gmail.com> <5842d55dd4413d694cf9c871261dac4fb99e5ab7.1615966219.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: 5WCVGZ5SLR7K67Q3QHSLEV65IFIL6ZBU X-Message-ID-Hash: 5WCVGZ5SLR7K67Q3QHSLEV65IFIL6ZBU 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 v3 mptcp-next 6/7] mptcp: unify add_addr(6)_generate_hmac List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: The length of the IPv4 address is 4 octets and IPv6 is 16. That's the only difference between add_addr_generate_hmac and add_addr6_generate_hmac. This patch dropped the duplicate code and unify them into one. Signed-off-by: Geliang Tang --- net/mptcp/options.c | 80 ++++++++++++++------------------------------- 1 file changed, 24 insertions(+), 56 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 5c6437c90859..e3fcd2b0ffd7 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -583,39 +583,31 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb, return true; } -static u64 add_addr_generate_hmac(u64 key1, u64 key2, u8 addr_id, - struct in_addr *addr, u16 port) -{ - u8 hmac[SHA256_DIGEST_SIZE]; - u8 msg[7]; - - msg[0] = addr_id; - memcpy(&msg[1], &addr->s_addr, 4); - msg[5] = port >> 8; - msg[6] = port & 0xFF; - - mptcp_crypto_hmac_sha(key1, key2, msg, 7, hmac); - - return get_unaligned_be64(&hmac[SHA256_DIGEST_SIZE - sizeof(u64)]); -} - -#if IS_ENABLED(CONFIG_MPTCP_IPV6) -static u64 add_addr6_generate_hmac(u64 key1, u64 key2, u8 addr_id, - struct in6_addr *addr, u16 port) +static u64 add_addr_generate_hmac(u64 key1, u64 key2, + struct mptcp_addr_info *addr) { u8 hmac[SHA256_DIGEST_SIZE]; u8 msg[19]; + int i = 0; - msg[0] = addr_id; - memcpy(&msg[1], &addr->s6_addr, 16); - msg[17] = port >> 8; - msg[18] = port & 0xFF; + msg[i++] = addr->id; + if (addr->family == AF_INET) { + memcpy(&msg[i], &addr->addr.s_addr, 4); + i += 4; + } +#if IS_ENABLED(CONFIG_MPTCP_IPV6) + else if (addr->family == AF_INET6) { + memcpy(&msg[i], &addr->addr6.s6_addr, 16); + i += 16; + } +#endif + msg[i++] = addr->port >> 8; + msg[i++] = addr->port & 0xFF; - mptcp_crypto_hmac_sha(key1, key2, msg, 19, hmac); + mptcp_crypto_hmac_sha(key1, key2, msg, i, hmac); return get_unaligned_be64(&hmac[SHA256_DIGEST_SIZE - sizeof(u64)]); } -#endif static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *skb, unsigned int *size, @@ -653,26 +645,11 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff * if (drop_other_suboptions) *size -= opt_size; opts->suboptions |= OPTION_MPTCP_ADD_ADDR; - if (opts->addr.family == AF_INET) { - if (!echo) { - opts->ahmac = add_addr_generate_hmac(msk->local_key, - msk->remote_key, - opts->addr.id, - &opts->addr.addr, - opts->addr.port); - } + if (!echo) { + opts->ahmac = add_addr_generate_hmac(msk->local_key, + msk->remote_key, + &opts->addr); } -#if IS_ENABLED(CONFIG_MPTCP_IPV6) - else if (opts->addr.family == AF_INET6) { - if (!echo) { - opts->ahmac = add_addr6_generate_hmac(msk->local_key, - msk->remote_key, - opts->addr.id, - &opts->addr.addr6, - opts->addr.port); - } - } -#endif pr_debug("addr_id=%d, ahmac=%llu, echo=%d, port=%d", opts->addr.id, opts->ahmac, echo, ntohs(opts->addr.port)); @@ -991,18 +968,9 @@ static bool add_addr_hmac_valid(struct mptcp_sock *msk, if (mp_opt->echo) return true; - if (mp_opt->addr.family == AF_INET) - hmac = add_addr_generate_hmac(msk->remote_key, - msk->local_key, - mp_opt->addr.id, &mp_opt->addr.addr, - mp_opt->addr.port); -#if IS_ENABLED(CONFIG_MPTCP_IPV6) - else - hmac = add_addr6_generate_hmac(msk->remote_key, - msk->local_key, - mp_opt->addr.id, &mp_opt->addr.addr6, - mp_opt->addr.port); -#endif + hmac = add_addr_generate_hmac(msk->remote_key, + msk->local_key, + &mp_opt->addr); pr_debug("msk=%p, ahmac=%llu, mp_opt->ahmac=%llu\n", msk, (unsigned long long)hmac, From patchwork Wed Mar 17 07:36:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1454539 X-Patchwork-Delegate: matthieu.baerts@tessares.net 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=tPO3Wdub; 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 4F0hnR5v5Dz9sRR for ; Wed, 17 Mar 2021 18:37:15 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 26BB3100EB829; Wed, 17 Mar 2021 00:37:14 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::102a; helo=mail-pj1-x102a.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) (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 63B32100EB82D for ; Wed, 17 Mar 2021 00:37:11 -0700 (PDT) Received: by mail-pj1-x102a.google.com with SMTP id lr1-20020a17090b4b81b02900ea0a3f38c1so4875087pjb.0 for ; Wed, 17 Mar 2021 00:37:11 -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=NWyOauJWBsqw1IGGeXu+IKWyCU7NvrxxXrLVb8/VcFk=; b=tPO3WdubS9/2ZGYKBlU3v6NSm41vKdxbRIgkwFrpWPYL29xctu74PFsmVf7I6upchO Sm0hkvAZAqBueMCovpvRpCoixW1txF6J+l6zN4NPamAY/OUIhesin/zjGZgQbXxTP0Go m5s1YgaEM7Rc3GOikwH9nKPMuSQv8uDOu7mCbvfE6zWnNC5WFco23a2AJKjls1t1BdQH Ox/w+U0RvzlFYV4s7EoOOh5KJ3auj+j6xg9BARk1h4OQTVj3MVg/4NoHNd3ld0m3Awgp y3YnYG44CUzwrcf4R89Wamf0GSOu1cjafvHYzTWhGMd7mrR+KNWoE3QXZxaDR61hH3LA dDhw== 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=NWyOauJWBsqw1IGGeXu+IKWyCU7NvrxxXrLVb8/VcFk=; b=ZH75lqEdRvb4hlHKO+twFqX8/2KnAEFY/1elnmMEB1xv4qZ+UOJ8Gt4HOv0tWeLd4p m6CUF6wifiLeRhJqox3Ols9PL5vDODQWcu8kXj/4wkk5CjWcRYTI2A6vQq1XaZbj8i4s rHfTIW3UlL5xqA6f5M0+6HtAjavbp8fx1xUeTBkxL4lNuYMrhi4mt2fnP8W89JwEh/Az y3ZhohbSO9RzZUSjRYG/QbA6hHVoAZD32Dddd7Vjluj2u1zm/Wkxb04itnvqgCnCzFBi /FQ5o9WwjJY+AK+SWxP3hhUEqk2SRw8iV5qlsYN4/HKvPBW4ZFOfnXbhZq40L6UUP5jb wt0A== X-Gm-Message-State: AOAM53242K9gcCfRCq4X5atWiBlKSp0gkITDiNCbH+aamroL8BGJEK88 6P/o7sZFVaJtrvhnxOjVN07EyHCtdC6pnQ== X-Google-Smtp-Source: ABdhPJwGe59jQ7fhaioZ64dBzVI0AC3cy4Mjuyb/brptXH2LGYGUjGlYYZ9YkvYoaaVFMTZzzrnPkQ== X-Received: by 2002:a17:90b:4c87:: with SMTP id my7mr3215294pjb.162.1615966630519; Wed, 17 Mar 2021 00:37:10 -0700 (PDT) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id o134sm965376pfd.113.2021.03.17.00.37.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Mar 2021 00:37:09 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Wed, 17 Mar 2021 15:36:22 +0800 Message-Id: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: <468e80774d427c36d69d3927b2ed4e8bbf81fdef.1615966219.git.geliangtang@gmail.com> <48a821dc73542f7d4729015eb4c10ad95370dfb1.1615966219.git.geliangtang@gmail.com> <666cf05ae98c7be040adeac64c10c0e348723ff6.1615966219.git.geliangtang@gmail.com> <5b55310e5e6682adfc02b6cc47480eae20612b83.1615966219.git.geliangtang@gmail.com> <5842d55dd4413d694cf9c871261dac4fb99e5ab7.1615966219.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: GXMC56YITUETYDMMKZFQTVEZN7LB4T53 X-Message-ID-Hash: GXMC56YITUETYDMMKZFQTVEZN7LB4T53 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 v3 mptcp-next 7/7] selftests: mptcp: add the net device name testcase List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added a new testcase for setting the net device name. In it, pass the net device name to pm_nl_ctl to set the ifindex field of struct mptcp_pm_addr_entry. Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh index abeb24b7f8ec..fd99485cf2a4 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -777,6 +777,14 @@ subflows_tests() ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 chk_join_nr "multiple subflows, limited by server" 2 2 1 + + # single subflow, dev + reset + ip netns exec $ns1 ./pm_nl_ctl limits 0 1 + ip netns exec $ns2 ./pm_nl_ctl limits 0 1 + ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow dev ns2eth3 + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "single subflow, dev" 1 1 1 } signal_address_tests()