From patchwork Fri Feb 5 14:24:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1436665 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=P3t4nzoP; 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 4DXHk55RFZz9sVm for ; Sat, 6 Feb 2021 01:24:45 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 8D86C100EA2DF; Fri, 5 Feb 2021 06:24:43 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::436; helo=mail-pf1-x436.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) (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 A065A100EA2DD for ; Fri, 5 Feb 2021 06:24:42 -0800 (PST) Received: by mail-pf1-x436.google.com with SMTP id m6so4443519pfk.1 for ; Fri, 05 Feb 2021 06:24:42 -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=5iO78qGbOTna3Gea/I+r5EUvzCKyPPNeMwaI50AzEmM=; b=P3t4nzoPeHWQCctKpFEb2fEDbdNKud8/lDnPr2xGPPM1umBmNkT3XHnl/CQHPfXUT3 4js0lO9cbHYam9UNxC+bSy3oRm/Dj2EBJrytMFqfpjoKIPn+7+g+IWTzou2ZRzFsRckO NMeZLuaNw6uMgPuN/6QRrBvxva/eNdqcdT14cUKap5KCwiX/Ww3Mu+1Wh87YtE9wqWBe FGc3onRdvAuUiDjr87lT2piZa4gayXfhV2YdTmS6yBV23Fl+4XlP8zE6SpREXnY1nw2A r2t6vq1pW/44y2mFqXb+dvlDlu9g1sK8Y6MRaoXqLttcIZ4Sb4ePY8EXcqk/Pt5P7crW FmXg== 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=5iO78qGbOTna3Gea/I+r5EUvzCKyPPNeMwaI50AzEmM=; b=UxZKXFPnPHRcEHCQ/6EMqa0QFLz5IOOdFJDFlcPJtqcmnwrgBXp9dUfYqpVNktMYmm EF/i0earVAJPq0562h2XUNalbueoGi8sLHiP+U3Hi47pGsqw6zWTzb5JMvD5RRtQ73od 1UWZGBexgtyUMbs1xUBa1IFeVuZIQdIsKxZBK2+b/Ei9qXS/7nIQf3Nv+jUk0j12yzZR g5BmUrl4AuXwQ4BgDqnig4WIR7I83dye7Dcchbn/EN4A2qAPoOWo9BIzSAkv51gsbLlT QA6jJH+RVe/02/61q/YUEsNGwVwh0ITwxgiGUWg3PNea1SayVU3fq970W/fY0n1AtOEK BEcA== X-Gm-Message-State: AOAM5337wKmAx3vctHNxh/17wfr5Z6sOCGUx1OWfI3WbXRXfESQ4ky6r 7JnqiFRiVh1jAVn3Krl8Bwv0V+I+kJ7AiQ== X-Google-Smtp-Source: ABdhPJztI1WRabMifo3CSzfgGqV/DtQXYdsSGBqewAXkiEFkaUmDp9/RpHRtVH7PLmgTJ3L8QoV/aA== X-Received: by 2002:aa7:80ca:0:b029:1c1:b636:ecc2 with SMTP id a10-20020aa780ca0000b02901c1b636ecc2mr4599949pfn.20.1612535081672; Fri, 05 Feb 2021 06:24:41 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id o190sm10753262pgo.50.2021.02.05.06.24.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:24:40 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Fri, 5 Feb 2021 22:24:25 +0800 Message-Id: X-Mailer: git-send-email 2.29.2 In-Reply-To: References: MIME-Version: 1.0 Message-ID-Hash: OZB74IRDJKNTTPW7CG5EKFKK3BIEHTQQ X-Message-ID-Hash: OZB74IRDJKNTTPW7CG5EKFKK3BIEHTQQ 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 v4 mptcp-next 1/9] mptcp: use rm_ids array in mptcp_out_options List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch changed the member rm_id of struct mptcp_out_options as an array of the removing address ids, and renamed it to rm_ids. The array size was definced as a new macro MPTCP_RM_IDS_MAX. Added a new function named mptcp_get_rm_ids_nr to get the number of address ids in the ids array. In mptcp_established_options_rm_addr, invoked mptcp_pm_rm_addr_signal to get the ids array. According the number of addresses in it, calculated the padded RM_ADDR suboption length. And saved the ids array in struct mptcp_out_options's rm_ids member. In mptcp_write_options, iterated each address id from struct mptcp_out_options's rm_ids member, set the zero ones as TCPOPT_NOP, then filled them into the RM_ADDR suboption. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 4 +++- net/mptcp/options.c | 41 +++++++++++++++++++++++++++++++++-------- net/mptcp/pm.c | 4 ++-- net/mptcp/pm_netlink.c | 1 - net/mptcp/protocol.h | 18 ++++++++++++++++-- 5 files changed, 54 insertions(+), 14 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 5694370be3d4..1d33fea674d2 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -34,6 +34,8 @@ struct mptcp_ext { /* one byte hole */ }; +#define MPTCP_RM_IDS_MAX 8 + struct mptcp_out_options { #if IS_ENABLED(CONFIG_MPTCP) u16 suboptions; @@ -48,7 +50,7 @@ struct mptcp_out_options { u8 addr_id; u16 port; u64 ahmac; - u8 rm_id; + u8 rm_ids[MPTCP_RM_IDS_MAX]; u8 join_id; u8 backup; u32 nonce; diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 1c5c99c06951..14843f42a42a 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -671,20 +671,27 @@ static bool mptcp_established_options_rm_addr(struct sock *sk, { struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); struct mptcp_sock *msk = mptcp_sk(subflow->conn); - u8 rm_id; + u8 rm_ids[MPTCP_RM_IDS_MAX], i, nr, align; if (!mptcp_pm_should_rm_signal(msk) || - !(mptcp_pm_rm_addr_signal(msk, remaining, &rm_id))) + !(mptcp_pm_rm_addr_signal(msk, remaining, rm_ids))) return false; - if (remaining < TCPOLEN_MPTCP_RM_ADDR_BASE) + nr = mptcp_get_rm_ids_nr(rm_ids); + if (nr > 1) + align = 5; + if (nr > 5) + align = 9; + + if (remaining < TCPOLEN_MPTCP_RM_ADDR_BASE + align) return false; - *size = TCPOLEN_MPTCP_RM_ADDR_BASE; + *size = TCPOLEN_MPTCP_RM_ADDR_BASE + align; opts->suboptions |= OPTION_MPTCP_RM_ADDR; - opts->rm_id = rm_id; + memcpy(opts->rm_ids, rm_ids, MPTCP_RM_IDS_MAX); - pr_debug("rm_id=%d", opts->rm_id); + for (i = 0; i < nr; i++) + pr_debug("rm_ids[%d]=%d", i, opts->rm_ids[i]); return true; } @@ -1213,9 +1220,27 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, } if (OPTION_MPTCP_RM_ADDR & opts->suboptions) { + u8 i, nr = 0; + + for (i = 0; i < MPTCP_RM_IDS_MAX; i++) { + if (opts->rm_ids[i] != MAX_ADDR_ID) + nr++; + else + opts->rm_ids[i] = TCPOPT_NOP; + } *ptr++ = mptcp_option(MPTCPOPT_RM_ADDR, - TCPOLEN_MPTCP_RM_ADDR_BASE, - 0, opts->rm_id); + TCPOLEN_MPTCP_RM_ADDR_BASE + nr, + 0, opts->rm_ids[0]); + if (nr > 1) { + put_unaligned_be32(opts->rm_ids[1] << 24 | opts->rm_ids[2] << 16 | + opts->rm_ids[3] << 8 | opts->rm_ids[4], ptr); + ptr += 1; + } + if (nr > 5) { + put_unaligned_be32(opts->rm_ids[5] << 24 | opts->rm_ids[6] << 16 | + opts->rm_ids[7] << 8 | TCPOPT_NOP, ptr); + ptr += 1; + } } if (OPTION_MPTCP_PRIO & opts->suboptions) { diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index a6d068d801d0..d71e8ff7c2fd 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -273,7 +273,7 @@ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, unsigned int remaining, } bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remaining, - u8 *rm_id) + u8 rm_ids[]) { int ret = false; @@ -286,7 +286,7 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remaining, if (remaining < TCPOLEN_MPTCP_RM_ADDR_BASE) goto out_unlock; - *rm_id = msk->pm.rm_id; + rm_ids[0] = msk->pm.rm_id; WRITE_ONCE(msk->pm.addr_signal, 0); ret = true; diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index d9eaee2037bd..073e8ad1cbd0 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -37,7 +37,6 @@ struct mptcp_pm_add_entry { u8 retrans_times; }; -#define MAX_ADDR_ID 255 #define BITMAP_SZ DIV_ROUND_UP(MAX_ADDR_ID + 1, BITS_PER_LONG) struct pm_nl_pernet { diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 7ad0dfef36bd..aa2716b50214 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -60,7 +60,7 @@ #define TCPOLEN_MPTCP_ADD_ADDR6_BASE 20 #define TCPOLEN_MPTCP_ADD_ADDR6_BASE_PORT 24 #define TCPOLEN_MPTCP_PORT_LEN 4 -#define TCPOLEN_MPTCP_RM_ADDR_BASE 4 +#define TCPOLEN_MPTCP_RM_ADDR_BASE 3 #define TCPOLEN_MPTCP_PRIO 3 #define TCPOLEN_MPTCP_PRIO_ALIGN 4 #define TCPOLEN_MPTCP_FASTCLOSE 12 @@ -291,6 +291,20 @@ struct mptcp_sock { #define mptcp_for_each_subflow(__msk, __subflow) \ list_for_each_entry(__subflow, &((__msk)->conn_list), node) +#define MAX_ADDR_ID 255 + +static inline u8 mptcp_get_rm_ids_nr(u8 rm_ids[]) +{ + int i; + + for (i = 0; i < MPTCP_RM_IDS_MAX; i++) { + if (rm_ids[i] == MAX_ADDR_ID) + break; + } + + return i; +} + static inline void msk_owned_by_me(const struct mptcp_sock *msk) { sock_owned_by_me((const struct sock *)msk); @@ -722,7 +736,7 @@ static inline unsigned int mptcp_add_addr_len(int family, bool echo, bool port) bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, unsigned int remaining, struct mptcp_addr_info *saddr, bool *echo, bool *port); bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remaining, - u8 *rm_id); + u8 rm_ids[]); int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc); void __init mptcp_pm_nl_init(void); From patchwork Fri Feb 5 14:24:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1436666 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=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=dK2WIygZ; 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 4DXHkB44qdz9sVm for ; Sat, 6 Feb 2021 01:24:50 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 9A8F1100EA101; Fri, 5 Feb 2021 06:24:48 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::52e; helo=mail-pg1-x52e.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) (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 C6EC5100EA100 for ; Fri, 5 Feb 2021 06:24:45 -0800 (PST) Received: by mail-pg1-x52e.google.com with SMTP id j2so4676389pgl.0 for ; Fri, 05 Feb 2021 06:24:45 -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=Y9ZtqRe+D16ZIKY+n781gAx1AQsT4avpffc5rEGRd7E=; b=dK2WIygZkjJYQ3tb6lZfEaGhNnBAQWFb/4wCyx4kqUBlJjbzsXz3r0Plorej9BZymE 6WGkkP+V1VvkioxoKbHbehMv/WehvP7imK5GMlSQIzksD0HPmmZsaoq8haI55yLare01 +T3+Ok57TrcOa9vd1nWtalOhhHigOoaX0oewDB27xVVwHASEXB2eVZdfvjnQfnz936nM 2oWY6Buudwa92PiWZ+SOvrMmaGJBIdbjUR7gDD/StfNXfKkRwQCHL5b2uuRbynLSSGLx PE6trvCHN0Rx/NqUrRCVbagIRj5EU1C6dUlTsfTh+fQkLeIdBVgxxgCO/3LuQVfodXaa po0w== 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=Y9ZtqRe+D16ZIKY+n781gAx1AQsT4avpffc5rEGRd7E=; b=Ks+dPZOxgL7jXEnwW2DbTr7AzSZijQtQEYUhMEYx5h+EmVYdOMdGGJbitPtA679lvH hQeFkuleIt5q+d5gv/b45KqhiMjNEEH+Apx7v1v0QeVPs3BNWJSmeZNhwT3QYR1El0L7 YA7n0SlbGbBZPPkkf5gU1tmTWZ4MDLav4Zw1nx2Z+tAo4qd6RpjtLvoHQbhQNRzSbp3C 8FSFpaGI0wUl+sejIQlF6W8BeRY/b9/lHMzhYqX0J3pIam/zl0jUc2L0ng+oiyssW7Kl jEiaG8Hi3qSXicOGZhbLeec0n5bfoXdJp+/vfdrgPoPiyPY1KNyywqy600UstzEv38OG I/Rg== X-Gm-Message-State: AOAM532gYQLKRIIuWTNS3+Bb2HUWVJpOYDQgvFm31nnQKrS5WgnY7I+R yNDj4zfoEsD98DY7Ai7V8y6feNknbhh6mQ== X-Google-Smtp-Source: ABdhPJy+d+bxDpWuIr1md6pTlDktNSV8syejGigMng0q9wis+x2ETIPsbYhBEI1vs901QE9lpKBOeA== X-Received: by 2002:a65:62cd:: with SMTP id m13mr4657178pgv.108.1612535084971; Fri, 05 Feb 2021 06:24:44 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id 6sm10344563pgv.70.2021.02.05.06.24.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:24:44 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Fri, 5 Feb 2021 22:24:26 +0800 Message-Id: <7d72dee8595a08b314a5e97300b2d839058c3596.1612534634.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: References: MIME-Version: 1.0 Message-ID-Hash: IDLNALZW7ABJAUDPYA6KPPYLRHH5NYSE X-Message-ID-Hash: IDLNALZW7ABJAUDPYA6KPPYLRHH5NYSE 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 v4 mptcp-next 2/9] mptcp: use rm_ids_tx array in mptcp_pm_data List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added a new member rm_ids_tx for struct mptcp_pm_data as an array of the removing address ids on the outgoing direction. Used memset to initialize it, and memcpy to copy it. In mptcp_pm_remove_anno_addr, put the single address id into an ids array, and passed it to mptcp_pm_remove_addr. Signed-off-by: Geliang Tang --- net/mptcp/pm.c | 10 +++++----- net/mptcp/pm_netlink.c | 6 +++++- net/mptcp/protocol.h | 3 ++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index d71e8ff7c2fd..85ca63cbc256 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -39,18 +39,18 @@ int mptcp_pm_announce_addr(struct mptcp_sock *msk, return 0; } -int mptcp_pm_remove_addr(struct mptcp_sock *msk, u8 local_id) +int mptcp_pm_remove_addr(struct mptcp_sock *msk, u8 local_ids[]) { u8 rm_addr = READ_ONCE(msk->pm.addr_signal); - pr_debug("msk=%p, local_id=%d", msk, local_id); + pr_debug("msk=%p, local_ids_nr=%d", msk, mptcp_get_rm_ids_nr(local_ids)); if (rm_addr) { pr_warn("addr_signal error, rm_addr=%d", rm_addr); return -EINVAL; } - msk->pm.rm_id = local_id; + memcpy(msk->pm.rm_ids_tx, local_ids, MPTCP_RM_IDS_MAX); rm_addr |= BIT(MPTCP_RM_ADDR_SIGNAL); WRITE_ONCE(msk->pm.addr_signal, rm_addr); return 0; @@ -286,7 +286,7 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remaining, if (remaining < TCPOLEN_MPTCP_RM_ADDR_BASE) goto out_unlock; - rm_ids[0] = msk->pm.rm_id; + memcpy(rm_ids, msk->pm.rm_ids_tx, MPTCP_RM_IDS_MAX); WRITE_ONCE(msk->pm.addr_signal, 0); ret = true; @@ -306,7 +306,7 @@ void mptcp_pm_data_init(struct mptcp_sock *msk) msk->pm.add_addr_accepted = 0; msk->pm.local_addr_used = 0; msk->pm.subflows = 0; - msk->pm.rm_id = 0; + memset(msk->pm.rm_ids_tx, MAX_ADDR_ID, MPTCP_RM_IDS_MAX); WRITE_ONCE(msk->pm.work_pending, false); WRITE_ONCE(msk->pm.addr_signal, 0); WRITE_ONCE(msk->pm.accept_addr, false); diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 073e8ad1cbd0..f26453b3cb01 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1079,12 +1079,16 @@ static bool mptcp_pm_remove_anno_addr(struct mptcp_sock *msk, struct mptcp_addr_info *addr, bool force) { + u8 ids[MPTCP_RM_IDS_MAX]; bool ret; + memset(ids, MAX_ADDR_ID, MPTCP_RM_IDS_MAX); + ids[0] = addr->id; + ret = remove_anno_list_by_saddr(msk, addr); if (ret || force) { spin_lock_bh(&msk->pm.lock); - mptcp_pm_remove_addr(msk, addr->id); + mptcp_pm_remove_addr(msk, ids); spin_unlock_bh(&msk->pm.lock); } return ret; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index aa2716b50214..be00ca68457e 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -207,6 +207,7 @@ struct mptcp_pm_data { u8 local_addr_used; u8 subflows; u8 status; + u8 rm_ids_tx[MPTCP_RM_IDS_MAX]; u8 rm_id; }; @@ -686,7 +687,7 @@ mptcp_pm_del_add_timer(struct mptcp_sock *msk, int mptcp_pm_announce_addr(struct mptcp_sock *msk, const struct mptcp_addr_info *addr, bool echo, bool port); -int mptcp_pm_remove_addr(struct mptcp_sock *msk, u8 local_id); +int mptcp_pm_remove_addr(struct mptcp_sock *msk, u8 local_ids[]); int mptcp_pm_remove_subflow(struct mptcp_sock *msk, u8 local_id); void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk, From patchwork Fri Feb 5 14:24:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1436667 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=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=bqj2tdC0; 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 4DXHkF0LNfz9sVm for ; Sat, 6 Feb 2021 01:24:53 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id A681A100EA102; Fri, 5 Feb 2021 06:24:51 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::531; helo=mail-pg1-x531.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pg1-x531.google.com (mail-pg1-x531.google.com [IPv6:2607:f8b0:4864:20::531]) (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 6ADB1100EA102 for ; Fri, 5 Feb 2021 06:24:49 -0800 (PST) Received: by mail-pg1-x531.google.com with SMTP id o21so3241233pgn.12 for ; Fri, 05 Feb 2021 06:24:49 -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=0GEtmvge/Bd121usUjdOxLg9lIU7Haxq2lI+nDvJq70=; b=bqj2tdC07Ok0BRLOJyBGEiPUjP85u9acig3LxahqTPihf65+1+cxAJyj2RRq+sMxy+ KoiagW6CKjAelMhgXEFvLn0SgxUsXopBN3eOCGfLp3egjP7+2opRCHTpaPNcQ8qKcDkQ wpAgsKjcL2U44Y9QJZVaQZk74tY/Y7Z4MeNO797kR94Qq+FxUUurLuHhkbHVbwVzLLhx 8GggfmBOCvSgdGZWtlpn+1kCQqAU9ZlJ8eETE8WuEPbgZp/hKSSwdYgdbRiFTvOiEbzK CYbhQ6kzNNGnH9GNrILQTpKIF06AOzaYknryMZbace2thlJzQsDXk2SFNpGzjmI8WFDa M3bg== 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=0GEtmvge/Bd121usUjdOxLg9lIU7Haxq2lI+nDvJq70=; b=XS1wYAwsUmy0o8B0ZxbCkRLWYHSUfEsYdc4s3FaRU4O88CZNuxF8V6yzJAEfa3vHkR 5O4nbfvHcGWi+ZkKbZJvwGlNnw9kDIAPTU7QgULmkQeQChIWckOldMKOP7+FN9iod/7/ Rzi74NqLmWul9+UDOpsnmY6JkN7xdN8JOSTSSo5vvYGvEQBKabRPsNwOIlGZaTWM47Fi 9wwv6k0Tc1YV1v0wcah4j6TX5Zh9unlNs+we0DjHCOh6lY4Q0jbex9hyIYQ98otD96cD Yvni4o7yh0Q23DnVGbP3L/a3za07LooddqECq4RFy1rWR5QkyS4QoRoxV0wHtDL205kL uLKA== X-Gm-Message-State: AOAM531s2P+Xao9fM0RAn4041SvIxoKEWCxUXA52NQ3op8dUF2xyRM8w zJLZLKkIlp0LfDZ+Mz1lKT1OcGxoA8wwwQ== X-Google-Smtp-Source: ABdhPJzq54Yka3rlAM7xgqzGZG6titJ4V1Wy0URiM5/lLz/e4hI1I9tTNhcdbCRfbLhjcFx5Q7WJZA== X-Received: by 2002:a05:6a00:2385:b029:1b6:1603:4ea3 with SMTP id f5-20020a056a002385b02901b616034ea3mr4680754pfc.40.1612535088591; Fri, 05 Feb 2021 06:24:48 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id u14sm528227pfc.39.2021.02.05.06.24.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:24:47 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Fri, 5 Feb 2021 22:24:27 +0800 Message-Id: <6aa788764dc5d769523835ebdec053c8ee391eec.1612534634.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <7d72dee8595a08b314a5e97300b2d839058c3596.1612534634.git.geliangtang@gmail.com> References: <7d72dee8595a08b314a5e97300b2d839058c3596.1612534634.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: VXY6MO3Y2ZYZPB7WOYHL3OK7UZTXO6A5 X-Message-ID-Hash: VXY6MO3Y2ZYZPB7WOYHL3OK7UZTXO6A5 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 v4 mptcp-next 3/9] mptcp: use rm_ids array in mptcp_options_received List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch changed the member rm_id in struct mptcp_options_received as an array of the removing address ids, and renamed it to rm_ids. In mptcp_parse_option, parsed the RM_ADDR suboption and filled them into the ids array in struct mptcp_options_received. In mptcp_incoming_options, passed this ids array to the function mptcp_pm_rm_addr_received. It alse changed the parameter type of mptcp_pm_rm_addr_received. Signed-off-by: Geliang Tang --- net/mptcp/options.c | 13 +++++++++---- net/mptcp/pm.c | 10 ++++++---- net/mptcp/protocol.h | 4 ++-- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 14843f42a42a..597ee5b1416f 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -26,6 +26,7 @@ static void mptcp_parse_option(const struct sk_buff *skb, int expected_opsize; u8 version; u8 flags; + u8 i, nr; switch (subtype) { case MPTCPOPT_MP_CAPABLE: @@ -272,14 +273,18 @@ static void mptcp_parse_option(const struct sk_buff *skb, break; case MPTCPOPT_RM_ADDR: - if (opsize != TCPOLEN_MPTCP_RM_ADDR_BASE) + if (opsize < TCPOLEN_MPTCP_RM_ADDR_BASE + 1 || + opsize > TCPOLEN_MPTCP_RM_ADDR_BASE + MPTCP_RM_IDS_MAX) break; ptr++; mp_opt->rm_addr = 1; - mp_opt->rm_id = *ptr++; - pr_debug("RM_ADDR: id=%d", mp_opt->rm_id); + memset(mp_opt->rm_ids, MAX_ADDR_ID, MPTCP_RM_IDS_MAX); + nr = opsize - TCPOLEN_MPTCP_RM_ADDR_BASE; + for (i = 0; i < nr; i++) + mp_opt->rm_ids[i] = *ptr++; + pr_debug("RM_ADDR: ids_nr=%d", nr); break; case MPTCPOPT_MP_PRIO: @@ -1041,7 +1046,7 @@ void mptcp_incoming_options(struct sock *sk, struct sk_buff *skb) } if (mp_opt.rm_addr) { - mptcp_pm_rm_addr_received(msk, mp_opt.rm_id); + mptcp_pm_rm_addr_received(msk, mp_opt.rm_ids); mp_opt.rm_addr = 0; } diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 85ca63cbc256..67be36df042c 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -220,17 +220,19 @@ void mptcp_pm_add_addr_send_ack(struct mptcp_sock *msk) mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_SEND_ACK); } -void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, u8 rm_id) +void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, u8 rm_ids[]) { struct mptcp_pm_data *pm = &msk->pm; + u8 i; - pr_debug("msk=%p remote_id=%d", msk, rm_id); + pr_debug("msk=%p remote_ids_nr=%d", msk, mptcp_get_rm_ids_nr(rm_ids)); - mptcp_event_addr_removed(msk, rm_id); + for (i = 0; i < MPTCP_RM_IDS_MAX && rm_ids[i]; i++) + mptcp_event_addr_removed(msk, rm_ids[i]); spin_lock_bh(&pm->lock); mptcp_pm_schedule_work(msk, MPTCP_PM_RM_ADDR_RECEIVED); - pm->rm_id = rm_id; + pm->rm_id = rm_ids[0]; spin_unlock_bh(&pm->lock); } diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index be00ca68457e..52ee579a176c 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -141,7 +141,7 @@ struct mptcp_options_received { mpc_map:1, __unused:2; u8 addr_id; - u8 rm_id; + u8 rm_ids[MPTCP_RM_IDS_MAX]; union { struct in_addr addr; #if IS_ENABLED(CONFIG_MPTCP_IPV6) @@ -670,7 +670,7 @@ void mptcp_pm_subflow_closed(struct mptcp_sock *msk, u8 id); void mptcp_pm_add_addr_received(struct mptcp_sock *msk, const struct mptcp_addr_info *addr); void mptcp_pm_add_addr_send_ack(struct mptcp_sock *msk); -void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, u8 rm_id); +void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, u8 rm_ids[]); void mptcp_pm_mp_prio_received(struct sock *sk, u8 bkup); int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk, struct mptcp_addr_info *addr, From patchwork Fri Feb 5 14:24:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1436668 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=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=OAw8m+RG; 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 4DXHkK4Yttz9sVm for ; Sat, 6 Feb 2021 01:24:57 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id B2FD2100EA2DE; Fri, 5 Feb 2021 06:24:55 -0800 (PST) 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 2385C100EA103 for ; Fri, 5 Feb 2021 06:24:53 -0800 (PST) Received: by mail-pj1-x102a.google.com with SMTP id g15so3874902pjd.2 for ; Fri, 05 Feb 2021 06:24:53 -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=gTC2l3raiZSVDDkHwTKbMpIr+IcOmC32NCq2aImpxqs=; b=OAw8m+RGH+AxmGuZUcPNTR+l4lv6574i6X6R90EwXpxhP7BF8BbRQp5G50GBJFKytY mz8UJggrfOfJkvyU42BY6keJur5BdXMvUJsUTR2ULJKA6MWaycpZNxLHIf5Re/xNaSuF YZcFyyBE8d+AZmLqt2+u4Y7VbvtdXyxW+K9JL/QpyRbB8PFc33SUqIEl8iBKWH6+xkbJ INgesRLS5gSO2b6GZE7pC4ztvFdgRfCr/LK0947QljLQv4zD25iCVcHDzaOorouKJWC+ QGET6Tx8rswS4grhXL9xJHSH2NeXAbRz9JGHh0AE5xUuGMcCQr0+iqN7cqnOm5m++kjo C/Tg== 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=gTC2l3raiZSVDDkHwTKbMpIr+IcOmC32NCq2aImpxqs=; b=Y6ISdHti8CQoVcFJZ3UmYfJavzNIxO3TLAvXZFwxYZZC6EXum81XYdleH5Ws/nViSa PmdoohxOskmamXQQASMdFrTwUb3OFH6XZIswjb9kP0IfrGT76duFCug5GeBlFeu0DPAm xlq63D2TKtQJFvATE4ePQKjGQoAmpy2/UNiKqx/aq5tUnZc6n1f61ob+oL0onIAQMCZj Y1jzkGptq3brfY7USPyjRCPsIqW3DOYWEWWYmhH+SxncP2GOcvccA05cYU3Eh3Uk+kHk WjS2PuIxPG5/4ZiYH+9uZ845FNfh8zFqfpxBoo0bGyda/rvgB8l77Gdi8+Zd8PwP9WSp BPdw== X-Gm-Message-State: AOAM5303VMxYWyt7hORXnGzafTIb0tp1wNgTYzBoMKYE4tUvlQkt6ADQ SJSlZ0RBBAAdEk01V7wPnn7zZt2tWlYf7A== X-Google-Smtp-Source: ABdhPJxjNqtlYKmb1owGCnnZfyTtK2WHMoCFZejHdkI89YKQuVJBJkq7E6+3mWr3CSNLqLPMmcsr8w== X-Received: by 2002:a17:90a:7c45:: with SMTP id e5mr4293013pjl.170.1612535092407; Fri, 05 Feb 2021 06:24:52 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id f13sm11958701pjj.1.2021.02.05.06.24.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:24:51 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Fri, 5 Feb 2021 22:24:28 +0800 Message-Id: <242379f38b7038fc14cd0397449bd782237639af.1612534634.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <6aa788764dc5d769523835ebdec053c8ee391eec.1612534634.git.geliangtang@gmail.com> References: <7d72dee8595a08b314a5e97300b2d839058c3596.1612534634.git.geliangtang@gmail.com> <6aa788764dc5d769523835ebdec053c8ee391eec.1612534634.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: R5D4BXCY4LYSKMRYLKA746EBHJYPBVVX X-Message-ID-Hash: R5D4BXCY4LYSKMRYLKA746EBHJYPBVVX 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 v4 mptcp-next 4/9] mptcp: use rm_ids_rx array in mptcp_pm_data List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added a new member rm_ids_rx for struct mptcp_pm_data as an array of the removing address ids on the incoming direction. Used memset to initialize it, and memcpy to copy it. Signed-off-by: Geliang Tang --- net/mptcp/pm.c | 3 ++- net/mptcp/protocol.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 67be36df042c..8d7551a871ce 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -232,7 +232,7 @@ void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, u8 rm_ids[]) spin_lock_bh(&pm->lock); mptcp_pm_schedule_work(msk, MPTCP_PM_RM_ADDR_RECEIVED); - pm->rm_id = rm_ids[0]; + memcpy(pm->rm_ids_rx, rm_ids, MPTCP_RM_IDS_MAX); spin_unlock_bh(&pm->lock); } @@ -309,6 +309,7 @@ void mptcp_pm_data_init(struct mptcp_sock *msk) msk->pm.local_addr_used = 0; msk->pm.subflows = 0; memset(msk->pm.rm_ids_tx, MAX_ADDR_ID, MPTCP_RM_IDS_MAX); + memset(msk->pm.rm_ids_rx, MAX_ADDR_ID, MPTCP_RM_IDS_MAX); WRITE_ONCE(msk->pm.work_pending, false); WRITE_ONCE(msk->pm.addr_signal, 0); WRITE_ONCE(msk->pm.accept_addr, false); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 52ee579a176c..dba9e9d4385b 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -208,6 +208,7 @@ struct mptcp_pm_data { u8 subflows; u8 status; u8 rm_ids_tx[MPTCP_RM_IDS_MAX]; + u8 rm_ids_rx[MPTCP_RM_IDS_MAX]; u8 rm_id; }; From patchwork Fri Feb 5 14:24:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1436669 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=gNZTERAp; 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 4DXHkM3r14z9sVm for ; Sat, 6 Feb 2021 01:24:59 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id C9EBA100EA103; Fri, 5 Feb 2021 06:24:57 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::435; helo=mail-pf1-x435.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) (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 C1556100EA2DC for ; Fri, 5 Feb 2021 06:24:56 -0800 (PST) Received: by mail-pf1-x435.google.com with SMTP id w18so4419640pfu.9 for ; Fri, 05 Feb 2021 06:24:56 -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=vRfOXbM4OkCyWWEyG/v+kIOFFSzMGmg7HAyFHPN1/dE=; b=gNZTERAp14OsbFwU4KT40V0crIuFdyP/sNF1LU6E4q5zPozwV9erZ0AxAnHjOIF5p1 d1DOCmfLhy4zQ2y30IQSFD5dQPwTMVyI+sdJIS+nNRnXaWuAuysSyQdsImvb5Noi2KW/ 794vmQavGUF/qGx9Eulu4amRaDmQywM297+v+qSh2hTqFFEJ7t8USiS8mDFB+WjkPsS/ HTRaXVyJCVRWgUdaiMC/aWZUJSdHO1hS/DhbjjiMJPXX4CRmgEt2exWM8c0ckYSFHtr+ O+OJo1cbQcUSy2yiz6TRuKU7SY2hKJvkVFHPxss+FUeEuv39H2Gg2as32g2k8FLo7f8u LRnA== 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=vRfOXbM4OkCyWWEyG/v+kIOFFSzMGmg7HAyFHPN1/dE=; b=JdJvpSuPTEYQnxi7/BuAEZLdqeH/UrFXa0SMYZ8MumxuMbZch/m46v0HwyeXu8X+OQ TpEATiDB7LJNoNaY0Uoe75MnygPaTqkDeL/9hFnxhWNBJ9wqTCQolsEGSLkg8PshThZs b5YRrXUcyqOrWYr5ItocH/eFchAxmQUhlAz80ebID1QOZKeqkqjVXaTQHyyniMD00zEn UkJESwqVTFpJKgDtHhkMV9NeNd/U79MFWS0L2JuQasggNC+cjXr6w0YeWw03Aa0/0aPl A84bA+2mGXmqwGh6QjuUDbhAyRmNun9JwTJr2+ok1yxV/vu35SjddTxXcZKuvtD59m3I rotg== X-Gm-Message-State: AOAM533pDiKjsh6IF7TZggvscrH9G6YyhdQN3SZydUoD5JILv+8xTKtA ja4nEO+WHtCwH0X4mzZoddLzK1IN2oyD0g== X-Google-Smtp-Source: ABdhPJxf4WYKTx1aJnECmPVtz2spvgHX502j8ZDFzgfNp3M7E/A3CiGBTCLI9oa0hRC4YaVHV8Sscg== X-Received: by 2002:a63:1965:: with SMTP id 37mr4691840pgz.349.1612535095983; Fri, 05 Feb 2021 06:24:55 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id b129sm10854932pgc.52.2021.02.05.06.24.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:24:55 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Fri, 5 Feb 2021 22:24:29 +0800 Message-Id: <3cf42c12a72c462884a26d6c5fe6721c66070fc7.1612534634.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <242379f38b7038fc14cd0397449bd782237639af.1612534634.git.geliangtang@gmail.com> References: <7d72dee8595a08b314a5e97300b2d839058c3596.1612534634.git.geliangtang@gmail.com> <6aa788764dc5d769523835ebdec053c8ee391eec.1612534634.git.geliangtang@gmail.com> <242379f38b7038fc14cd0397449bd782237639af.1612534634.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: IOLIPW3W57KDTGSA5FIBAJWVDW2QYIGD X-Message-ID-Hash: IOLIPW3W57KDTGSA5FIBAJWVDW2QYIGD 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 v4 mptcp-next 5/9] mptcp: remove multi addresses in PM List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch dropped the member rm_id of struct mptcp_pm_data. Use rm_ids_rx in mptcp_pm_nl_rm_addr_received instead of using rm_id. In mptcp_pm_nl_rm_addr_received, iterated each address id from pm.rm_ids_rx, then shut down and closed each address id's subsocket. Signed-off-by: Geliang Tang --- net/mptcp/pm_netlink.c | 38 ++++++++++++++++++++++---------------- net/mptcp/protocol.h | 1 - 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index f26453b3cb01..c883b010c4c6 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -574,36 +574,42 @@ static void mptcp_pm_nl_rm_addr_received(struct mptcp_sock *msk) { struct mptcp_subflow_context *subflow, *tmp; struct sock *sk = (struct sock *)msk; + u8 i, nr; - pr_debug("address rm_id %d", msk->pm.rm_id); + nr = mptcp_get_rm_ids_nr(msk->pm.rm_ids_rx); + + pr_debug("address rm_ids_nr %d", nr); msk_owned_by_me(msk); - if (!msk->pm.rm_id) + if (!nr) return; if (list_empty(&msk->conn_list)) return; - list_for_each_entry_safe(subflow, tmp, &msk->conn_list, node) { - struct sock *ssk = mptcp_subflow_tcp_sock(subflow); - int how = RCV_SHUTDOWN | SEND_SHUTDOWN; + for (i = 0; i < MPTCP_RM_IDS_MAX && msk->pm.rm_ids_rx[i] != MAX_ADDR_ID; i++) { + list_for_each_entry_safe(subflow, tmp, &msk->conn_list, node) { + struct sock *ssk = mptcp_subflow_tcp_sock(subflow); + int how = RCV_SHUTDOWN | SEND_SHUTDOWN; - if (msk->pm.rm_id != subflow->remote_id) - continue; + if (msk->pm.rm_ids_rx[i] != subflow->remote_id) + continue; - spin_unlock_bh(&msk->pm.lock); - mptcp_subflow_shutdown(sk, ssk, how); - mptcp_close_ssk(sk, ssk, subflow); - spin_lock_bh(&msk->pm.lock); + pr_debug(" -> address rm_ids[%d]=%u", i, msk->pm.rm_ids_rx[i]); + spin_unlock_bh(&msk->pm.lock); + mptcp_subflow_shutdown(sk, ssk, how); + mptcp_close_ssk(sk, ssk, subflow); + spin_lock_bh(&msk->pm.lock); - msk->pm.add_addr_accepted--; - msk->pm.subflows--; - WRITE_ONCE(msk->pm.accept_addr, true); + msk->pm.add_addr_accepted--; + msk->pm.subflows--; + WRITE_ONCE(msk->pm.accept_addr, true); - __MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RMADDR); + __MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RMADDR); - break; + break; + } } } diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index dba9e9d4385b..d4209ee9f913 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -209,7 +209,6 @@ struct mptcp_pm_data { u8 status; u8 rm_ids_tx[MPTCP_RM_IDS_MAX]; u8 rm_ids_rx[MPTCP_RM_IDS_MAX]; - u8 rm_id; }; struct mptcp_data_frag { From patchwork Fri Feb 5 14:24:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1436670 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=S0igux1m; 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 4DXHkR3wNMz9sVm for ; Sat, 6 Feb 2021 01:25:03 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id D9C1C100EA104; Fri, 5 Feb 2021 06:25:01 -0800 (PST) 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 EAD48100EA2DC for ; Fri, 5 Feb 2021 06:24:59 -0800 (PST) Received: by mail-pj1-x102a.google.com with SMTP id q72so3706956pjq.2 for ; Fri, 05 Feb 2021 06:24:59 -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=FD8LHhxGX9xsK3o1JiKsz795DEcHh/fsL6zuxZXZG0Y=; b=S0igux1mw+Tewom7dpFubNnA1Yj9NgJveogi/rTGWu9cadsh8G5CnGn9XB2+gc7UN9 Pf+bWnP76nazbkkqojBWBmlMQpfxBxBJEotDli1i9Mo8h9UfwBLm6ox0HkUNFltSqgDv ZKmx0OsBdWQ0CXp0ejDF20xutkKJQMjELVZT/9AmuxKsU11SmvdK3EOjQgvVFMwvx4u3 1YnTtLifySe3Z1c0dbvG+2FLC2P4eZdd+vKi4AyJ54wciuMvD1j/j1f0pCcQRmS6s3KK zNh25W0fj367PxkjurU7dyY5ddfAxRokCDnYlJv7uMviY0EIPFX3BxnCPmh1i+cGh8U5 dopQ== 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=FD8LHhxGX9xsK3o1JiKsz795DEcHh/fsL6zuxZXZG0Y=; b=ewBH9U73g+V1YSjs7zun7lhgYy/WuVCFfT1PhRcFDgi7BcIfbCWJY7CEpM/QkcRbYZ 5eYAD+hq0R85ijgPcJkkzGls+ZrnjiW2KAn8s6qpk7tJpbfQLwIfig9dioRh7cK7BcT2 m5ML/HTjzJbh9aAo6j5Q2MlqwbrlKrMhDzINBZuCAixq6Uk+DBsj8pXkqlHU6Ct1v6As zNl6zPpwizWjZOeP3lQJlqtknamLh/fyQ/E0DuMKpDzEY/SnuFM/QjejsxDSKcqcbYYh Rl/WleMysFJoLKsQ47Fk1fmsO7Ao/vaq99MgZy+invbB4Wt1H3/DWj3KH74vAUE+NWau UULA== X-Gm-Message-State: AOAM532TWLeNpi7DQcMLhRLIkjX5ggbJA0devL0ClDD/ubAbPfit4CrY VzKxju3XexAijog6Ve0eVF1PpfkgBXbU6Q== X-Google-Smtp-Source: ABdhPJzbPZQGpVEhoA5Xel9zjH4zQyeqh0jWvcVxYM6qFwPSsNukCQ09Lg+JqsVQAdLPNaTh6/WcsQ== X-Received: by 2002:a17:90a:670c:: with SMTP id n12mr4167676pjj.46.1612535099252; Fri, 05 Feb 2021 06:24:59 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id b12sm2330433pfr.178.2021.02.05.06.24.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:24:58 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Fri, 5 Feb 2021 22:24:30 +0800 Message-Id: <4150034f6f320da03b19c30b91798ad3fc3bb6ba.1612534634.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <3cf42c12a72c462884a26d6c5fe6721c66070fc7.1612534634.git.geliangtang@gmail.com> References: <7d72dee8595a08b314a5e97300b2d839058c3596.1612534634.git.geliangtang@gmail.com> <6aa788764dc5d769523835ebdec053c8ee391eec.1612534634.git.geliangtang@gmail.com> <242379f38b7038fc14cd0397449bd782237639af.1612534634.git.geliangtang@gmail.com> <3cf42c12a72c462884a26d6c5fe6721c66070fc7.1612534634.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: 2IAWDHGAW5LHJNV7ZJXDPMDUXFKULSAQ X-Message-ID-Hash: 2IAWDHGAW5LHJNV7ZJXDPMDUXFKULSAQ 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 v4 mptcp-next 6/9] mptcp: remove multi subflows in PM List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch dealt with removing multi subflows in PM: In mptcp_pm_remove_subflow, changed the input parameter local_id as an array of removing address ids, and passed the array to mptcp_pm_nl_rm_subflow_received. In mptcp_pm_nl_rm_subflow_received, iterated each address id from the received ids array. Then shut down and closed each address id's subsocket. In mptcp_nl_remove_subflow_and_signal_addr, put the single address id into an ids array, and passed it to mptcp_pm_remove_subflow. Signed-off-by: Geliang Tang --- net/mptcp/pm.c | 6 +++--- net/mptcp/pm_netlink.c | 44 ++++++++++++++++++++++++++---------------- net/mptcp/protocol.h | 4 ++-- 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 8d7551a871ce..2c2e432ee697 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -56,12 +56,12 @@ int mptcp_pm_remove_addr(struct mptcp_sock *msk, u8 local_ids[]) return 0; } -int mptcp_pm_remove_subflow(struct mptcp_sock *msk, u8 local_id) +int mptcp_pm_remove_subflow(struct mptcp_sock *msk, u8 local_ids[]) { - pr_debug("msk=%p, local_id=%d", msk, local_id); + pr_debug("msk=%p, local_ids_nr=%d", msk, mptcp_get_rm_ids_nr(local_ids)); spin_lock_bh(&msk->pm.lock); - mptcp_pm_nl_rm_subflow_received(msk, local_id); + mptcp_pm_nl_rm_subflow_received(msk, local_ids); spin_unlock_bh(&msk->pm.lock); return 0; } diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index c883b010c4c6..b4d6f7b56a65 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -655,39 +655,45 @@ void mptcp_pm_nl_work(struct mptcp_sock *msk) spin_unlock_bh(&msk->pm.lock); } -void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, u8 rm_id) +void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, u8 rm_ids[]) { struct mptcp_subflow_context *subflow, *tmp; struct sock *sk = (struct sock *)msk; + u8 i, nr; + + nr = mptcp_get_rm_ids_nr(rm_ids); - pr_debug("subflow rm_id %d", rm_id); + pr_debug("subflow rm_ids_nr %d", nr); msk_owned_by_me(msk); - if (!rm_id) + if (!nr) return; if (list_empty(&msk->conn_list)) return; - list_for_each_entry_safe(subflow, tmp, &msk->conn_list, node) { - struct sock *ssk = mptcp_subflow_tcp_sock(subflow); - int how = RCV_SHUTDOWN | SEND_SHUTDOWN; + for (i = 0; i < MPTCP_RM_IDS_MAX && rm_ids[i] != MAX_ADDR_ID; i++) { + list_for_each_entry_safe(subflow, tmp, &msk->conn_list, node) { + struct sock *ssk = mptcp_subflow_tcp_sock(subflow); + int how = RCV_SHUTDOWN | SEND_SHUTDOWN; - if (rm_id != subflow->local_id) - continue; + if (rm_ids[i] != subflow->local_id) + continue; - spin_unlock_bh(&msk->pm.lock); - mptcp_subflow_shutdown(sk, ssk, how); - mptcp_close_ssk(sk, ssk, subflow); - spin_lock_bh(&msk->pm.lock); + pr_debug(" -> subflow rm_ids[%d]=%u", i, rm_ids[i]); + spin_unlock_bh(&msk->pm.lock); + mptcp_subflow_shutdown(sk, ssk, how); + mptcp_close_ssk(sk, ssk, subflow); + spin_lock_bh(&msk->pm.lock); - msk->pm.local_addr_used--; - msk->pm.subflows--; + msk->pm.local_addr_used--; + msk->pm.subflows--; - __MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RMSUBFLOW); + __MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RMSUBFLOW); - break; + break; + } } } @@ -1105,9 +1111,13 @@ static int mptcp_nl_remove_subflow_and_signal_addr(struct net *net, { struct mptcp_sock *msk; long s_slot = 0, s_num = 0; + u8 ids[MPTCP_RM_IDS_MAX]; pr_debug("remove_id=%d", addr->id); + memset(ids, MAX_ADDR_ID, MPTCP_RM_IDS_MAX); + ids[0] = addr->id; + while ((msk = mptcp_token_iter_next(net, &s_slot, &s_num)) != NULL) { struct sock *sk = (struct sock *)msk; bool remove_subflow; @@ -1121,7 +1131,7 @@ static int mptcp_nl_remove_subflow_and_signal_addr(struct net *net, remove_subflow = lookup_subflow_by_saddr(&msk->conn_list, addr); mptcp_pm_remove_anno_addr(msk, addr, remove_subflow); if (remove_subflow) - mptcp_pm_remove_subflow(msk, addr->id); + mptcp_pm_remove_subflow(msk, ids); release_sock(sk); next: diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index d4209ee9f913..eba09050dace 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -688,7 +688,7 @@ int mptcp_pm_announce_addr(struct mptcp_sock *msk, const struct mptcp_addr_info *addr, bool echo, bool port); int mptcp_pm_remove_addr(struct mptcp_sock *msk, u8 local_ids[]); -int mptcp_pm_remove_subflow(struct mptcp_sock *msk, u8 local_id); +int mptcp_pm_remove_subflow(struct mptcp_sock *msk, u8 local_ids[]); void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk, const struct sock *ssk, gfp_t gfp); @@ -743,7 +743,7 @@ int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc); void __init mptcp_pm_nl_init(void); void mptcp_pm_nl_data_init(struct mptcp_sock *msk); void mptcp_pm_nl_work(struct mptcp_sock *msk); -void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, u8 rm_id); +void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, u8 rm_ids[]); int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct sock_common *skc); unsigned int mptcp_pm_get_add_addr_signal_max(struct mptcp_sock *msk); unsigned int mptcp_pm_get_add_addr_accept_max(struct mptcp_sock *msk); From patchwork Fri Feb 5 14:24:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1436671 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=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=noOhqXJv; 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 4DXHkY0wByz9sVm for ; Sat, 6 Feb 2021 01:25:08 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E90A9100EA2DB; Fri, 5 Feb 2021 06:25:06 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::62b; helo=mail-pl1-x62b.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) (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 CF9AF100ED48A for ; Fri, 5 Feb 2021 06:25:03 -0800 (PST) Received: by mail-pl1-x62b.google.com with SMTP id u11so3611525plg.13 for ; Fri, 05 Feb 2021 06:25:03 -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=CDmt7u9wQP/Ztbw6jgkoVAmpQPJCO0yOdx39ANZwP7o=; b=noOhqXJvJ+njXKS6XPFfLKVFnfXJWVNmwku+sCuRxTe6FlVQKRsoSbZAxcj4ry9Os3 KTltBNYqQzuXix09JX7pp0/lMKgaREoVEQpa0ByH/G6EkH0Vrhc9BWdhcZPoPdRuGTiX a/dnqu3dlPmBjPhdQk2CIROmzURkFP1I4U76DI0nLeGCcgelwpzBz0sXSi2kQlFhvYcN lSch35JtfTDeSp+u1uRx+jmuC50JqNEVj/3op3zgWOm+EVZ27/TWFmm3lJ0awfbvFbLN lI7+VdG8RPMfq3XjCEUHbIIer1o8TY2rEh/l5/USgpwP1zf4GfodWzgZP0VHfekopANp 38Dw== 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=CDmt7u9wQP/Ztbw6jgkoVAmpQPJCO0yOdx39ANZwP7o=; b=krgJ4SgUXENEWOItJVCBCaAiJnu4cJ1/h1TRFKkKp4YnQI5E+2AuBHyzWfeUrNrLY2 WzxxjAXs6YPZ/4UENi0zu/N/yevEuOokqEpdS5bwVE3p+588u9LMUWF/9xyJlTOGrpUO WWBE/oquYsx08j5q/c143hMNv4LltNCrkAoUE7A9hO0S/UEuZF7ho325m+zJcvZGBpFU F7AbVziNcy4d+OZJ08LDowpJb1VhwKKKk3kVK53n31A3juGqG5Wr0CyhnXPLzOskAXG5 iAqPRdZirdshg9A4+ix8dEEsM5tPFqSC/4hJX/b6A3E8kkpmqZGvKVWscj4vGt2md1EM kY2Q== X-Gm-Message-State: AOAM5324SvmrcHB0GSeAB8EIIkL9DJrHDvDhOD0WFU8PEoZmjbV6b7GX AVXCjCUY9Yjx6OcE975tUsW2vmMWVBZ8xw== X-Google-Smtp-Source: ABdhPJw/iUBrHF27EcySGP0TcMJ/3SoMI7zGzIIYaZFTmDcEsapbicwOLENv2PJC+xQTfFt2pjeb7w== X-Received: by 2002:a17:90a:e00f:: with SMTP id u15mr4487114pjy.3.1612535102802; Fri, 05 Feb 2021 06:25:02 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id s18sm7292635pfm.129.2021.02.05.06.25.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:25:02 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Fri, 5 Feb 2021 22:24:31 +0800 Message-Id: <2e1e50023c1ca80e9737681fad83623f0be05a6f.1612534634.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <4150034f6f320da03b19c30b91798ad3fc3bb6ba.1612534634.git.geliangtang@gmail.com> References: <7d72dee8595a08b314a5e97300b2d839058c3596.1612534634.git.geliangtang@gmail.com> <6aa788764dc5d769523835ebdec053c8ee391eec.1612534634.git.geliangtang@gmail.com> <242379f38b7038fc14cd0397449bd782237639af.1612534634.git.geliangtang@gmail.com> <3cf42c12a72c462884a26d6c5fe6721c66070fc7.1612534634.git.geliangtang@gmail.com> <4150034f6f320da03b19c30b91798ad3fc3bb6ba.1612534634.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: LXFWY3QVXWLBKZA7R52IJHKVX2CBN457 X-Message-ID-Hash: LXFWY3QVXWLBKZA7R52IJHKVX2CBN457 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 v4 mptcp-next 7/9] mptcp: remove multi addresses and subflows in PM List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch implemented the function to remove a list of addresses and subflows, named mptcp_nl_remove_addrs_list, which had a input parameter rm_list as the removing addresses list. In mptcp_nl_remove_addrs_list, traverse all the existing msk sockets to invoke mptcp_pm_remove_addrs_and_subflows to remove a list of addresses for each msk socket. In mptcp_pm_remove_addrs_and_subflows, traverse all the addresses in the removing addresses list, to find whether this address is in the conn_list or anno_list. If it is, put the address ID into the removing address ids array, and pass the array to mptcp_pm_remove_addr or mptcp_pm_remove_subflow. Signed-off-by: Geliang Tang --- net/mptcp/pm_netlink.c | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index b4d6f7b56a65..392aa4dc0834 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1213,6 +1213,58 @@ static int mptcp_nl_cmd_del_addr(struct sk_buff *skb, struct genl_info *info) return ret; } +static void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk, + struct list_head *rm_list) +{ + struct mptcp_pm_addr_entry *entry; + u8 subflow_ids[MPTCP_RM_IDS_MAX]; + u8 address_ids[MPTCP_RM_IDS_MAX]; + int i = 0, j = 0; + + memset(subflow_ids, MAX_ADDR_ID, MPTCP_RM_IDS_MAX); + memset(address_ids, MAX_ADDR_ID, MPTCP_RM_IDS_MAX); + + list_for_each_entry(entry, rm_list, list) { + if (lookup_subflow_by_saddr(&msk->conn_list, &entry->addr) && i < MPTCP_RM_IDS_MAX) + subflow_ids[i++] = entry->addr.id; + else if (remove_anno_list_by_saddr(msk, &entry->addr) && j < MPTCP_RM_IDS_MAX) + address_ids[j++] = entry->addr.id; + } + + if (mptcp_get_rm_ids_nr(subflow_ids)) { + spin_lock_bh(&msk->pm.lock); + mptcp_pm_remove_addr(msk, subflow_ids); + spin_unlock_bh(&msk->pm.lock); + mptcp_pm_remove_subflow(msk, subflow_ids); + } + if (mptcp_get_rm_ids_nr(address_ids)) { + spin_lock_bh(&msk->pm.lock); + mptcp_pm_remove_addr(msk, address_ids); + spin_unlock_bh(&msk->pm.lock); + } +} + +static void mptcp_nl_remove_addrs_list(struct net *net, + struct list_head *rm_list) +{ + long s_slot = 0, s_num = 0; + struct mptcp_sock *msk; + + if (list_empty(rm_list)) + return; + + while ((msk = mptcp_token_iter_next(net, &s_slot, &s_num)) != NULL) { + struct sock *sk = (struct sock *)msk; + + lock_sock(sk); + mptcp_pm_remove_addrs_and_subflows(msk, rm_list); + release_sock(sk); + + sock_put(sk); + cond_resched(); + } +} + static void __flush_addrs(struct net *net, struct list_head *list) { while (!list_empty(list)) { From patchwork Fri Feb 5 14:24:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1436672 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=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=jtoTRluB; 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 4DXHkZ2hdZz9sVm for ; Sat, 6 Feb 2021 01:25:10 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 004F6100EA101; Fri, 5 Feb 2021 06:25:09 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::432; helo=mail-pf1-x432.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) (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 22185100EA2DF for ; Fri, 5 Feb 2021 06:25:07 -0800 (PST) Received: by mail-pf1-x432.google.com with SMTP id w14so4433364pfi.2 for ; Fri, 05 Feb 2021 06:25:07 -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=nPnyFmqEI0YN4Iph6oY9rXVB7dAv17G1RcXVAPpFSV4=; b=jtoTRluBWA13JeBgpJEQzIehQi9zCsxMHSaDU4fp6zawUmNFbutjGUscZ8jHgYCNaj VwQWoSYvgexQIUBVzNL3ezflmdzDukVad9EMXc0c6/f5kaKEg7f3OrY1SgrSiw+fihFQ lWIJx7IlAccucGbH5KTgUsXT7LafM9KPiSXj1LhFybqkLrv0vEFPU/l/L2prsVwynZ8+ JiTyjTWiCH97A4i7p4jLNzTpvhKbeyx3jpN7TP0096+ItW2PnaLavmfeCZ2/kEmhHCEx azzT2sDXAWiVcdFDEgYMKMTLQ6RsPzuEJ3ACi3/0OdNTEauwPcUa2eSRwzHI1vGzFaeQ fzGw== 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=nPnyFmqEI0YN4Iph6oY9rXVB7dAv17G1RcXVAPpFSV4=; b=kwKUqpGV8zCfmiRsr11eLC7tENjNU1Iy4B0SEiGgvQk/rvxGRKYeHKIGjR1dzlD6LO vAFsQF+i/x/z4m0k5h1vwP4JPDVTe9lNYZ7g04Y9T8mQCXfWd334pPD1K457Wmdahniw FVqXqKU2D2L1RzC6/lMGkqgokT+E6/huHyTfYvL1vOuMJb8d1S0GRIcqa8Cz0Zrc7rYn ZHcxZoegTBgtydnH+SI0Wrn5QW87kPo07rF4iXDBtEl2qCs+hRnO66/PPfe0ecjhlXFW 44LLtySepkmB05HOqPoJX5OM2KBqJiJ4Dgv0+zr7Xknien00DO9FOEm4dG1v+5j0ddqK Io9Q== X-Gm-Message-State: AOAM532x5kPhU5ZN5Jx3aHk3yGokjg9j3o14QZKNX0UVdF4nYtyu3ZZi TuEEKmL577sa5TVzFM56U0tNiga7f9YKEw== X-Google-Smtp-Source: ABdhPJyD2tf4/v6x8OtQzeJz5XTulrrA6S/FXF8Ec91OgvFF9bo3RRJsnt2nW85gQ950ZvgJIXopFw== X-Received: by 2002:a63:7f09:: with SMTP id a9mr4537775pgd.63.1612535106402; Fri, 05 Feb 2021 06:25:06 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id e185sm10110448pfe.117.2021.02.05.06.25.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:25:05 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Fri, 5 Feb 2021 22:24:32 +0800 Message-Id: X-Mailer: git-send-email 2.29.2 In-Reply-To: <2e1e50023c1ca80e9737681fad83623f0be05a6f.1612534634.git.geliangtang@gmail.com> References: <7d72dee8595a08b314a5e97300b2d839058c3596.1612534634.git.geliangtang@gmail.com> <6aa788764dc5d769523835ebdec053c8ee391eec.1612534634.git.geliangtang@gmail.com> <242379f38b7038fc14cd0397449bd782237639af.1612534634.git.geliangtang@gmail.com> <3cf42c12a72c462884a26d6c5fe6721c66070fc7.1612534634.git.geliangtang@gmail.com> <4150034f6f320da03b19c30b91798ad3fc3bb6ba.1612534634.git.geliangtang@gmail.com> <2e1e50023c1ca80e9737681fad83623f0be05a6f.1612534634.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: QLS74NXZBRV4GUEW3ZYTXY5VR7CMDO5R X-Message-ID-Hash: QLS74NXZBRV4GUEW3ZYTXY5VR7CMDO5R 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 v4 mptcp-next 8/9] mptcp: remove a list of addrs when flushing List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch invoked mptcp_nl_remove_addrs_list to remove a list of addresses when the netlink flushes addresses, instead of using mptcp_nl_remove_subflow_and_signal_addr to remove them one by one. And dropped the unused parameter net in __flush_addrs too. Signed-off-by: Geliang Tang --- net/mptcp/pm_netlink.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 392aa4dc0834..d4810c31bc4d 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1265,14 +1265,13 @@ static void mptcp_nl_remove_addrs_list(struct net *net, } } -static void __flush_addrs(struct net *net, struct list_head *list) +static void __flush_addrs(struct list_head *list) { while (!list_empty(list)) { struct mptcp_pm_addr_entry *cur; cur = list_entry(list->next, struct mptcp_pm_addr_entry, list); - mptcp_nl_remove_subflow_and_signal_addr(net, &cur->addr); list_del_rcu(&cur->list); mptcp_pm_free_addr_entry(cur); } @@ -1297,7 +1296,9 @@ static int mptcp_nl_cmd_flush_addrs(struct sk_buff *skb, struct genl_info *info) pernet->next_id = 1; bitmap_zero(pernet->id_bitmap, MAX_ADDR_ID + 1); spin_unlock_bh(&pernet->lock); - __flush_addrs(sock_net(skb->sk), &free_list); + + mptcp_nl_remove_addrs_list(sock_net(skb->sk), &free_list); + __flush_addrs(&free_list); return 0; } @@ -1894,7 +1895,7 @@ static void __net_exit pm_nl_exit_net(struct list_head *net_list) /* net is removed from namespace list, can't race with * other modifiers */ - __flush_addrs(net, &pernet->local_addr_list); + __flush_addrs(&pernet->local_addr_list); } } From patchwork Fri Feb 5 14:24:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1436673 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=E5iB8ZTP; 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 4DXHkf59zXz9sVm for ; Sat, 6 Feb 2021 01:25:14 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 0C818100EA104; Fri, 5 Feb 2021 06:25:13 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::634; helo=mail-pl1-x634.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) (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 2E87B100EA102 for ; Fri, 5 Feb 2021 06:25:11 -0800 (PST) Received: by mail-pl1-x634.google.com with SMTP id s15so3623058plr.9 for ; Fri, 05 Feb 2021 06:25:11 -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=eZVzK10IphRWkrtSCxh4XbwE4wry0HTscI+TzVQ+utg=; b=E5iB8ZTPWkAOGF0BdcPvjQ83QatIkgLPD7ELSv5E5wLfq7UBplSl0mB1K3qWUJ7X6B QdNi0tPTW4TiritEjBxsKLBK8EY3rINTSlGBPYPQw1d0mAtwe1CX6HYSfAR6ZS35ERTe qfBaaOwx4w1HOipBhax4Fuyq/Tc8Z247e01eN+OODqusZ9RfyWnqJo/uY2WqlaLh+MZ+ rwbZ37edHgqTZDglGbdsKNTE6E5QBwQVnaj5ehtO1e41qPh/Z4e2ID3QIbsE/thCvKmo Kl1bCTgqDFVRv91tAYmKxo30KbB/UojLKZBtIvTcQQP2Ag5s89Z6HCd332OLRJfu+3bl tdLA== 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=eZVzK10IphRWkrtSCxh4XbwE4wry0HTscI+TzVQ+utg=; b=EWuvGkLdiRoBBZIU9i0405LbB9Iu8bYh0tAzavC9MzcJdPThFJ7X3YUjQAd7iNbm0p uc54gKmUgdWBU1chZ5Zh4XD2C8AQM32CnV9xbjY6wNYUMDrqH7R+94zURwnJ11FFMFUN x7tY/heeKcbr8TawlgGWQjWcIz9Yk1+cmKbz9ZYJKW1OKqrq6kYqPkCOr0SIboR9QMW1 6fzBtCiO7h4a9guNNoO5QtNF0Y+Fo8gcnmkebbpUXOe6XGiwZ7XJrwKusPXVEL3iDr4s DVEcTfNCT31iHTAdXSyZBMgIDPSFwXkYItkeL46om+stiLlgpXfETk9LhGxyPAerrHvo epOw== X-Gm-Message-State: AOAM531URRhbujmZ2kfzbxcSs3fA1TPK7CrOsPSukTGmRddeCp5MfVDH R5HGBT3wTMwlD0+PrBisuUt6GxCL+UuYqw== X-Google-Smtp-Source: ABdhPJz7/Ha4N41T46O1Di7BOfFMPwL7Mki/26dJIibTFD1EwlxxCyMiTJk7y1g4ruUhrCO9fIrCSA== X-Received: by 2002:a17:902:b94b:b029:e0:1e:da58 with SMTP id h11-20020a170902b94bb02900e0001eda58mr4409251pls.55.1612535110408; Fri, 05 Feb 2021 06:25:10 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id 83sm9620067pfu.134.2021.02.05.06.25.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:25:09 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Fri, 5 Feb 2021 22:24:33 +0800 Message-Id: <6d48a2fc27de54fd374a9928b640a64c8e377d5c.1612534634.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: References: <7d72dee8595a08b314a5e97300b2d839058c3596.1612534634.git.geliangtang@gmail.com> <6aa788764dc5d769523835ebdec053c8ee391eec.1612534634.git.geliangtang@gmail.com> <242379f38b7038fc14cd0397449bd782237639af.1612534634.git.geliangtang@gmail.com> <3cf42c12a72c462884a26d6c5fe6721c66070fc7.1612534634.git.geliangtang@gmail.com> <4150034f6f320da03b19c30b91798ad3fc3bb6ba.1612534634.git.geliangtang@gmail.com> <2e1e50023c1ca80e9737681fad83623f0be05a6f.1612534634.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: D6QKLQB2E4GCTQE2O34D7USJ2UK7YXDS X-Message-ID-Hash: D6QKLQB2E4GCTQE2O34D7USJ2UK7YXDS 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 v4 mptcp-next 9/9] selftests: mptcp: add testcases for removing addrs List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added the testcases for removing a list of addresses. Used the netlink to flush the addresses in the testcases. Signed-off-by: Geliang Tang --- .../testing/selftests/net/mptcp/mptcp_join.sh | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh index 9f693a643313..05f26662e872 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -915,6 +915,29 @@ remove_tests() chk_join_nr "flush subflows and signal" 3 3 3 chk_add_nr 1 1 chk_rm_nr 2 2 + + # subflows flush + reset + ip netns exec $ns1 ./pm_nl_ctl limits 3 3 + ip netns exec $ns2 ./pm_nl_ctl limits 3 3 + ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow id 150 + ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow + ip netns exec $ns2 ./pm_nl_ctl add 10.0.4.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow + chk_join_nr "flush subflows" 3 3 3 + chk_rm_nr 3 3 + + # addresses flush + reset + ip netns exec $ns1 ./pm_nl_ctl limits 3 3 + ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal id 250 + ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal + ip netns exec $ns1 ./pm_nl_ctl add 10.0.4.1 flags signal + ip netns exec $ns2 ./pm_nl_ctl limits 3 3 + run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow + chk_join_nr "flush addresses" 3 3 3 + chk_add_nr 3 3 + chk_rm_nr 0 0 } add_tests()