From patchwork Thu Oct 29 06:39:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1389851 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; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=b8smQHfx; 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 4CMG5B3fqHz9sSG for ; Thu, 29 Oct 2020 17:39:41 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 452A816389924; Wed, 28 Oct 2020 23:39:39 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::532; helo=mail-pg1-x532.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) (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 A6E5716393073 for ; Wed, 28 Oct 2020 23:39:37 -0700 (PDT) Received: by mail-pg1-x532.google.com with SMTP id r186so1555654pgr.0 for ; Wed, 28 Oct 2020 23:39:37 -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=D5Gf3Hq0XCkhM88zHbUMaXLH2IDmvFLqbRy9ursk3qQ=; b=b8smQHfxlZj+uNigvFz2Zun7BvPI6hxol+uhC1rxFjvaGfA23/VsGqWWdfa7V9Nmb/ aE72uSCKj9deTjxEGeeItMt6rht1RnaPVDIbwtbi04Wbxcnxq70UkSLLtrsx91AYZWbO gdhTJ9v8sB74PBArsDAnx7LaBuqPolfHSoxA/oKlyrFCxh5Z5QEdtZIy7M2vYx+sJXh/ qNhBhrX/Rq0IWmwzX78tzvrpmqSZ1adHEPrpVlcV8V4cL/xUY5G6IGoWwBex5/mxkA9w LaTK/xSYpH+yHm2+zDub8Scusby5MUsm0sqg5wj0FZ5a+/JkGHyiV+ReycWOiS9VHO0D gjJA== 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=D5Gf3Hq0XCkhM88zHbUMaXLH2IDmvFLqbRy9ursk3qQ=; b=lXqvqMepEK3UWiKA0aMRlMUinQmEFRJCtjQlpdwtVfvkoZfN7XrZhIiJLDbmCjxGJh L9di0hgJnHpoI6uaGzfznJ4KRqvGXhW1LAvO6svbWY/GlfduRw+6mAcGHv1i0PV3V+b8 I4SDIb89hPDIC0IKmH9AKuodexXSn497QC1k7NBXyMt+cFSnGaAqZucwU9bEeQqJZDp0 0ikoqRWuU1v9npV7a1ssMaei80fp5rY8tIMU4jRhltaZs2KAacXsgP5MzEErGL/3KQkw jOqxYaMGxElZ2Zif7YUpzFEkYvq06XLOIrsLGm4D93RdKKPvrzwjzfe0nC8w42QzG2PZ AAoA== X-Gm-Message-State: AOAM533oqtkWcj6orj3oyNcLABc/7j4M65kbz3rJDT7abMe/5ZzerrzB Karq/f5Uz8nTIK87bwg4ZkhJ3+quXdW5/Q== X-Google-Smtp-Source: ABdhPJzzrB+ZWgpjA4htyGcnFAreYtDpDaDbs4aCcuSHAeLPQBE8md+5+RxBTS/FlJmE1b3DVWgbxA== X-Received: by 2002:a65:5809:: with SMTP id g9mr2850207pgr.35.1603953576878; Wed, 28 Oct 2020 23:39:36 -0700 (PDT) Received: from localhost ([2400:8800:300:11c:18a:42ae:244a:91a5]) by smtp.gmail.com with ESMTPSA id i17sm1589052pfa.183.2020.10.28.23.39.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 23:39:36 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 29 Oct 2020 14:39:21 +0800 Message-Id: X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Message-ID-Hash: IEOMMG7DNNFVP5DU2KGH2O25SFIHQDD7 X-Message-ID-Hash: IEOMMG7DNNFVP5DU2KGH2O25SFIHQDD7 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 mptcp-next 1/8] mptcp: add ADD_ADDR port support for writing options List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added ADD_ADDR port support for writing options. In rfc8684, the length of ADD_ADDR suboption with IPv4 address and port is 18 octets: 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +---------------+---------------+-------+-------+---------------+ | Kind | Length |Subtype|(rsv)|E| Address ID | +---------------+---------------+-------+-------+---------------+ | Address (IPv4: 4 octets / IPv6: 16 octets) | +-------------------------------+-------------------------------+ | Port (2 octets, optional) | | +-------------------------------+ | | Truncated HMAC (8 octets, if E=0) | | +-------------------------------+ | | +-------------------------------+ But mptcp_write_options is 32-bit aligned, so we need to pad it to 20 octets. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 1 + net/mptcp/options.c | 64 +++++++++++++++++++++++++++++++++++++------- net/mptcp/protocol.h | 10 +++---- 3 files changed, 60 insertions(+), 15 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index b6cf07143a8a..bb8b7b931490 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -46,6 +46,7 @@ struct mptcp_out_options { #endif }; u8 addr_id; + __be16 port; u64 ahmac; u8 rm_id; u8 join_id; diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 248e3930c0cb..7c928286c0da 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -1067,39 +1067,83 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, mp_capable_done: if (OPTION_MPTCP_ADD_ADDR & opts->suboptions) { + int add_len, echo_len; + + if (!opts->port) { + add_len = TCPOLEN_MPTCP_ADD_ADDR; + echo_len = TCPOLEN_MPTCP_ADD_ADDR_BASE; + } else { + add_len = TCPOLEN_MPTCP_ADD_ADDR_PORT; + echo_len = TCPOLEN_MPTCP_ADD_ADDR_BASE_PORT; + } + if (opts->ahmac) *ptr++ = mptcp_option(MPTCPOPT_ADD_ADDR, - TCPOLEN_MPTCP_ADD_ADDR, 0, + add_len, 0, opts->addr_id); else *ptr++ = mptcp_option(MPTCPOPT_ADD_ADDR, - TCPOLEN_MPTCP_ADD_ADDR_BASE, + echo_len, MPTCP_ADDR_ECHO, opts->addr_id); memcpy((u8 *)ptr, (u8 *)&opts->addr.s_addr, 4); ptr += 1; - if (opts->ahmac) { - put_unaligned_be64(opts->ahmac, ptr); - ptr += 2; + + if (!opts->port) { + if (opts->ahmac) { + put_unaligned_be64(opts->ahmac, ptr); + ptr += 2; + } + } else { + if (opts->ahmac) { + put_unaligned_be32(opts->port << 16 | opts->ahmac >> 48, ptr); + ptr += 1; + put_unaligned_be64(opts->ahmac << 16 | TCPOPT_NOP, ptr); + ptr += 2; + } else { + put_unaligned_be16(opts->port, ptr); + ptr += 1; + } } } #if IS_ENABLED(CONFIG_MPTCP_IPV6) if (OPTION_MPTCP_ADD_ADDR6 & opts->suboptions) { + int add_len, echo_len; + + if (!opts->port) { + add_len = TCPOLEN_MPTCP_ADD_ADDR6; + echo_len = TCPOLEN_MPTCP_ADD_ADDR6_BASE; + } else { + add_len = TCPOLEN_MPTCP_ADD_ADDR6_PORT; + echo_len = TCPOLEN_MPTCP_ADD_ADDR6_BASE_PORT; + } if (opts->ahmac) *ptr++ = mptcp_option(MPTCPOPT_ADD_ADDR, - TCPOLEN_MPTCP_ADD_ADDR6, 0, + add_len, 0, opts->addr_id); else *ptr++ = mptcp_option(MPTCPOPT_ADD_ADDR, - TCPOLEN_MPTCP_ADD_ADDR6_BASE, + echo_len, MPTCP_ADDR_ECHO, opts->addr_id); memcpy((u8 *)ptr, opts->addr6.s6_addr, 16); ptr += 4; - if (opts->ahmac) { - put_unaligned_be64(opts->ahmac, ptr); - ptr += 2; + if (!opts->port) { + if (opts->ahmac) { + put_unaligned_be64(opts->ahmac, ptr); + ptr += 2; + } + } else { + if (opts->ahmac) { + put_unaligned_be32(opts->port << 16 | opts->ahmac >> 48, ptr); + ptr += 1; + put_unaligned_be64(opts->ahmac << 16 | TCPOPT_NOP, ptr); + ptr += 2; + } else { + put_unaligned_be16(opts->port, ptr); + ptr += 1; + } } } #endif diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index d29c6a4749eb..f303c46bcc29 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -49,14 +49,14 @@ #define TCPOLEN_MPTCP_DSS_MAP64 14 #define TCPOLEN_MPTCP_DSS_CHECKSUM 2 #define TCPOLEN_MPTCP_ADD_ADDR 16 -#define TCPOLEN_MPTCP_ADD_ADDR_PORT 18 +#define TCPOLEN_MPTCP_ADD_ADDR_PORT 20 #define TCPOLEN_MPTCP_ADD_ADDR_BASE 8 -#define TCPOLEN_MPTCP_ADD_ADDR_BASE_PORT 10 +#define TCPOLEN_MPTCP_ADD_ADDR_BASE_PORT 12 #define TCPOLEN_MPTCP_ADD_ADDR6 28 -#define TCPOLEN_MPTCP_ADD_ADDR6_PORT 30 +#define TCPOLEN_MPTCP_ADD_ADDR6_PORT 32 #define TCPOLEN_MPTCP_ADD_ADDR6_BASE 20 -#define TCPOLEN_MPTCP_ADD_ADDR6_BASE_PORT 22 -#define TCPOLEN_MPTCP_PORT_LEN 2 +#define TCPOLEN_MPTCP_ADD_ADDR6_BASE_PORT 24 +#define TCPOLEN_MPTCP_PORT_LEN 4 #define TCPOLEN_MPTCP_RM_ADDR_BASE 4 /* MPTCP MP_JOIN flags */ From patchwork Thu Oct 29 06:39:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1389852 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; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=jc77Ymeo; 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 4CMG5F0xChz9sPB for ; Thu, 29 Oct 2020 17:39:45 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 5501016389926; Wed, 28 Oct 2020 23:39:43 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::429; helo=mail-pf1-x429.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) (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 93B7E16389921 for ; Wed, 28 Oct 2020 23:39:41 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id e15so1523474pfh.6 for ; Wed, 28 Oct 2020 23:39:41 -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=xii8XaxZra9/eQPWDfJe9OIUKIzKvNe54TGl9dsb5X0=; b=jc77YmeozuPQl6L3+TT+l+02BWoT6z3Uq0D7dGQq0v4sCkE8jX9t/eVI7TP6MX10uR 8ox0TdJ6n+q18hGVZXtxt8y2lzkLsoIqOrdcj/BiVroHd9jwX3MVooGGYDopR6YzDIrX z/jtOTcqztrCrEn9iNPQNLpIpU/hK8lMatgQrfZPK6LlcoZK7s8AJ9ksFpp33+KbJgcv zGY1X0by/jJKxeyA0vH1sChleMKBpFew0UmlKkOuyHqxOqfFlqcEiiQ2pEHiEbUEsn5F D8DeZvoV9HdJ3h8pe8fgKYGCTFeQ+GIwP7LkjNMYEqpZV6kKpzjwUMEC7K0SFSd9SJhG ngIA== 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=xii8XaxZra9/eQPWDfJe9OIUKIzKvNe54TGl9dsb5X0=; b=G7oKTTCKcUlAKuId8YsAyOKTHk06gcLuPQ+BRAJ9J8hZu6YNNMR70Beb3nFrc1mCcW 7WYktXidTompp/cueQ10B0y8IxMGBhorg3e3CqS6eeCgciimUucDgaSqpbzYTV2PG2hd ZHnn9B/LD2JGsAj8AO6qFy3paXIcDV02kvCwJrZReShRg1ZxV2rkTvq9t23mlSiDTp8p st/VkB4BgtwNCmlGtzq7TI6Mm56UmDH7sIrp07HZUFOE8qQc98w+ci3bXN/ofKJpytDa UYjcGtcwzZPRyh9qbmn0k/kC80pSMFvMXOvC4gMcavT8rNV2UtcbhiiyCoOeh3mHRScs 1+pA== X-Gm-Message-State: AOAM530vWHXM2QIEp3/tpIEAIkL10SAqyangVjWJ3NTneEttBflNYDYq 6iAjEA7BoOHxF5+yXmsSimH8CRMm7THd9A== X-Google-Smtp-Source: ABdhPJxR2Vawe5eRpOVu7MuXSRRy/H3L7HxhgYoxg/VNpweT7Xhcoa/c5QhghxrVrUYGNHIknGlmFw== X-Received: by 2002:a17:90a:bb0e:: with SMTP id u14mr2782217pjr.112.1603953580559; Wed, 28 Oct 2020 23:39:40 -0700 (PDT) Received: from localhost ([2400:8800:300:11c:18a:42ae:244a:91a5]) by smtp.gmail.com with ESMTPSA id e5sm1679732pfl.216.2020.10.28.23.39.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 23:39:39 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 29 Oct 2020 14:39:22 +0800 Message-Id: <28c900686b7ce170435daec8d9cd71527636a8af.1603952836.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Message-ID-Hash: 5NXTBIVQKE3XCG2WPOGNP2EFABFYQMZC X-Message-ID-Hash: 5NXTBIVQKE3XCG2WPOGNP2EFABFYQMZC 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 mptcp-next 2/8] mptcp: add the outgoing ADD_ADDR port support List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added a new add_addr_signal type named MPTCP_ADD_ADDR_PORT, to identify this is an address with port. It also added a new argument 'port' for both mptcp_add_addr_len and mptcp_pm_add_addr_signal. Signed-off-by: Geliang Tang --- net/mptcp/options.c | 10 +++++++--- net/mptcp/pm.c | 5 +++-- net/mptcp/protocol.h | 17 +++++++++++++++-- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 7c928286c0da..24117c45f4e1 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -586,6 +586,7 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff * unsigned int opt_size = *size; struct mptcp_addr_info saddr; bool echo; + bool port; int len; if (mptcp_pm_should_add_signal_ipv6(msk) && @@ -597,10 +598,10 @@ 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))) + !(mptcp_pm_add_addr_signal(msk, remaining, &saddr, &echo, &port))) return false; - len = mptcp_add_addr_len(saddr.family, echo); + len = mptcp_add_addr_len(saddr.family, echo, port); if (remaining < len) return false; @@ -608,6 +609,8 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff * if (drop_other_suboptions) *size -= opt_size; opts->addr_id = saddr.id; + if (port) + opts->port = saddr.port; if (saddr.family == AF_INET) { opts->suboptions |= OPTION_MPTCP_ADD_ADDR; opts->addr = saddr.addr; @@ -630,7 +633,8 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff * } } #endif - pr_debug("addr_id=%d, ahmac=%llu, echo=%d", opts->addr_id, opts->ahmac, echo); + pr_debug("addr_id=%d, ahmac=%llu, echo=%d, port=%d", + opts->addr_id, opts->ahmac, echo, ntohs(opts->port)); return true; } diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 75c5040e8d5d..6d4be02681fa 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -188,7 +188,7 @@ void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, u8 rm_id) /* path manager helpers */ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, unsigned int remaining, - struct mptcp_addr_info *saddr, bool *echo) + struct mptcp_addr_info *saddr, bool *echo, bool *port) { int ret = false; @@ -199,8 +199,9 @@ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, unsigned int remaining, goto out_unlock; *echo = mptcp_pm_should_add_signal_echo(msk); + *port = mptcp_pm_should_add_signal_port(msk); - if (remaining < mptcp_add_addr_len(msk->pm.local.family, *echo)) + if (remaining < mptcp_add_addr_len(msk->pm.local.family, *echo, *port)) goto out_unlock; *saddr = msk->pm.local; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index f303c46bcc29..2a5db34f63bf 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -171,6 +171,7 @@ enum mptcp_add_addr_status { MPTCP_ADD_ADDR_SIGNAL, MPTCP_ADD_ADDR_ECHO, MPTCP_ADD_ADDR_IPV6, + MPTCP_ADD_ADDR_PORT, }; struct mptcp_pm_data { @@ -539,13 +540,25 @@ static inline bool mptcp_pm_should_add_signal_ipv6(struct mptcp_sock *msk) return READ_ONCE(msk->pm.add_addr_signal) & BIT(MPTCP_ADD_ADDR_IPV6); } +static inline bool mptcp_pm_should_add_signal_port(struct mptcp_sock *msk) +{ + return READ_ONCE(msk->pm.add_addr_signal) & BIT(MPTCP_ADD_ADDR_PORT); +} + static inline bool mptcp_pm_should_rm_signal(struct mptcp_sock *msk) { return READ_ONCE(msk->pm.rm_addr_signal); } -static inline unsigned int mptcp_add_addr_len(int family, bool echo) +static inline unsigned int mptcp_add_addr_len(int family, bool echo, bool port) { + if (port) { + if (family == AF_INET) + return echo ? TCPOLEN_MPTCP_ADD_ADDR_BASE_PORT + : TCPOLEN_MPTCP_ADD_ADDR_PORT; + return echo ? TCPOLEN_MPTCP_ADD_ADDR6_BASE_PORT : TCPOLEN_MPTCP_ADD_ADDR6_PORT; + } + if (family == AF_INET) return echo ? TCPOLEN_MPTCP_ADD_ADDR_BASE : TCPOLEN_MPTCP_ADD_ADDR; @@ -553,7 +566,7 @@ static inline unsigned int mptcp_add_addr_len(int family, bool echo) } bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk, unsigned int remaining, - struct mptcp_addr_info *saddr, bool *echo); + 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); int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc); From patchwork Thu Oct 29 06:39:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1389853 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; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=Fc3PeI1/; 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 4CMG5K1LVwz9sPB for ; Thu, 29 Oct 2020 17:39:49 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 679F416389928; Wed, 28 Oct 2020 23:39:47 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::444; helo=mail-pf1-x444.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) (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 4AB1616389928 for ; Wed, 28 Oct 2020 23:39:45 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id c20so1514691pfr.8 for ; Wed, 28 Oct 2020 23:39:45 -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=kLtubyT0YC7anb4nWEJp5DCgo8UC7mWHdRD8Xf9P5H4=; b=Fc3PeI1/xg51bBBuG3dbHJPwm+K37m5knxkPOss5qCtx/pIUEjAi0/ZObb5ugB+S/l Ds1moUlndlfQ1yxahRtcH6nbsjZ6IjzNsALshfBHJGMKwE/J90/BebluBXWy47pNQnrm 2fjLrI8RtirX/J7L4nreXZsseVy0GbODlWXKAXsZBE/eE8BEkJojlxwbt7Dgk9bz36rE OjkK/MbOvLK5J9/xqSilNm2qBynqcjpvi/OG1yTPn9xwqawgc+ISMRI1bYKrkMaG5P22 UM3ulY+usRUTl9rpep27F7oOSOHbDwK/win2jHfvAxDoY9gU3CagYCktGwiZvGr4S5eP RnqQ== 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=kLtubyT0YC7anb4nWEJp5DCgo8UC7mWHdRD8Xf9P5H4=; b=Oa/cUg6XdthJKZ4DGkDIUpiBB8oHHe8x0Hi+M56Adjsx6E/16/DOEraKypLfsZRDVq EnOVu/FfWGWznwbz/JzlVXRBQ2QUbkIfrRAHkOMuXHgLwm8WfCEwKKWpOUFiXZ3oaWPu ZPbtHVd4eDqm4khXELWgfsVAlNVksD1KM1IQ0FaqACUKi+d5CK8sGv/Hs73v1iKRjndD VIqacn6YHS/TmN+AhYuGfo77ERiyA4O0xG3L5TesdybuBiPhJbibAQ6mdsrH15gogJLP WwSQ1Y5/7PafAgduRVEkch7JK1FlmTRaLNU/89lvbYRXILm1pd0XoWvYPpZ+PH0v9EDQ xNIA== X-Gm-Message-State: AOAM530yA/+bd3+Oa8dqbG3awng/rmgaVYxf+ib9GVKH/O6uufcilaGX RZjE/6t+7brr+zYXiDVkVXCkI4tqh4a3ug== X-Google-Smtp-Source: ABdhPJxWY8PVxHO49ErsDe9kDG89i1jnWdLqph2EpRiwg7+JKSvXiwOV6q/hRhYhe0nJLL3YIMiXAg== X-Received: by 2002:aa7:8548:0:b029:164:a94f:f8cb with SMTP id y8-20020aa785480000b0290164a94ff8cbmr2700465pfn.25.1603953584535; Wed, 28 Oct 2020 23:39:44 -0700 (PDT) Received: from localhost ([2400:8800:300:11c:18a:42ae:244a:91a5]) by smtp.gmail.com with ESMTPSA id s19sm1517343pfe.26.2020.10.28.23.39.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 23:39:43 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 29 Oct 2020 14:39:23 +0800 Message-Id: <17fe96fa273fe2ed8d0d0f76b37187bbe8f0c99e.1603952836.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <28c900686b7ce170435daec8d9cd71527636a8af.1603952836.git.geliangtang@gmail.com> References: <28c900686b7ce170435daec8d9cd71527636a8af.1603952836.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: D5FJYNCSHA4LFAJMACIDSER7NA2B6AAV X-Message-ID-Hash: D5FJYNCSHA4LFAJMACIDSER7NA2B6AAV 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 mptcp-next 3/8] mptcp: send out ack for ADD_ADDR with port List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Like ADD_ADDR IPv6, this patch also sent out a pure ack for ADD_ADDR with port. Signed-off-by: Geliang Tang --- net/mptcp/options.c | 3 ++- net/mptcp/pm.c | 3 ++- net/mptcp/pm_netlink.c | 14 +++++++++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 24117c45f4e1..f983deb534ae 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -589,7 +589,8 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff * bool port; int len; - if (mptcp_pm_should_add_signal_ipv6(msk) && + if ((mptcp_pm_should_add_signal_ipv6(msk) || + mptcp_pm_should_add_signal_port(msk)) && skb && skb_is_tcp_pure_ack(skb)) { pr_debug("drop other suboptions"); opts->suboptions = 0; diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 6d4be02681fa..0c456747893e 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -167,7 +167,8 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, void mptcp_pm_add_addr_send_ack(struct mptcp_sock *msk) { - if (!mptcp_pm_should_add_signal_ipv6(msk)) + if (!mptcp_pm_should_add_signal_ipv6(msk) && + !mptcp_pm_should_add_signal_port(msk)) return; mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_SEND_ACK); diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 6180a8b39a3f..72d150e45067 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -408,7 +408,8 @@ void mptcp_pm_nl_add_addr_send_ack(struct mptcp_sock *msk) { struct mptcp_subflow_context *subflow; - if (!mptcp_pm_should_add_signal_ipv6(msk)) + if (!mptcp_pm_should_add_signal_ipv6(msk) && + !mptcp_pm_should_add_signal_port(msk)) return; __mptcp_flush_join_list(msk); @@ -418,14 +419,21 @@ void mptcp_pm_nl_add_addr_send_ack(struct mptcp_sock *msk) u8 add_addr; spin_unlock_bh(&msk->pm.lock); - pr_debug("send ack for add_addr6"); + if (mptcp_pm_should_add_signal_ipv6(msk)) + pr_debug("send ack for add_addr6"); + if (mptcp_pm_should_add_signal_port(msk)) + pr_debug("send ack for add_addr_port"); + lock_sock(ssk); tcp_send_ack(ssk); release_sock(ssk); spin_lock_bh(&msk->pm.lock); add_addr = READ_ONCE(msk->pm.add_addr_signal); - add_addr &= ~BIT(MPTCP_ADD_ADDR_IPV6); + if (mptcp_pm_should_add_signal_ipv6(msk)) + add_addr &= ~BIT(MPTCP_ADD_ADDR_IPV6); + if (mptcp_pm_should_add_signal_port(msk)) + add_addr &= ~BIT(MPTCP_ADD_ADDR_PORT); WRITE_ONCE(msk->pm.add_addr_signal, add_addr); } } From patchwork Thu Oct 29 06:39:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1389854 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; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=tQKXo94D; 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 4CMG5N1zLmz9sPB for ; Thu, 29 Oct 2020 17:39:52 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 7CA3B16389929; Wed, 28 Oct 2020 23:39:50 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::541; helo=mail-pg1-x541.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) (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 A5F9A1633107C for ; Wed, 28 Oct 2020 23:39:48 -0700 (PDT) Received: by mail-pg1-x541.google.com with SMTP id h6so1539386pgk.4 for ; Wed, 28 Oct 2020 23:39: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=ba4SYUstgC24YR6a07WWW5aeWnyD9DQeDrPE16a2TAg=; b=tQKXo94D1h8HO+avs59UHDMLYDxndPb1zVp+EvpOaHZhFP3senDNSv/+NmgcLcalvI 8GVydXb3hpM9wHdJM9hbAB9uF6DPVHsWbluYbFSmn5ukitxYZDyAWb8oQfbUFWw2Qdcc ceAGRPjC4B3onakdzheAAv5dWyy+CQVCXWqq+Cqh3UjT9m/8GJRYaIC2ibYs8c3dmyU8 bodLyS1SazmPA0FRwqOkqdGGMny7MHv3HaT74cRy6WIl9FIub+hKO0bCtw8KcjBzZ2w3 9q2/ePph2PIrnDQkiGbF6Yuy5cwT8kL4qLtNs1nDZYcDvxeLmGVDkjXpfhr2g1n4P/t6 o7QA== 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=ba4SYUstgC24YR6a07WWW5aeWnyD9DQeDrPE16a2TAg=; b=fgMAwLKKE+xeyxbmiSq3ZqnR0tOnaP12PFjW6KmW8SfAx8fpxk7skIeu6/2gbcSEf/ ZTwNc5R5/VKCvlwPdJDJUR/RLuj9Ik0hMoaagaVeiXaZu2ZFFvC+4p3PMrn5yyd98dt7 4hEQPUuXVEidVBkuQ4aBvTCfKBdnzmTes+4mhVNsb770G7nvl5Lg17DjluQxlJvMgelO cBicDAcU+idtupFF8hH4fKOJNmjP4xJ+ge2lW644dQ49W53FiaziFVntiNwTFEViQLwD 0pA35I250ipLMRR45y+/G3J0aE4f89eeOhMcwKxo0jETioch3B5MCeYpJx5gRu0AqrdH 5Oyg== X-Gm-Message-State: AOAM532OC8WgXEFL96zZnt+uuB5VtmUAlzdymkpHKBgkBZvIclHBDVUf QWx6fqGkrcwg25XCtFfKY58q2Vhm87ES6g== X-Google-Smtp-Source: ABdhPJyQPyjHsQ3Wf/Mc6zHod1+3NhPwhRRJtHWxQcbc88fc/CmUaZwQrVnD4q5/eAbsEL52N1Pidg== X-Received: by 2002:a63:143:: with SMTP id 64mr2831404pgb.335.1603953587931; Wed, 28 Oct 2020 23:39:47 -0700 (PDT) Received: from localhost ([2400:8800:300:11c:18a:42ae:244a:91a5]) by smtp.gmail.com with ESMTPSA id t17sm1522925pfg.169.2020.10.28.23.39.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 23:39:47 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 29 Oct 2020 14:39:24 +0800 Message-Id: <443a19151dd71160ce92b6ab3dbc6a62e4cdddd8.1603952836.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <17fe96fa273fe2ed8d0d0f76b37187bbe8f0c99e.1603952836.git.geliangtang@gmail.com> References: <28c900686b7ce170435daec8d9cd71527636a8af.1603952836.git.geliangtang@gmail.com> <17fe96fa273fe2ed8d0d0f76b37187bbe8f0c99e.1603952836.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: 3VKOGNZI57YBIJI3J7SQF7EQRT7KAMEQ X-Message-ID-Hash: 3VKOGNZI57YBIJI3J7SQF7EQRT7KAMEQ 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 mptcp-next 4/8] mptcp: add port argument for mptcp_pm_announce_addr List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added a new argument 'port' for mptcp_pm_announce_addr. If this argument is true, we set the MPTCP_ADD_ADDR_PORT bit. Signed-off-by: Geliang Tang --- net/mptcp/pm.c | 6 ++++-- net/mptcp/pm_netlink.c | 9 ++++++--- net/mptcp/protocol.h | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 0c456747893e..e63e14f4cf2a 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -14,7 +14,7 @@ int mptcp_pm_announce_addr(struct mptcp_sock *msk, const struct mptcp_addr_info *addr, - bool echo) + bool echo, bool port) { u8 add_addr = READ_ONCE(msk->pm.add_addr_signal); @@ -26,6 +26,8 @@ int mptcp_pm_announce_addr(struct mptcp_sock *msk, add_addr |= BIT(MPTCP_ADD_ADDR_ECHO); if (addr->family == AF_INET6) add_addr |= BIT(MPTCP_ADD_ADDR_IPV6); + if (port) + add_addr |= BIT(MPTCP_ADD_ADDR_PORT); WRITE_ONCE(msk->pm.add_addr_signal, add_addr); return 0; } @@ -156,7 +158,7 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, spin_lock_bh(&pm->lock); if (!READ_ONCE(pm->accept_addr)) { - mptcp_pm_announce_addr(msk, addr, true); + mptcp_pm_announce_addr(msk, addr, true, addr->port); mptcp_pm_add_addr_send_ack(msk); } else if (mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_RECEIVED)) { pm->remote = *addr; diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 72d150e45067..ab0e68426c9e 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -228,7 +228,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) if (!mptcp_pm_should_add_signal(msk)) { pr_debug("retransmit ADD_ADDR id=%d", entry->addr.id); - mptcp_pm_announce_addr(msk, &entry->addr, false); + mptcp_pm_announce_addr(msk, &entry->addr, false, entry->addr.port); mptcp_pm_add_addr_send_ack(msk); entry->retrans_times++; } @@ -329,7 +329,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk) if (local) { if (mptcp_pm_alloc_anno_list(msk, local)) { msk->pm.add_addr_signaled++; - mptcp_pm_announce_addr(msk, &local->addr, false); + mptcp_pm_announce_addr(msk, &local->addr, false, local->addr.port); mptcp_pm_nl_add_addr_send_ack(msk); } } else { @@ -377,6 +377,7 @@ void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk) struct sock *sk = (struct sock *)msk; struct mptcp_addr_info remote; struct mptcp_addr_info local; + bool use_port = false; pr_debug("accepted %d:%d remote family %d", msk->pm.add_addr_accepted, msk->pm.add_addr_accept_max, @@ -393,6 +394,8 @@ void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk) remote = msk->pm.remote; if (!remote.port) remote.port = sk->sk_dport; + else + use_port = true; memset(&local, 0, sizeof(local)); local.family = remote.family; @@ -400,7 +403,7 @@ void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk) __mptcp_subflow_connect((struct sock *)msk, &local, &remote); spin_lock_bh(&msk->pm.lock); - mptcp_pm_announce_addr(msk, &remote, true); + mptcp_pm_announce_addr(msk, &remote, true, use_port); mptcp_pm_nl_add_addr_send_ack(msk); } diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 2a5db34f63bf..f2cf09afd542 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -521,7 +521,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 echo, bool port); int mptcp_pm_remove_addr(struct mptcp_sock *msk, u8 local_id); int mptcp_pm_remove_subflow(struct mptcp_sock *msk, u8 local_id); From patchwork Thu Oct 29 06:39:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1389855 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; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=PF6OtRYi; 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 4CMG5R2rfXz9sPB for ; Thu, 29 Oct 2020 17:39:55 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 8E0201638992D; Wed, 28 Oct 2020 23:39:53 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::442; helo=mail-pf1-x442.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) (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 6C38C16389922 for ; Wed, 28 Oct 2020 23:39:52 -0700 (PDT) Received: by mail-pf1-x442.google.com with SMTP id e15so1523788pfh.6 for ; Wed, 28 Oct 2020 23:39: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=eLQLtalXlMC1FUGgqct9qhJTI0DiIrq8DKCU8zkPzdI=; b=PF6OtRYiTIlRbjvYzDb8fxyhQwFdq5dp3HvUaDk4xK8AaYuIr1U4Gx/3nyUFOrMFfI Btuj7o227fXijr70yYqB2P86GaImojEE/tyxLrsMRe1aSC/eX/cg8ujIirKYPGldIt/s P9F8INBEd2pFJjspxGgklIUUafiwXEdrU0hJoanba3ScrQDrxfcuIGZTSqrJII6/WCZu jSvQY2i15tuKAvW1w4FvC0aY2plJW0pmrXNU+aSuKmaJbx+YHV5dfNkIp3rGxuhuZAss Mqk+3Tdf7BMpnRC3LTTB6vXNrcftDMSg3mwE/xKpJkIlOu6XVh2CuZz1mEguTkwIIqCb hbzA== 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=eLQLtalXlMC1FUGgqct9qhJTI0DiIrq8DKCU8zkPzdI=; b=fc+xy3f2U6dZd1anY85az3CZ6i35i8iehTV0NpuXP/P/MIvF0dPjUxgRHVAPJJJ88j Sc7Shg3GiWYQy7as0+8XeJNvNLF0QIoNzzVelxoI1FITxrpBYJsP9nsxl5U9bERaxar1 3XXeJB0XWq8bsiyN2rHXZZNqMM4Wrd86FTNmVn9fSOkQdwbUCCHMZVfKjUFgtOCEIZ/0 DK2PSkAf7V3qrpsTg8wzkWXk+xukgYXe5dl6d7i1K4Cypju3NQZ/oiT/RtEJgECZiEXG 4qGSDmLFV9K3/vGHFfSMDJSVgEIvnvgRwEgBF8b3RHJm4Amjv8q7rbWXofoCoaGZr0LT LXNg== X-Gm-Message-State: AOAM530Z8BRIvVUoVt5nsU6RdFgTeTmwpLVuDSSc3Xlgm8FQRKjR//PG x+tsezTST/j+NnLephJnJTtqIcoUjy4ZUw== X-Google-Smtp-Source: ABdhPJzfd1qeLVsq8tqSC7Q/wpLNwuOitkqeqfeaFPSyaLtqXdsw9tT/DiZyUSpJWvVfLL7Y5d+Pkw== X-Received: by 2002:a62:5542:0:b029:156:222c:a630 with SMTP id j63-20020a6255420000b0290156222ca630mr2993551pfb.50.1603953591617; Wed, 28 Oct 2020 23:39:51 -0700 (PDT) Received: from localhost ([2400:8800:300:11c:18a:42ae:244a:91a5]) by smtp.gmail.com with ESMTPSA id q24sm1843446pfn.72.2020.10.28.23.39.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 23:39:50 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 29 Oct 2020 14:39:25 +0800 Message-Id: X-Mailer: git-send-email 2.26.2 In-Reply-To: <443a19151dd71160ce92b6ab3dbc6a62e4cdddd8.1603952836.git.geliangtang@gmail.com> References: <28c900686b7ce170435daec8d9cd71527636a8af.1603952836.git.geliangtang@gmail.com> <17fe96fa273fe2ed8d0d0f76b37187bbe8f0c99e.1603952836.git.geliangtang@gmail.com> <443a19151dd71160ce92b6ab3dbc6a62e4cdddd8.1603952836.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: DH2EMCBIKMFG7GV44WTIJTBEIIVGGNMS X-Message-ID-Hash: DH2EMCBIKMFG7GV44WTIJTBEIIVGGNMS 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 mptcp-next 5/8] mptcp: add the incoming ADD_ADDR port support List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: The port field in mptcp_options_received should be big-endian, since we use the following assignment statement in mptcp_parse_option: mp_opt->port = get_unaligned_be16(ptr); And the addr.port is also big-endian, so we need to drop htons in mptcp_incoming_options. Signed-off-by: Geliang Tang --- net/mptcp/options.c | 3 ++- net/mptcp/protocol.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index f983deb534ae..87998edcce4e 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -269,6 +269,7 @@ static void mptcp_parse_option(const struct sk_buff *skb, mp_opt->ahmac = get_unaligned_be64(ptr); ptr += 8; } + pr_debug("port=%d, ahmac=%llu", ntohs(mp_opt->port), mp_opt->ahmac); break; case MPTCPOPT_RM_ADDR: @@ -936,7 +937,7 @@ 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.port = mp_opt.port; addr.id = mp_opt.addr_id; if (mp_opt.family == MPTCP_ADDR_IPVERSION_4) { addr.family = AF_INET; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index f2cf09afd542..4c3350ed8d92 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -136,7 +136,7 @@ struct mptcp_options_received { #endif }; u64 ahmac; - u16 port; + __be16 port; }; static inline __be32 mptcp_option(u8 subopt, u8 len, u8 nib, u8 field) From patchwork Thu Oct 29 06:39:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1389856 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; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=gnVV3Cat; 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 4CMG5W2nqGz9sPB for ; Thu, 29 Oct 2020 17:39:59 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 9948016389929; Wed, 28 Oct 2020 23:39:57 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::644; helo=mail-pl1-x644.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pl1-x644.google.com (mail-pl1-x644.google.com [IPv6:2607:f8b0:4864:20::644]) (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 E60C316389922 for ; Wed, 28 Oct 2020 23:39:55 -0700 (PDT) Received: by mail-pl1-x644.google.com with SMTP id b19so844807pld.0 for ; Wed, 28 Oct 2020 23:39:55 -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=eLucgcX30CQ81BiF/V5wbTVE2HGSm2Sr7l0/98JUudQ=; b=gnVV3CatDva+y12v5HNJEpEikPwGtnEHxY7y7bHRXwR4mVVUq4XgnAJjKtK3vvFw3Y eY+Wv1z3cpXLJwTdqRr9U40w4QaIR0g0cIfUSYgrzlEWwB/g7C5RqarQ+drR9p9pPB8S mAnRWZkbXbq79+NhQShRX/qh1YYQ0o2YPh0C1a0dMpgIWWGGTrelhFMHbcS1vmz0Hytw PztWshDIAL60hIF0Ospz2ja9C8sSXZ7XjEnbnej1Nlui6CxKwxg+jXSu+jNIBf5J7QK1 yAbqB/aqu7bJXfvirTSetyMnlu8/xeET1ROiJv/C0PQgZHLfsngRkUendVuO5WOCfQom N03g== 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=eLucgcX30CQ81BiF/V5wbTVE2HGSm2Sr7l0/98JUudQ=; b=O7MeSdJBXuevxsIfujbnTuNf6Mmr91499x2rFEk7IJ/aUBCsPlU8dK+Bf4/crGNlks JJZonXx4NcmtDjp62HwzwNkqGpdCub4f7WnPGG8tuyq5hbQVDorTqoJtHZm4iHFWZ/uK F7vtHk1TyR26odZDCTJb9/74c3RaW40QxnxKttSK9Dz/ueBot0YR/GdxUtROMisrNbEX Zp9vqtNc5EQiY6W0oc6xKs1ImSkybHUB129PVy4FvVU/gv9kMtdTh8rjJ+hGw0iBcFAK FZ6+g+4wHtT/lPU13A9bl9XOgLmwhr/IQ8JgwhA0rp/PCfFrBXKRxBFih8E4Ar45mgs5 onxw== X-Gm-Message-State: AOAM532Rpp98yvqJ4ZHB0zZEYnAaD7yDfK/GeNBsC1PcNHvDKW78oIZN /hk6DOnY9zFZCi4aBIGbL/UE2rzPyoQtzg== X-Google-Smtp-Source: ABdhPJzSgp3yX7Hzxq/ILZU6VZx+jgvp/9KcxpDhTejii3l4S72mDGd4FdmjdVHx/D/pOQR68Hm7fg== X-Received: by 2002:a17:902:9a4c:b029:d6:1f21:8021 with SMTP id x12-20020a1709029a4cb02900d61f218021mr2528106plv.58.1603953595197; Wed, 28 Oct 2020 23:39:55 -0700 (PDT) Received: from localhost ([2400:8800:300:11c:18a:42ae:244a:91a5]) by smtp.gmail.com with ESMTPSA id k10sm1524225pji.54.2020.10.28.23.39.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 23:39:54 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 29 Oct 2020 14:39:26 +0800 Message-Id: <1c2111f713f72610a59400b5c821f09e53485134.1603952836.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: <28c900686b7ce170435daec8d9cd71527636a8af.1603952836.git.geliangtang@gmail.com> <17fe96fa273fe2ed8d0d0f76b37187bbe8f0c99e.1603952836.git.geliangtang@gmail.com> <443a19151dd71160ce92b6ab3dbc6a62e4cdddd8.1603952836.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: GKT3BP53JN4YFJUVPQUSA6ZPPBSGFZSH X-Message-ID-Hash: GKT3BP53JN4YFJUVPQUSA6ZPPBSGFZSH 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 mptcp-next 6/8] mptcp: add ADD_ADDR port support for netlink List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added ADD_ADDR port support for netlink. Signed-off-by: Geliang Tang --- net/mptcp/pm_netlink.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index ab0e68426c9e..069447424ddb 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -725,6 +725,9 @@ static int mptcp_pm_parse_addr(struct nlattr *attr, struct genl_info *info, if (tb[MPTCP_PM_ADDR_ATTR_FLAGS]) entry->addr.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])); + return 0; } @@ -911,6 +914,8 @@ static int mptcp_nl_fill_addr(struct sk_buff *skb, if (nla_put_u16(skb, MPTCP_PM_ADDR_ATTR_FAMILY, addr->family)) goto nla_put_failure; + if (nla_put_u16(skb, MPTCP_PM_ADDR_ATTR_PORT, ntohs(addr->port))) + 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)) From patchwork Thu Oct 29 06:39:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1389857 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; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=HTPE2ls4; 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) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CMG5b66tgz9sPB for ; Thu, 29 Oct 2020 17:40:03 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id A4BA11638992D; Wed, 28 Oct 2020 23:40:01 -0700 (PDT) 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 9C09D1638992E for ; Wed, 28 Oct 2020 23:39:59 -0700 (PDT) Received: by mail-pf1-x436.google.com with SMTP id 133so1509097pfx.11 for ; Wed, 28 Oct 2020 23:39:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=y4l2IQO0fth1QqhftHsbKRGXmU2w2cBAJAmROq3yzbE=; b=HTPE2ls4Pe8ARMp10B8/Nqk5Tus/6wS8pTtqD0JXzk6INaMeWbdwPnDVHAXGED06Ox OfiaCCkNYKKrbIJGnlorfxM8YegZT2bsn6VBlz6uFiubvOUp3q0UV0J0trYszefZbV1L LtQ7tlOv6UGeUSNYTjm4/5rnxDaHFvsbq1cH3bAb75k3DJ6U52rxQY7bXnUjplFRy7Lp MyTD4SAxRy6eHrjLVMyBQMPMSNin31h0gvdwy0ksvqUqfHeaKoNj8p4mVCL66mlBiQ+w 07EkVxv4sGcUXy6J/PoBqeoyF6x10YwnOHsx0weAmHgvjyPRaeHjgrkuyS6gJEKTYz1b WIpQ== 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=y4l2IQO0fth1QqhftHsbKRGXmU2w2cBAJAmROq3yzbE=; b=IrmKbTD3GbeDMipuT5sRtxVzhkVzmJuHbzNBshqgWUnm8et+DRpe3VDyvMRwmtAg2A 0Y2nvhY6Qr0/qFFuY6essqhT2CVhSrBYVSr7Ib0jRLdEGvJDyIF9hBcwRK3Nmc9xFpbJ +PuRHiL953XllsK7y7fhh9P1ge4m2dTNCX2Jzrq5CoACf5WuDOUq5nmNYaMBU4HK3pDG JK2iu+J/pMQToggoWmPwFq4HCzknenCgDkbFbktUe8iBjS67SPBMRe/yoUigrTmoOnD+ jONCBTbfzEBoLLTKus0H7t6fQvFw1cpbO6a1xo2YhsuK7P4G/GSguk1aZXaFO9/fO9MY B8Pg== X-Gm-Message-State: AOAM5325NJ5UfFfIzAOWyovfdII4x5jbItZsA0Ji8QdwEb8ZcqA1jbmG ul5OXRg5l5taxEKQ/YZwofArLR0zpXV3JA== X-Google-Smtp-Source: ABdhPJylWoARi+ZR27wk2dotF5vbvX3q4MPD5z7T/1MZpBooefO4ggtVBXQ+v8SqKUDvIzpRGdsBhA== X-Received: by 2002:a17:90a:348e:: with SMTP id p14mr2790882pjb.75.1603953598768; Wed, 28 Oct 2020 23:39:58 -0700 (PDT) Received: from localhost ([2400:8800:300:11c:18a:42ae:244a:91a5]) by smtp.gmail.com with ESMTPSA id a18sm1309657pgw.50.2020.10.28.23.39.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 23:39:58 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 29 Oct 2020 14:39:27 +0800 Message-Id: <74a7932cdf68d481379e0910f511b4ef017661ce.1603952836.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <1c2111f713f72610a59400b5c821f09e53485134.1603952836.git.geliangtang@gmail.com> References: <28c900686b7ce170435daec8d9cd71527636a8af.1603952836.git.geliangtang@gmail.com> <17fe96fa273fe2ed8d0d0f76b37187bbe8f0c99e.1603952836.git.geliangtang@gmail.com> <443a19151dd71160ce92b6ab3dbc6a62e4cdddd8.1603952836.git.geliangtang@gmail.com> <1c2111f713f72610a59400b5c821f09e53485134.1603952836.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: SG3ZBK4FIFWLGQCAR2FR4GPIDHGXTJ4T X-Message-ID-Hash: SG3ZBK4FIFWLGQCAR2FR4GPIDHGXTJ4T 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 mptcp-next 7/8] selftests: mptcp: add ADD_ADDR port support for pm_nl_ctl List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added ADD_ADDR port support for pm_nl_ctl. Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c index b24a2f17d415..9e6f30d34d9a 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -178,6 +178,7 @@ int add_addr(int fd, int pm_family, int argc, char *argv[]) struct nlmsghdr *nh; u_int16_t family; u_int32_t flags; + u_int16_t port; int nest_start; u_int8_t id; int off = 0; @@ -271,6 +272,16 @@ int add_addr(int fd, int pm_family, int argc, char *argv[]) rta->rta_len = RTA_LENGTH(4); memcpy(RTA_DATA(rta), &ifindex, 4); off += NLMSG_ALIGN(rta->rta_len); + } else if (!strcmp(argv[arg], "port")) { + if (++arg >= argc) + error(1, 0, " missing port value"); + + port = atoi(argv[arg]); + rta = (void *)(data + off); + rta->rta_type = MPTCP_PM_ADDR_ATTR_PORT; + rta->rta_len = RTA_LENGTH(2); + memcpy(RTA_DATA(rta), &port, 2); + off += NLMSG_ALIGN(rta->rta_len); } else error(1, 0, "unknown keyword %s", argv[arg]); } @@ -323,6 +334,7 @@ int del_addr(int fd, int pm_family, int argc, char *argv[]) static void print_addr(struct rtattr *attrs, int len) { uint16_t family = 0; + uint16_t port = 0; char str[1024]; uint32_t flags; uint8_t id; @@ -330,12 +342,16 @@ static void print_addr(struct rtattr *attrs, int len) while (RTA_OK(attrs, len)) { if (attrs->rta_type == MPTCP_PM_ADDR_ATTR_FAMILY) memcpy(&family, RTA_DATA(attrs), 2); + if (attrs->rta_type == MPTCP_PM_ADDR_ATTR_PORT) + memcpy(&port, RTA_DATA(attrs), 2); if (attrs->rta_type == MPTCP_PM_ADDR_ATTR_ADDR4) { if (family != AF_INET) error(1, errno, "wrong IP (v4) for family %d", family); inet_ntop(AF_INET, RTA_DATA(attrs), str, sizeof(str)); printf("%s", str); + if (port) + printf(" %d", port); } if (attrs->rta_type == MPTCP_PM_ADDR_ATTR_ADDR6) { if (family != AF_INET6) @@ -343,6 +359,8 @@ static void print_addr(struct rtattr *attrs, int len) family); inet_ntop(AF_INET6, RTA_DATA(attrs), str, sizeof(str)); printf("%s", str); + if (port) + printf(" %d", port); } if (attrs->rta_type == MPTCP_PM_ADDR_ATTR_ID) { memcpy(&id, RTA_DATA(attrs), 1); From patchwork Thu Oct 29 06:39:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1389858 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; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=vcdHZFKj; 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 4CMG5f3trnz9sPB for ; Thu, 29 Oct 2020 17:40:06 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id B4F8D1638992F; Wed, 28 Oct 2020 23:40:04 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::42a; helo=mail-pf1-x42a.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) (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 BF43816389920 for ; Wed, 28 Oct 2020 23:40:02 -0700 (PDT) Received: by mail-pf1-x42a.google.com with SMTP id b3so1542171pfo.2 for ; Wed, 28 Oct 2020 23:40: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=8BQJEOT332xp4r7J36pkDDBwL0AHdyd5dRehP4He6n8=; b=vcdHZFKjZfj8df8mWHL3E6w2TymgH2iwYOAa0v7fubBcf+P7fZe3Njm9Ehhn8R2KPl K2e3rRlAEmyQ6fkk7p/Pae3lB6orUt7PFsSCMKgjfGpBPoUZbB9IFJdm4FN4ABf3I8pK Qqw3foK/63ybP3avAWXifhTNA5BAe7R/wTofFzggoAxpbB4+0EN9e9yxy65s3dFVGZn8 LLB1w3Og2/3mfAqrZLIfm9xxdUuKy81YRNQ192lXGNy5xOhHYLmEad89SxB0W8XlN8jv EbTw31X0gd6xJaoQjyV16xBAhkHXNlvDiSwJOVxlbO0TRNEujQMX9/IN8ecLjUCr5A6T JtpA== 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=8BQJEOT332xp4r7J36pkDDBwL0AHdyd5dRehP4He6n8=; b=MGNqFKPvucIiYxZxSO4G2NRe8BMSPwq+BLoGcx7l4L/XxW7cdsw0ZsNGohaCIqwJae fcEVWnzadla247q5OXiWROsM5+9BcpDi7uFmqobEw4jwqljqdHYdqW7qQxVZK2lrY1o5 tdiG/X99BatwFlolZ+KtDXelwF3JULwJ4pVt3ZpA5Jocv/zxAcMZQH6hpJv+3z7dhVmZ 03mQn6xe+OlLRZnIkYz4GqKbHGG+GBc30zjtAPubynrAq0loG6w1fqdS0ATBOC6ypdeI 9pUzWl4Iq2OoXAS9na3UhgbnjzmmmJK6OBwNUS+2lHki+nybhbSZMNB3jX3NFhKVFr4G 5OmQ== X-Gm-Message-State: AOAM532snnh2gRdZ6gx3C5HQTHs6PP4Zd+MP5b/+XFJQ0xtVvA/VdSsm UMrjQLcZuhcJYlUX11L+k9ntTQr/QLnqsA== X-Google-Smtp-Source: ABdhPJzndCUPJjuJ4S3XkGv5rYszW48CBFPAGLW+xxcbwPW3sgx+dlwk5RQnWZeNobmvZtyHdhibUQ== X-Received: by 2002:a17:90b:a05:: with SMTP id gg5mr2822457pjb.227.1603953602022; Wed, 28 Oct 2020 23:40:02 -0700 (PDT) Received: from localhost ([2400:8800:300:11c:18a:42ae:244a:91a5]) by smtp.gmail.com with ESMTPSA id v3sm1429614pju.38.2020.10.28.23.40.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 23:40:01 -0700 (PDT) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 29 Oct 2020 14:39:28 +0800 Message-Id: <19324d5229646e70adb89dc08fd29637cdcd5613.1603952836.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <74a7932cdf68d481379e0910f511b4ef017661ce.1603952836.git.geliangtang@gmail.com> References: <28c900686b7ce170435daec8d9cd71527636a8af.1603952836.git.geliangtang@gmail.com> <17fe96fa273fe2ed8d0d0f76b37187bbe8f0c99e.1603952836.git.geliangtang@gmail.com> <443a19151dd71160ce92b6ab3dbc6a62e4cdddd8.1603952836.git.geliangtang@gmail.com> <1c2111f713f72610a59400b5c821f09e53485134.1603952836.git.geliangtang@gmail.com> <74a7932cdf68d481379e0910f511b4ef017661ce.1603952836.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: NOOR5J3EJ5WCUCJLYIS7Z2RLWWWCJ7KE X-Message-ID-Hash: NOOR5J3EJ5WCUCJLYIS7Z2RLWWWCJ7KE 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 mptcp-next 8/8] selftests: mptcp: add testcases for ADD_ADDR with port List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added testcases for ADD_ADDR with port. Signed-off-by: Geliang Tang --- .../testing/selftests/net/mptcp/mptcp_join.sh | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh index 0eae628d1ffd..826d662a9bf8 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -212,6 +212,7 @@ do_transfer() rm_nr_ns1="$7" rm_nr_ns2="$8" speed="$9" + with_port="${10}" port=$((10000+$TEST_COUNT)) TEST_COUNT=$((TEST_COUNT+1)) @@ -253,6 +254,11 @@ do_transfer() -s ${srv_proto} ${local_addr} < "$sin" > "$sout" & spid=$! + if [ "$with_port" -gt 0 ];then + ip netns exec ${listener_ns} $mptcp_connect -t $timeout -l -p $with_port \ + -s ${srv_proto} ${local_addr} < "$sin" > "$sout" & + fi + sleep 1 if [ "$test_link_fail" -eq 0 ];then @@ -348,6 +354,7 @@ run_tests() rm_nr_ns1="${5:-0}" rm_nr_ns2="${6:-0}" speed="${7:-fast}" + with_port="${8:-0}" lret=0 oldin="" @@ -362,7 +369,7 @@ run_tests() fi do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} \ - ${test_linkfail} ${rm_nr_ns1} ${rm_nr_ns2} ${speed} + ${test_linkfail} ${rm_nr_ns1} ${rm_nr_ns2} ${speed} ${with_port} lret=$? if [ "$test_linkfail" -eq 1 ];then @@ -717,6 +724,23 @@ chk_join_nr "remove subflow and signal IPv6" 2 2 2 chk_add_nr 1 1 chk_rm_nr 1 1 +# subflow with port +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 port 10100 +run_tests $ns1 $ns2 10.0.1.1 +chk_join_nr "single subflow with port" 1 1 1 + +# signal address with port +reset +ip netns exec $ns1 ./pm_nl_ctl limits 0 1 +ip netns exec $ns2 ./pm_nl_ctl limits 1 1 +ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal port 10100 +run_tests $ns1 $ns2 10.0.1.1 0 0 0 fast 10100 +chk_join_nr "signal address with port" 1 1 1 +chk_add_nr 1 1 + # single subflow, syncookies reset_with_cookies ip netns exec $ns1 ./pm_nl_ctl limits 0 1