From nobody Fri Apr 26 23:55:55 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2056.outbound.protection.outlook.com [40.107.22.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CD00C17C9 for ; Fri, 26 May 2023 02:16:37 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nVAi2l2o1ZPN8y2mNXpARngmgat0CuBzOaY1JClFdLKRjYuF/AoXSfLiF6M43+5U5Ere9XeVr8c9SHGTMH3+puJsTmsMC5cQEWXWKm6Bpo4Dxn1vMDhZFJh2BOqsR+IzOLuWNOKZDBgUtMZywp8Klj9Fp0kwGlYrBoyZpDjhvEhWn99G0GyQEMYv0ZKCFUJUxSRGdS4P3dw1O+bC2/oVGnol8cnpklqyEnrmhRz4nzVnt7/7dteZLEETpPiGwnH+9okJvhtwTZFukkOlO/zqnW0Txu6LkpioBYjNy+uYp9G3iStRqaPQsQaFArzs4IYxQSzk9/LwsjDdRsAe1a2CCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=V6dlJvmqnH/DnlcQ0YYS+LdKilIBArwhW5gjE5sagf4=; b=Op+ZnlJ3I26mjmwcAmMwNmqxGjWSxkrpMocHoK4LoiZ9ExpRVlQiQ415OcTGB3Qo3q9YPLUe4+PGBwKzfqBgUQivG6nJ68itCtdXLYghYDwT9XoWQxtqbEiyWJjPjQmmJVoPP85/hdT9dYTAksZ5ORg5NiwqgFXF8FwPeiWQDIW90wwdW1CBbcuJVPdOI83yOsbEFthsmn2X/+0J+uDL1xNPPELfI25LqHCDfxe+ajlVjmKemdmO+mi3UPeaAkcJp1vDs3GcpiXngIgad1ltJopXxloNyEOvIkf80ABqq/CTeyPG/IXSbwUw6Ptq3lQIgzAEHimddsvE/5JcQz46Zg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V6dlJvmqnH/DnlcQ0YYS+LdKilIBArwhW5gjE5sagf4=; b=4MrmLh7z6dvKivrSvl0lia+xrYlXStnrLDgbAGP/bd8Sp4/2PyVa0wbVlaape+r9GVDV8b89Q2qNRtwxjoisedU2UrJUhACbETLSBscRiTo3CxRI64LVsx/23QpUb8WRjX3l6OIkjbU2zW6uA2U26danQ4PZb2Jz+AA4HQQmIy7UO4XYSntshsR3XK0g7OFRBiWl36P3vSQWcoEFaF2IluVkGDxdREl4t5tvXsEh3Hq7ZT0j/7MIKWJxOU48jrmsvqqpBAdK2fAvbJnIzoPfnGySL/tWXcsjsAaxppFzfPNiESWlKMGEGrj/saBJWd7dg6tmfjsrgma6CyY6E57vlA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by PR3PR04MB7466.eurprd04.prod.outlook.com (2603:10a6:102:87::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.15; Fri, 26 May 2023 02:16:35 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::423a:a30f:5342:9d35]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::423a:a30f:5342:9d35%6]) with mapi id 15.20.6433.015; Fri, 26 May 2023 02:16:35 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 1/4] mptcp: export local_address Date: Fri, 26 May 2023 10:16:08 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0245.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::13) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PR3PR04MB7466:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f89e48d-972f-4eab-e5b0-08db5d8f3a87 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pqqimMnwz+4m1L9X7EWZ9uq0yrBLtqyTg2WInOr5eMGW8FExsDz+5jjbKYj+bulYdI2qwXS0+oK7fshpCOTeUimUQTMiTPkqQJumhtCKtkpaerEv4NntT5bi23sjgg3obrRQJW788u111d07htQIHbBAfSXRFHFwYexDaxzr4a4siHC3bJIvrpuIbcMPjj+1vpf7m4uSg34BgOiVGmSJ9KQ2BgfVGPd/yHVZGGVE1+cfOOMOOCMtw/9EfNidNJz7IhR2M4mRlK0RDJV1aGN1lDFWKBbWBzSPiau4eXDISakIbM5BNWKr7c8WdFIp/8wFNTQ7cE06HWn3JO1ftrUm87yrRdcp7hbHKFZLXfSax+71PRUqJV73ZEJN4b/poY6ZO7PH6CW+9zueQdWCweD2j16TwUhK4Ne9/8qXiRYgafbmIvEaSqSjQNGk7CimFAE/7odKscsNGApF9xJZjhNZ18ZWwRgFC81mn3/YGgLZAmGhayQcoOsmry7o81w/5Bq2By+sXgxSHS4rK6b1kFTZRMMciWLcWHRqNeDcRKa1zTXrqRTyTmJhL4KYgoSp2bHL X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(346002)(376002)(366004)(39860400002)(136003)(396003)(451199021)(2616005)(4326008)(6916009)(5660300002)(8936002)(36756003)(86362001)(38100700002)(2906002)(83380400001)(8676002)(44832011)(316002)(41300700001)(6666004)(478600001)(6506007)(6486002)(186003)(66946007)(66476007)(66556008)(107886003)(6512007)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cExnX8MHXsnTWU4in5SfAu68b13NYAyXgtFyyK04cGsI0wQ23fYxTiZbo894?= =?us-ascii?Q?82GUFXuhc84VnuXpDFKwnvqy8I8yL9odQ0DlNMPB+dA8n8iHU/gz7phNDSBm?= =?us-ascii?Q?QFrOtrFG6I5CWPviXPUQAXlPDEAyMCHaLArB2mk0+bDTAoRcc19BwjyWvKfs?= =?us-ascii?Q?m4pLW7dqe1Zc8vChfQKVBwFb9KZRJNDH6ewiuibQVKKypVLu4siJ0pl60P/b?= =?us-ascii?Q?m+10HoNp09rxBA6iMkTlYc6Ut4Oc0ByJlO1P9qxWbWzSrVO49v312Nng8VQQ?= =?us-ascii?Q?Jwk+NFtgxJsTTFJKTs1p6hcdiZkbH5dCOq9AanfkbS/9QmgWwRH0zMVf9D66?= =?us-ascii?Q?6+vxoxbnW4HFQhuAcVqPW1fLXDVtrYhcbimrZoZgYWeILyO1oWZ19MGrThcd?= =?us-ascii?Q?HQQXfYBHMSVmrOEy0ZUDkGL/OGep+KMKeHbepPTUJvIGgXUM2GaNscmZwjqU?= =?us-ascii?Q?woH14ghhkvxowmUqBKWkk1BSgn3pQ26fxrOeBfgPXZYPtNP0hBokPDwfvl5P?= =?us-ascii?Q?I/Ly6hGQmQSUNJLHlEfewKMueCzy0jYWsf3qkeDppwdPp0oh+PDUqa5BGvQL?= =?us-ascii?Q?t069sKLsrIU7mWTFBowXBM3UVUQRkf9TemHvsAxPoq7bclaOTgLb8qysVg5p?= =?us-ascii?Q?Ktr29JNNM0iBmGVNBFscjyzzco8EkXjiPimmiMi1ltnYMUr/oRx5xFNcuXLz?= =?us-ascii?Q?rrcPkjVwf1UyDPxuCvcXvFPwGGKELdpK75t5Z+5X8qrgqaEZCBkPSJTuEGcK?= =?us-ascii?Q?X/ArvflW8kRGElwp1WUShYk9ZKpGTwim+kYi4YJ5IK5Ehfb3PSOpELZda5YL?= =?us-ascii?Q?UnRk1MVpJj0VLVSb0ieMiROyBemdTVXnlRwQb5YhOfTb2vCYYqP4+fgfx9lq?= =?us-ascii?Q?wqHu832ZiCTtHQSfroHGfk3XW1++DpZD3ZCE9Bnc7/77HB+WY1XGc+FyuC0k?= =?us-ascii?Q?FwqR8Hjj6xH1O4RbFcfcDEQMghooxp0lILNlffQxf0iGQF/rCqmnopO/ij+r?= =?us-ascii?Q?Y46OUyP8Ibox/pXpKVmyMXWuC2Liaro7Fh3AjL0PNfh0w1k4wmUdcJjpJRG1?= =?us-ascii?Q?n/0MPbVjypyIkXPZWTFHs+f9YvAZh/zgd1MntyUHgBHzRt2iBSDmMKNZqX3z?= =?us-ascii?Q?+SFGWPHDZK/frbN27HRYS5fqOHJ6eCb8Y8TLwtXR3W9/NzcKI7sLBB03ey2H?= =?us-ascii?Q?o0lbpBt/SJjZ52lWBfbnTkpl2BnZ/NNHWtTZRt2tchcaeceqW3aRo6TEL5Gc?= =?us-ascii?Q?v2CABicyBzW8jMZArBw44TXquJLNLGztUy708ICM9a3vvG0HguSr3eXhzxhh?= =?us-ascii?Q?u1/XqHlu8KmVFwimjy4ZoVHDvoRfP4fpi7HZV2i+vw8QJVG7+Wzu/dY1/QVm?= =?us-ascii?Q?Sh2KdwqniNdKuRFCk/4gPEqBzI2c/mtxFjwJECVQJ/YQ2fw0ZP6lCV8LO7+/?= =?us-ascii?Q?ZVRJTPF4cqE08Tn62vsh0V1PdUxY+Pt/6UfFJpLMOfoOE8Bd4WMSbpsZfZWb?= =?us-ascii?Q?XU/8vNXWWKsZEegheF6YQq4CDsCO2rc/CrgY+kf4yZQKkH/uh0i9Nk6eIPai?= =?us-ascii?Q?8wQvZIDFIVM4dXWikpfsaR0KdrngOZ7iz6C5zc5Y?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5f89e48d-972f-4eab-e5b0-08db5d8f3a87 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2023 02:16:35.2161 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: DHxqaWIygoTQcmHAUEr4ETNjIA8vhpEfxcHYY9VrCLLxNTditbT+Uj4ufbTk3HlUtyXfZj08GvQDkiFTmlU3nw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7466 Content-Type: text/plain; charset="utf-8" Rename local_address() with "mptcp_" prefix and export it in protocol.h. This function will be re-used in the common PM code (pm.c) in the following commit. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts --- net/mptcp/pm_netlink.c | 17 ++++++++--------- net/mptcp/protocol.h | 1 + 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index ec892fb8d85f..2f58ab49512a 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -86,8 +86,7 @@ bool mptcp_addresses_equal(const struct mptcp_addr_info *= a, return a->port =3D=3D b->port; } =20 -static void local_address(const struct sock_common *skc, - struct mptcp_addr_info *addr) +void mptcp_local_address(const struct sock_common *skc, struct mptcp_addr_= info *addr) { addr->family =3D skc->skc_family; addr->port =3D htons(skc->skc_num); @@ -122,7 +121,7 @@ static bool lookup_subflow_by_saddr(const struct list_h= ead *list, list_for_each_entry(subflow, list, node) { skc =3D (struct sock_common *)mptcp_subflow_tcp_sock(subflow); =20 - local_address(skc, &cur); + mptcp_local_address(skc, &cur); if (mptcp_addresses_equal(&cur, saddr, saddr->port)) return true; } @@ -263,7 +262,7 @@ bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk= , const struct sock *sk) struct mptcp_addr_info saddr; bool ret =3D false; =20 - local_address((struct sock_common *)sk, &saddr); + mptcp_local_address((struct sock_common *)sk, &saddr); =20 spin_lock_bh(&msk->pm.lock); list_for_each_entry(entry, &msk->pm.anno_list, list) { @@ -538,7 +537,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) struct mptcp_addr_info mpc_addr; bool backup =3D false; =20 - local_address((struct sock_common *)msk->first, &mpc_addr); + mptcp_local_address((struct sock_common *)msk->first, &mpc_addr); rcu_read_lock(); entry =3D __lookup_addr(pernet, &mpc_addr, false); if (entry) { @@ -749,7 +748,7 @@ int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk, struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct mptcp_addr_info local, remote; =20 - local_address((struct sock_common *)ssk, &local); + mptcp_local_address((struct sock_common *)ssk, &local); if (!mptcp_addresses_equal(&local, addr, addr->port)) continue; =20 @@ -1067,8 +1066,8 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, = struct sock_common *skc) /* The 0 ID mapping is defined by the first subflow, copied into the msk * addr */ - local_address((struct sock_common *)msk, &msk_local); - local_address((struct sock_common *)skc, &skc_local); + mptcp_local_address((struct sock_common *)msk, &msk_local); + mptcp_local_address((struct sock_common *)skc, &skc_local); if (mptcp_addresses_equal(&msk_local, &skc_local, false)) return 0; =20 @@ -1488,7 +1487,7 @@ static int mptcp_nl_remove_id_zero_address(struct net= *net, if (list_empty(&msk->conn_list) || mptcp_pm_is_userspace(msk)) goto next; =20 - local_address((struct sock_common *)msk, &msk_local); + mptcp_local_address((struct sock_common *)msk, &msk_local); if (!mptcp_addresses_equal(&msk_local, addr, addr->port)) goto next; =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index bd3771c7d79d..d8c9035c44fb 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -640,6 +640,7 @@ void mptcp_set_owner_r(struct sk_buff *skb, struct sock= *sk); =20 bool mptcp_addresses_equal(const struct mptcp_addr_info *a, const struct mptcp_addr_info *b, bool use_port); +void mptcp_local_address(const struct sock_common *skc, struct mptcp_addr_= info *addr); =20 /* called with sk socket lock held */ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info = *loc, --=20 2.35.3 From nobody Fri Apr 26 23:55:55 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2075.outbound.protection.outlook.com [40.107.22.75]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 25F1A17C9 for ; Fri, 26 May 2023 02:16:49 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rp/UjJDF/UJ4fYDMt3/r0+zyb/T3bZfizDDHfbf4r34SpG4pNnSTlak6mIozv0+Y0yUXfavTxAAxoB1BQ9GTWqX/JOZW3tBgbpNFaDvfUT2nYBuFaSH59QVUo6rQeVB9nnoUa6f7lkgIm5Vx2phMifyEmT9IVw8mnKaw0+gfbAXuhgd9SK5Z6Fb+unaqOgPBUw78gVzX8e3+VF/6xBgUUv85woyUmbaBlp0ZB7P+Z6cd7jDCYHrQX39iRn5+qgr113i8maz0Zj1XrGko/b7s6N0IzaQ1CfaViqqTN8mgCOD8/0ncXNtZFiBS2qkyOhGaf3M6KX9Dxl3sXQ0mYpNnMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vbY0JdD2D7/bLrjtltVb5lsca9SVkm3FZqZNwBdOS9k=; b=Va8+PE+DiP/D6rVXJ8RsQjiiaQ2oaIZw8oeDCXgnGpgUxBC/jpPZhG9sWKfiXiJRdkMuuWTy4Y7W4rCqpBHd8zlKj6fHwMQkELZl87Y2tcTAJQ1E5qyv2qqpIYcExZYs9VmC6ShAp441y50PkshcNHHfzdVwNWFXR2cojv6iUllKwFmi88VjOAPJ/HD8kilZxKm1Joe02wa3AGA6nUPNTuShjPvDoyjDy6E8M4zzo+iBCqrDWJSy7LB/zdG1/hBMN7xjKE15YRJD4IhXOUNogfCXY7x2j1DY8HAC8O6nN+SYSD/WruDjAIrIYoImJJyx1f2K2JCsojnH4/xA5LjuFQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vbY0JdD2D7/bLrjtltVb5lsca9SVkm3FZqZNwBdOS9k=; b=w0Dr3no0g9PEdIOY1nTu/jwT4RrJOO96H7ll4frIb8scJ598UXdhLuTI9zrtijLaa9M3+lLKH6scQxoZp8ItweZfyakwyMglCezzneu6OhOaWvoP/x+MD+7tBuY6NDH8GDFGiytIgaPuIdxt0n83R1x1dhE3ujaCJBTcdDbB6eZcyLMNMol1DWnMYwkczTQMU49eXf6poGMe9h8NWY3Shdw2gk5skJ+qx5u5ttVZi6Ym5vK3MTBHiBw7PfiirUWMxPZTRomx7f8wQl0JdJEa43k45CGr2P6wYlsp7SNKD5847gwlqsxwpq+vA2+WNdtbZCEjP/iEr2lFp7gm5d8dyg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by PR3PR04MB7466.eurprd04.prod.outlook.com (2603:10a6:102:87::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.15; Fri, 26 May 2023 02:16:46 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::423a:a30f:5342:9d35]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::423a:a30f:5342:9d35%6]) with mapi id 15.20.6433.015; Fri, 26 May 2023 02:16:46 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 2/4] mptcp: unify pm get_local_id interfaces Date: Fri, 26 May 2023 10:16:09 +0800 Message-Id: <73305af80b6c8b3964acae708bb188d41bdcbfb2.1685067241.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0253.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::11) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PR3PR04MB7466:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c346bdc-71e3-49b5-d6c4-08db5d8f4132 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: j/qwaEqn6uDACFgnwKui5CL8j5n36TEWpCAOVtDO94bNvD6NJK1B5Fp4jgUvN1vX6Nywb4BZQ03ahPvM8EVkgia7a8PPGS1KTLMUSbv32dSKVPE8dAEOn/7DS/v2WLiIRjdrnKB6VVWePTIik675N7VRBvG5DG2tzbB/hkACYAqDfksuFgNu9czluu8oC0+WTt7BZG9Xapiud7/789DUsS6n020JwDdW+6z5vJdJzkJQvaTaux8t6S2EQW5AY4p63tA4NpxzoqH6IR+FUs0xmuWZ/VhcPnpnGrkxNPrT3EoTfGAsLgOW9tNe8Dd448q0GW1DTnFEa9enArLnDdLNUZNi/MV2i+IWmDLTHpaxq4MxkA+624TtPNuz4tbREklCClevY3kfS+SW8KKVfFDzMi/jcXWglsKJ2zLSrNY7cv/M0CLni200P4u/TWJM4ZBkWQgwcIZK2PF1YHrqQZPlBvogEskK7D09dL8yTJUs8z4KokT+lfhulhTDbfIrJZ2m7ij4636UWWDDFWr5+dKuu9IcrFNqDOb8inv8Wxd5ddLhRiH4KusrYrGQRnXfjN5r X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(346002)(376002)(366004)(39860400002)(136003)(396003)(451199021)(2616005)(4326008)(6916009)(5660300002)(8936002)(36756003)(86362001)(38100700002)(2906002)(83380400001)(8676002)(44832011)(316002)(41300700001)(6666004)(478600001)(6506007)(6486002)(186003)(66946007)(66476007)(66556008)(107886003)(6512007)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ouP8yW+J9M8smoEM0eyZUlFYHGZGnT9nFXQAu1k8aHxOyerIBsJhAB6lS1sZ?= =?us-ascii?Q?Jf/mXDM2gFdToW8v0oY6Wz6PdkXkhwPnDqyaC51SbmcMGb4rN7LXbLTj1trq?= =?us-ascii?Q?rm9OE9Pb2RmJNYP46fEHiue0NQskdPMsE9EFHNTWC43xYYH7NvCjjSV90bFn?= =?us-ascii?Q?9rVV2zcTblqWJkbQXSYw9isl/kPKvCv03OeUzMBAyiwIDzf4d5xLPsfk+guh?= =?us-ascii?Q?1/PEjLingXG+KMdtU4/FRyR6cwWXe9URLd1hk2fmuiwuss7LxDK9PRaw6hqc?= =?us-ascii?Q?6ABZQk/cnkoeBcsgKuzbQiBNz9hQr7OF70nOaQDX+gKcVqV8X8Wjt/Tm/6q5?= =?us-ascii?Q?9a2U5GGtElWqI06I160qQYlUsU2VGBhlGcYySjcQkZ6XG9/D/xGbYa3FhhCh?= =?us-ascii?Q?NPJ4+ca61cB1dAH+Zx9Lht+RGknsWy4zUodJ5d0boOOnSU0DLeLqRqf2kbrD?= =?us-ascii?Q?PQ4z7DaVm8xwRjjw1hFn7QrzaAqXXWH1EZGbANyFTEWs3jk8caJKieT2hslE?= =?us-ascii?Q?ATXJqx8G1Nnsy+7J/nI9DiW59QE7gEQw5V5GfJOSPD8TkRGYOTW98s3/tp7j?= =?us-ascii?Q?JKCkMF9yUi0B/EcHScLv5BQmShnoivb4ODJhnJfoMwCortfkqUpejwKfWL+V?= =?us-ascii?Q?/VajOJtLwTpB1pg96tr+99FlstQ2u9gIcSOkEYItWRTHBWT0OPLM7B4EY4A1?= =?us-ascii?Q?RzXdzLZoSs9n2PgzQ65rMMdNOQ4MMMwRvmEUpaGrGIF7iO8nU+HK2lm22UOk?= =?us-ascii?Q?lAGAViAE+5DtggO6vHRmCsMqzpuzZYXZ6hKHaO4JzmmD+hUQgyFfZq12NzZS?= =?us-ascii?Q?kg1NwovzVEGjXDpKJHbLr8PAn8eY/le34ODHjR8QasLGu2RCONQZ4pmoOEP9?= =?us-ascii?Q?4Jo6bi8oiGtTTqpDFq6joMUCocZM/XMaFo4hKNPwrlPQNRB66pGcHgfDpK5c?= =?us-ascii?Q?Q0TW+3cKWSthmVb+6C7TreTmJsukKtsNBv5bo6BAzROXX7+EZmyeeZpt9cnu?= =?us-ascii?Q?D1uDgsvmB6Vlb6WVnObuUmnizt9mFoJyt3RRlTgbDm3cWOUwEgy/X9RREV+A?= =?us-ascii?Q?AVkoW0T+1C4rgub9Q8/3OZqN8ejb3TxgWVRLZXDRMAGQI6qNDUhQ5orn3P9p?= =?us-ascii?Q?aXXxeYUxjIPJgWWTFZHM1qe2enXDdiM4hyZen+l36JJbWnS/vRkjXvoEimGb?= =?us-ascii?Q?A0VkXCrBZ4z5eXj4otIYuPXDP5/KkOTDTVSlIJPUgIC1obXtu215V48IwCk4?= =?us-ascii?Q?Y9CW/HGHhmJsl6MeyzhftbLO30znxPtOwzKrYaNCZinQgVb0NpBHjzaJ0+76?= =?us-ascii?Q?YPkgbXjEhnckTZGDvbElo9XqLdRJQMMDhrxNesf0ygS0IrvylKJuSKjTSNpm?= =?us-ascii?Q?fnW+g8wnEp0EuF5/DZ+ba7vaKE/VsfmHXszb9GuhMWrsFBaK1hg9GwR+GtM5?= =?us-ascii?Q?Npw0yiGGFf3tvAG7OxLmyStY9rBBeua2MAbcD/c1ORt7yIqUcTBGLJ1ws3Ic?= =?us-ascii?Q?JFlfblk2AsipeT0GDcCWceJd08T1c/mtWp8qob6c7KZpQWs5gik+/dklbtSd?= =?us-ascii?Q?HdJjAaEFunKPeZf9mnbvEqgfd0g/FGBq/BP3X1ag?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c346bdc-71e3-49b5-d6c4-08db5d8f4132 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2023 02:16:46.3546 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IdNCfgoi4liSN4eOVjNVGL3XxTlCIO7kCbnfL9Mf8LCr5e3cEDkMjzLnkpMmcru6ImjTGWeOsZgBkPtqp4Raug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7466 Content-Type: text/plain; charset="utf-8" This patch unifies the three PM get_local_id() interfaces: mptcp_pm_nl_get_local_id() in mptcp/pm_netlink.c for the in-kernel PM and mptcp_userspace_pm_get_local_id() in mptcp/pm_userspace.c for the userspace PM. They'll be switched in the common PM infterface mptcp_pm_get_local_id() in mptcp/pm.c based on whether mptcp_pm_is_userspace() or not. Also put together the declarations of these three functions in protocol.h. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts --- net/mptcp/pm.c | 18 +++++++++++++++++- net/mptcp/pm_netlink.c | 22 +++------------------- net/mptcp/protocol.h | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index e7f944d09fcd..f8c23d6a0d3f 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -408,7 +408,23 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, u= nsigned int remaining, =20 int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc) { - return mptcp_pm_nl_get_local_id(msk, skc); + struct mptcp_addr_info skc_local; + struct mptcp_addr_info msk_local; + + if (WARN_ON_ONCE(!msk)) + return -1; + + /* The 0 ID mapping is defined by the first subflow, copied into the msk + * addr + */ + mptcp_local_address((struct sock_common *)msk, &msk_local); + mptcp_local_address((struct sock_common *)skc, &skc_local); + if (mptcp_addresses_equal(&msk_local, &skc_local, false)) + return 0; + + if (mptcp_pm_is_userspace(msk)) + return mptcp_userspace_pm_get_local_id(msk, &skc_local); + return mptcp_pm_nl_get_local_id(msk, &skc_local); } =20 void mptcp_pm_subflow_chk_stale(const struct mptcp_sock *msk, struct sock = *ssk) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 2f58ab49512a..1bb8e7e9c54f 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1052,33 +1052,17 @@ static int mptcp_pm_nl_create_listen_socket(struct = sock *sk, return 0; } =20 -int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct sock_common *s= kc) +int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_inf= o *skc) { struct mptcp_pm_addr_entry *entry; - struct mptcp_addr_info skc_local; - struct mptcp_addr_info msk_local; struct pm_nl_pernet *pernet; int ret =3D -1; =20 - if (WARN_ON_ONCE(!msk)) - return -1; - - /* The 0 ID mapping is defined by the first subflow, copied into the msk - * addr - */ - mptcp_local_address((struct sock_common *)msk, &msk_local); - mptcp_local_address((struct sock_common *)skc, &skc_local); - if (mptcp_addresses_equal(&msk_local, &skc_local, false)) - return 0; - - if (mptcp_pm_is_userspace(msk)) - return mptcp_userspace_pm_get_local_id(msk, &skc_local); - pernet =3D pm_nl_get_pernet_from_msk(msk); =20 rcu_read_lock(); list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { - if (mptcp_addresses_equal(&entry->addr, &skc_local, entry->addr.port)) { + if (mptcp_addresses_equal(&entry->addr, skc, entry->addr.port)) { ret =3D entry->addr.id; break; } @@ -1092,7 +1076,7 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, = struct sock_common *skc) if (!entry) return -ENOMEM; =20 - entry->addr =3D skc_local; + entry->addr =3D *skc; entry->addr.id =3D 0; entry->addr.port =3D 0; entry->ifindex =3D 0; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index d8c9035c44fb..1eb555094a7f 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -933,13 +933,13 @@ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk,= const struct sk_buff *skb, bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remainin= g, struct mptcp_rm_list *rm_list); int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc); +int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_inf= o *skc); int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, struct mptcp_a= ddr_info *skc); =20 void __init mptcp_pm_nl_init(void); void mptcp_pm_nl_work(struct mptcp_sock *msk); void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, const struct mptcp_rm_list *rm_list); -int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct sock_common *s= kc); unsigned int mptcp_pm_get_add_addr_signal_max(const struct mptcp_sock *msk= ); unsigned int mptcp_pm_get_add_addr_accept_max(const struct mptcp_sock *msk= ); unsigned int mptcp_pm_get_subflows_max(const struct mptcp_sock *msk); --=20 2.35.3 From nobody Fri Apr 26 23:55:55 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2055.outbound.protection.outlook.com [40.107.22.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5C57E17C9 for ; Fri, 26 May 2023 02:17:00 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZjJWbqPGbDCktTk4Bc4HNwTe/IXq/qLO0ulz33SskLylSusR1x02mHJmjkYi1t3t5H4Uq8+AxgCH13Wpk53+/DXzubrHnG0eb0t8OByrumls4JyOZoYlEMY6Rm6DljDjun4nhvnMr37pITVAUpagfKHnxfLQpcESeeCdrjbQWyL1jNbeU4mK880DHOvdhJGUav4yp/tnYaeaOagLfJ5M8Gla0rrEqF0LshE+MuXXnxy7QfO8dm/ApPjKfJbEqpBPebffddNNU8DgLbUXV9hFs66Nraq+Du242Pg0j9nGbaEhFzk6D/tqW77hwNYjT4tKpDf4SVusxRAAZl0QKi4yLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=o7snnTHibG53UnYuz7VlUyA1HK34nRLpP8DDHfWNUBM=; b=L/B0vktn8L7nRyORfqmMKBscytTOIwI4wVjN44JxHsWNrLr8ml3830VvO7c3MzhQAZKiD/s+i8Ue/heaJ4+99fQ9shjiRJc004UY+hmp3u0nRd6pGRmO17YHOHXBomUg4iSpxQ3khmD6LHILm8ngP8ifrsw/520Tap3F3DVph0a7YRl70Fk6KMRpP7j0jv0PHcjfEieJXAKMk7tPfRCVR5Cp0o9C+MZYACHReRVCtiBSNdFjOHCZ+Qucz0LurlRLgXzmXBTelA+Y32mi6b9YDbi8V9XygWMjKNUq3TOXTAcrpY/5ACmjBIN0nF4Aai2W7IzkhYQSeCyXQIbXfN3/1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o7snnTHibG53UnYuz7VlUyA1HK34nRLpP8DDHfWNUBM=; b=YUPxbH6ktYXm9eQO6oq0Vl4jxX2AUpCSdHIVfcE1kYoW9dJCp+7mv+g2Z/9OTpzw4bgs54xpTluCrk1fKrSXVH8J3ZkNXIO+5k22yiPuGeVfNpo2DWjF/OkR8NtRiWcmCclipsiCXaQUUO0v4aDqgeM19sTaPdG2Pbhuz+WL8/x5o+LM3mUWynq4I1wFh7EOMN4DPRZCz8IW7/dxkV2yK0KcjvXtDgr8WC6OMq+v+lLpImF7Nmbw/UlK7ydgx+kxm6i81CrjPzSk4zm4U1RV+p9ker+qNnCxMNWzNkDXGeBffleIzvMReKM9eQLHKF+Rx+2QgHdTeV4Ou2SM7hVrTw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by PR3PR04MB7466.eurprd04.prod.outlook.com (2603:10a6:102:87::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.15; Fri, 26 May 2023 02:16:57 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::423a:a30f:5342:9d35]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::423a:a30f:5342:9d35%6]) with mapi id 15.20.6433.015; Fri, 26 May 2023 02:16:57 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 3/4] mptcp: unify pm get_flags_and_ifindex_by_id Date: Fri, 26 May 2023 10:16:10 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0251.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::20) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PR3PR04MB7466:EE_ X-MS-Office365-Filtering-Correlation-Id: 50e2fde8-e36e-4772-0125-08db5d8f47f8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ye78OKvKNP0YJtTiQxyOSUPgkK9IrGolrwmgiJs0q0Q7DaSL8Lse3QPNf00Ubt+fI/h0VQsS1cakYa6JPT1JhxeYFQ+OYsSJIMhSj0vOTMG44Hf1q1R2IsYx/cf6jlu2b21HbS4Sg1jXVJYZk+5640fwlbgjlb+sr+aRHGdNf+WoOXqTZetXKxAE4L14b/aR8JKIxw5NKzFZBakYHgLRYV50tS/t6wrWELPRhM7PDYA/RN0yi7AMqzMAp7mtexCMesreZ7i0NpLdBoDX2YO9g7psFHyOpnA/qauy0Jiln0iMo/0dkA1Tv6dRLg72u0IQbKVOvpnazQYQ5jhVipDIxTqRRijjZBgc/QTZjEi3P6tABTLpJaOSXi47rObp/qZSD1tT4fxMqLbRnw3zecCtfY5jmDH4zMwYli9EK3VupdavFJn02DE4oYjuO1oC0ntrVv5bt/vJ2qhALDCCbUe+crjBZYZxpNvgmWq8Ni6C/pGcPJFUzMB5nJznDFjSbOQFRkkR78vUJ5yi4xm7nTOq5Q/ZCIdEDn4dEWHkHYXCVaB6Ei9ccpHvBT9sDSavyG8S X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(346002)(376002)(366004)(39860400002)(136003)(396003)(451199021)(2616005)(4326008)(6916009)(5660300002)(8936002)(36756003)(86362001)(38100700002)(2906002)(83380400001)(8676002)(44832011)(316002)(41300700001)(6666004)(478600001)(6506007)(6486002)(186003)(66946007)(66476007)(66556008)(107886003)(6512007)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?LBDjx3yUbS+GTGq0TkK9Kzsro+08UsjY46/Bon1V8E8IgJCDk5hW50A3Xhvx?= =?us-ascii?Q?GxyPISGlgheilWk3vWHNR5YkRr8K5M0ybM1P71VrZ/OS9MuloVoVLg7zRh2H?= =?us-ascii?Q?jcIu9tgAY6beITVBSkn6DfainuI3y4NpuMg4ac6WjLGT1PKoQYWiQBWirKk6?= =?us-ascii?Q?dkAkYC4qMPCpPhgcSuYKnddfiZtfpPNRxRangiX2yVSuBItjOgolGaTz15n6?= =?us-ascii?Q?ywRTdgCdH9TYpcnA7rqmmiQ/qesoUNRKoRe92B9cdseyJ8Ot5oXT9YHVR2q9?= =?us-ascii?Q?bso6dxzDjPvRbwKa2swJqzO45Br7PfE1ug9A9kGxsHaKgJPymDJZqGI8sHj0?= =?us-ascii?Q?an4CNY0TjffBJOsxbPlOp/VfYo8YM9rgnq/ebb7960ffUz8ssfY+6epGOtdT?= =?us-ascii?Q?3XsnPcWsOpKnlcg3RJHiJwkPtirPj8auvAKAnaJ8uNuknfTbjdLAfYzI5ozd?= =?us-ascii?Q?cEQAQQOzXN8gfdNhXc6fNZIYr69E0w8OLOJnjmE3inF7d26EXLJZxDQ6LHOF?= =?us-ascii?Q?tx1nG8lWrk1qlpB4zIZhKQinwMh3S/plNs8zvjNN1GE0V7FyGyFSI3kaUwAo?= =?us-ascii?Q?cAw9srcXl9Ag+FHHibqtNrXLfM2ArdHsiqCOdr/xR9T4+daKSuPaK+YvKtTF?= =?us-ascii?Q?GilLmsOhOfA03tPsNOypLZlt7ZalErepuZE5yCMx2uuLdHjjaMyPmD7dpiDE?= =?us-ascii?Q?Xh8CtzleHT2h3oVMUdUM2uUyuUVBql2in3E1DtWQ0zJuWsGlMvYf5TJjwHUg?= =?us-ascii?Q?EPn8IuYTknqHki60RFfFYl3mkPXwTFuHLSxcl8HLFu4kVXA7bhUZp3RNs09E?= =?us-ascii?Q?jzb2r2UnWRczxhy8WF1G+wkBzTI1VlSUhCxWq3sVj0t/QNjt55uLhi+aoyE1?= =?us-ascii?Q?60s700CbZxdWnMispoynfha/UX4qfN/VFzjSxh4jDwDTE2wbUnDMLrqLgO2H?= =?us-ascii?Q?znAB88I17FDi4fSTguPXmvYOABkTsJdohTi78ITUa3Jwc6yezOX4cS2quEd/?= =?us-ascii?Q?306cSzb0LvUs5r6SiHJ/ja8yJC4fTwfOLIiessz5DP2Os8kZdeE6kWkvNtTc?= =?us-ascii?Q?ebi81MBXoJZA6Uqazy+SpnNQwfiJFRzYWoG3aBUUDfTPxCS6PGfRv4ib3nJd?= =?us-ascii?Q?3f49kXkV3LITJkPKC+F0dzjnnSXHGpUroEEjpi6MW8XqKhAFxQ6ZjTDra0AU?= =?us-ascii?Q?XGlcRuR55dmLqizb8AogBoOzYWj+ztHYzHvrUdB6k1UTZ36tJpmjaAovV0Ad?= =?us-ascii?Q?m28dHhpD8mQmpJ2HHw+m5alxfBtKdM9xOEc+MKZvc3JhJDoqyLs1NRkMvm+C?= =?us-ascii?Q?xuEEsEgxohaWtcyThR08Jte0dK458LXTvlZ/2Lxn33bTqetR1VfWuoQANhOk?= =?us-ascii?Q?gkMrjJ+0o3/TR9E0x5zWoJ+qFZvkAXoozOEHJJEitDofX3KviCRBCS2XKX2m?= =?us-ascii?Q?hfQbJTNNkt9W2VxHtsj+2V3Y4oSMrYTLKNlJNSfcDBfZxGdDXKFb7ZCEA1gv?= =?us-ascii?Q?wFyqfDYgVPb+QgpRO3iKv44p+2BbOabOtCQP0kloo30xTpiPeXtHge5aXygZ?= =?us-ascii?Q?gDb+hcYziGnZlpjDnwyON0m6EOkBZoVWdHlVJ+1E?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 50e2fde8-e36e-4772-0125-08db5d8f47f8 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2023 02:16:57.6445 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mPseIEZ+iTa/7birFQoexhqnneoEno0qIAZqVroZqHqL2afHDDcaiAIwfzcbGXWMJ4jEjZcBoxtwAZjnt6M14A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7466 Content-Type: text/plain; charset="utf-8" This patch unifies the three PM get_flags_and_ifindex_by_id() interfaces: mptcp_pm_nl_get_flags_and_ifindex_by_id() in mptcp/pm_netlink.c for the in-kernel PM and mptcp_userspace_pm_get_flags_and_ifindex_by_id() in mptcp/pm_userspace.c for the userspace PM. They'll be switched in the common PM infterface mptcp_pm_get_flags_and_ifindex_by_id() in mptcp/pm.c based on whether mptcp_pm_is_userspace() or not. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts --- net/mptcp/pm.c | 14 ++++++++++++++ net/mptcp/pm_netlink.c | 27 ++++++++------------------- net/mptcp/pm_userspace.c | 3 --- net/mptcp/protocol.h | 2 ++ 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index f8c23d6a0d3f..74b81d5ca4ce 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -427,6 +427,20 @@ int mptcp_pm_get_local_id(struct mptcp_sock *msk, stru= ct sock_common *skc) return mptcp_pm_nl_get_local_id(msk, &skc_local); } =20 +int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned = int id, + u8 *flags, int *ifindex) +{ + *flags =3D 0; + *ifindex =3D 0; + + if (!id) + return 0; + + if (mptcp_pm_is_userspace(msk)) + return mptcp_userspace_pm_get_flags_and_ifindex_by_id(msk, id, flags, if= index); + return mptcp_pm_nl_get_flags_and_ifindex_by_id(msk, id, flags, ifindex); +} + void mptcp_pm_subflow_chk_stale(const struct mptcp_sock *msk, struct sock = *ssk) { struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 1bb8e7e9c54f..a77029648f36 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1353,31 +1353,20 @@ static int mptcp_nl_cmd_add_addr(struct sk_buff *sk= b, struct genl_info *info) return ret; } =20 -int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned = int id, - u8 *flags, int *ifindex) +int mptcp_pm_nl_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsign= ed int id, + u8 *flags, int *ifindex) { struct mptcp_pm_addr_entry *entry; struct sock *sk =3D (struct sock *)msk; struct net *net =3D sock_net(sk); =20 - *flags =3D 0; - *ifindex =3D 0; - - if (id) { - if (mptcp_pm_is_userspace(msk)) - return mptcp_userspace_pm_get_flags_and_ifindex_by_id(msk, - id, - flags, - ifindex); - - rcu_read_lock(); - entry =3D __lookup_addr_by_id(pm_nl_get_pernet(net), id); - if (entry) { - *flags =3D entry->flags; - *ifindex =3D entry->ifindex; - } - rcu_read_unlock(); + rcu_read_lock(); + entry =3D __lookup_addr_by_id(pm_nl_get_pernet(net), id); + if (entry) { + *flags =3D entry->flags; + *ifindex =3D entry->ifindex; } + rcu_read_unlock(); =20 return 0; } diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index b06aa58dfcf2..47a883a16c11 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -111,9 +111,6 @@ int mptcp_userspace_pm_get_flags_and_ifindex_by_id(stru= ct mptcp_sock *msk, { struct mptcp_pm_addr_entry *entry, *match =3D NULL; =20 - *flags =3D 0; - *ifindex =3D 0; - spin_lock_bh(&msk->pm.lock); list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { if (id =3D=3D entry->addr.id) { diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 1eb555094a7f..5bba863c5167 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -838,6 +838,8 @@ mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock= *msk, int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id, u8 *flags, int *ifindex); +int mptcp_pm_nl_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsign= ed int id, + u8 *flags, int *ifindex); int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id, u8 *flags, int *ifindex); --=20 2.35.3 From nobody Fri Apr 26 23:55:55 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2057.outbound.protection.outlook.com [40.107.22.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C03EB17C9 for ; Fri, 26 May 2023 02:17:10 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XPjfeMZ18HMrPvbYnc0o6KYPZRbSaGJSaB675WzOcWmytuVg0ralP53snbgEwZjz1DD3ZBT/GlQZVCJKxKoj0PyRdMWGXsxH5XpvnvwHmLtJ/QlXg/SEGyJ1hB3CCpT3ZTrEnXta710JUHuEcJtkPiFnJMPtfVjRJZRXgjJin22RTjO4thfkd/Mhz0fmFbT83K+PuU97fwJh0C+7th6SrOu7UHY8rb8OnnsGW6+4dUhrH5c/f9Y7g2BrqMx04AoNmONbBl0gxDlDHdrqjWNxtjuzJ2eDjqgQviVcQlEwvZwjYVwxhVX0T/fnBkLA63WFu31LZOwrErZvh77YjcPF8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KMoxC37btIoNVLrRHzUuVNInNvDPjhJ2fZUUfDW82Rs=; b=NlZ5y5N5JCQzfLTlFLxF7smbWJmQbV4D3Je88wAuJA9e3cG1r4ssMQQ9H/dFjwS6AQJqdjOCrj30OsMWUMprpKiX0Fu4oXZOs2LrR/Hkr3miwCzSBQTFbIm8YWoj2N0GNrKKSbN9v1myYyi8o+0x2q2T4KCoOyepQXv4NPXNQakEqNGdX+i7ijT5DR5VKXnml/vtrGupy6ybYke6pE7FHqb7tmvUn+vaZaBgxkoiWyFnDneknqCv3bEdbHubRvNOnKfQB17SlVNS5JAU8+lM3ubuOOPXG6qPxOaZQIqs7XdbUuQY7MP7L+n8gTkNcoqA6gcTM1UPLgqIy8nSa087IA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KMoxC37btIoNVLrRHzUuVNInNvDPjhJ2fZUUfDW82Rs=; b=tUuWrH2rAxYmMb2W4fr0RivUd1YileVqXV+dt1lkV+M12tZoIftFLolgA2rxAmExpIqme660eqWAquZJ0OxqJOROQC2hbKYoNF6u/ymtq5O4C3bn8uxdUe6OYkn/Rb0hlM8uyIEiNgW5Qt7RnrGYm3R3xvdVj9HHx/i9a8lTwVIgO5s9CSJqexW7vVmfMXRsT99v8DgkfcC7cqF1LUjeTiYPFtSsP0UEtY9eK4SrkmwCWbK8AVV7HZ8kJu7PxQfhFqcDCFRg7NO5vZJsfv86OhA/HZwo6+ASJsKCuT0kxajGobNf5wV2FGEy7KNJteGZCr9Dpb53j4ROUuwMJyolhw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by PR3PR04MB7466.eurprd04.prod.outlook.com (2603:10a6:102:87::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.15; Fri, 26 May 2023 02:17:08 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::423a:a30f:5342:9d35]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::423a:a30f:5342:9d35%6]) with mapi id 15.20.6433.015; Fri, 26 May 2023 02:17:08 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 4/4] mptcp: unify pm set_flags interfaces Date: Fri, 26 May 2023 10:16:11 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0241.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::6) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PR3PR04MB7466:EE_ X-MS-Office365-Filtering-Correlation-Id: f4230df4-3643-4d86-31c1-08db5d8f4e60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IYyocQL/2033fRXJEIBjCgQM5lVQkij30E01Up/ifcJtgB2Q1cLMl/AkXTbqffj4sIRr5YWNQjbdrLG2FVJzQyJtssxlIMwfaHjL5QlSc5wE/uNjfm+PTgbtXHm8ro2ZftrdghuBA06P9CiQ8J6dgTY0BOrmT17fMF/cm39OGY1HZbwp7kkfoM1GT7QESB5zTdiWFXzOpQvHIIc0r1gibJDQQ+ZlXu+uxpWe6RNSwoC22h7wFtujK8ZxXdvvJbyz2H1Xh9M9DXKGjTT1f9cHRRXU8R8psDi1scdzmCKPbGnIRwXAUYaj/8zyeji6QpWxVRj2huahfXdmyetAWSfl19aYnjWiHozTBrYCfjP8XALEgoQ/8RYx0NQU666ywIokVNBDRyNUQSkvyOXTF3vIQmQIR3hQ84c2tXXstDXDYSvGjppFzbz7sgmKU7W0Tu4huo9W4QXuJHQl88DYCih7Ef16p9/tsWCgL1ASb0dOkGleXoorQTmcCTTiO9hBAp3lnYrJFmNemZenhpmXT2bKgfB0Li1EOPOJ4xFDCYnpMk5ad/yCVPRkd386Q/Dq3dVb X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(346002)(376002)(366004)(39860400002)(136003)(396003)(451199021)(2616005)(4326008)(6916009)(5660300002)(8936002)(36756003)(86362001)(38100700002)(2906002)(83380400001)(8676002)(44832011)(316002)(41300700001)(6666004)(478600001)(6506007)(6486002)(186003)(66946007)(66476007)(66556008)(107886003)(6512007)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8LxROtWbpBT6Q6U/asOOxD+ojGgpq6OPKc7wRq2L+j7CLFKNsKUyqN1A+XuR?= =?us-ascii?Q?ZQWomktcVqCOppRyt0Sp4+7i1vtXOpYbWU9zi6/ICDTmwTdQA2Ls7xYH6IN2?= =?us-ascii?Q?CID3KMYTxcF6TsZJYreZkRHTAFR0izEZe+pqmTV1guM+ToHEBPNnDMknZatP?= =?us-ascii?Q?itbXna7FCW1czdEPc4rgxqjfbvkhO6807t1sD83PlGHmqdjRuxeX0r+LWOg7?= =?us-ascii?Q?hQK2pAgyx7mV/fBTXusorAG7wP8dEERK/P/S4u4Je+YvziKj60aH9dzUJJYL?= =?us-ascii?Q?sECXDT0LRWbiAbVD8o1WX08KlIWvdi5zcOOX5Nc/q4W4k2gPBXicE+JxjfF9?= =?us-ascii?Q?c6zxYNfz+fQ8gFZslxahn76i3UMnZ19d87Buevt5dJaO1p/vZFPoJI8m5lzV?= =?us-ascii?Q?a1dhSgbHvfz/bFGMKDFDW4if919BykwqSO/SbsOIgvWb6C7adX9wdirKt2IX?= =?us-ascii?Q?iTqzNTha02IZSWPOFstIcNAot6Z/irb0sZjjaNpm0ZyKJezcdECYrp3ANdxt?= =?us-ascii?Q?aRbnBdQUfp9RvU0Ff2RYe6GfYWMdQajbJ9gcaEaUe4UKoFA5I0u+jYXItb+X?= =?us-ascii?Q?6GhViTSOm78Z+Pkc3eYNelAs52TnbXmaHJ3KD1hWES7kvdULB/66wAG+J3EJ?= =?us-ascii?Q?4f1kBbS1Stm0oamijRf0SbYOmEFlqdq6DrfiECn36jeVBIzyxENV0HLLU9lL?= =?us-ascii?Q?YCpqPX+lhf9cFbDQkS/ylpmLvXJkcM0+nPr1c3Agmjk7dqWp/I5dOSJjQu/C?= =?us-ascii?Q?jfrWLNjZuhfrzRzUaUmenIe0P3nlbju6xzCZTl5pb4igGhr1q3Tx5q12YISk?= =?us-ascii?Q?4jmg00KvMQ2woRfYmozoYHmO4CagWwjT8hcIIQGQqfUVcliJYQwBU1kq3Odb?= =?us-ascii?Q?LdqZgIwFMrskp/oNbmV77aFGNBaTvolZ3qOIpjz4MJYdMiNiFLAdZuTztuHa?= =?us-ascii?Q?tjXKTdk84hxaA7u98jP/HY8jTSOFKrHsW0epqFF3gmlhlP5Bk6SdSfGNWkh6?= =?us-ascii?Q?Ka+LUCUc490gyyGnNMwVBpMDdEqGA+CHwWx9i4mVeHjHdF7fwYF6kGbSTNh9?= =?us-ascii?Q?ilwRzwES5MnJJp24w42cZhR7Zt4+vAngMRkagvLWLI9r7FBljIYsVyWmVRQw?= =?us-ascii?Q?WugLV9h+KoayUqd5Br7iumyRUCYgeTSAafO1/NHksgnAC4LqRMctX7aWHGpO?= =?us-ascii?Q?+yf4A0YINUv6vd67r5Vq9F95et786noLB603XApwV0e6ObDA6zHysJ8M+coH?= =?us-ascii?Q?EfkcEEHqygizisNojmKhRRqpVsmc/kcP/OPqNvi+Jgg2pysoHk1hsdSXFADu?= =?us-ascii?Q?dsnzho2sm9TC+QrJRAkRgM0K5D2mRszNMhO5gol/cFF80cmzvJXZmSVD98R2?= =?us-ascii?Q?Gsdv/eunj4UQLF5INWJkmtBh+INB23Mv/QQYe20QxZzcEoc7B2oj4JfiSWSb?= =?us-ascii?Q?Qz6IeZS5JsBVsdBv9fxizqCHnE8lbbFmZA7vPKwPrHAG//dfz+LdQAHwOU4I?= =?us-ascii?Q?Jaew/L0zNywMSaQQ/bBqJJkFTzqqmaWfh4/alRsxKvpycNmiUa2+iDPZV+g3?= =?us-ascii?Q?r/XZFMRQK5OuSwsQ+0yzaQITmlEn837FFfKuxDI3?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4230df4-3643-4d86-31c1-08db5d8f4e60 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2023 02:17:08.2793 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZFJvK3gAbkzFjIIM9TF3ebrHuLCo8y4HOuSXrKmQMxfgYvd4FovUo0UntJD5+eS0OmJaVyfCFX0X0h8Sm0uWug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7466 Content-Type: text/plain; charset="utf-8" This patch unifies the three PM set_flags() interfaces: mptcp_pm_nl_set_flags() in mptcp/pm_netlink.c for the in-kernel PM and mptcp_userspace_pm_set_flags() in mptcp/pm_userspace.c for the userspace PM. They'll be switched in the common PM infterface mptcp_pm_set_flags() in mptcp/pm.c based on whether token is NULL or not. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts --- net/mptcp/pm.c | 9 ++++++ net/mptcp/pm_netlink.c | 70 +++++++++++++++++++++++------------------- net/mptcp/protocol.h | 4 +++ 3 files changed, 51 insertions(+), 32 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 74b81d5ca4ce..d8da5374d9e1 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -441,6 +441,15 @@ int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_= sock *msk, unsigned int id return mptcp_pm_nl_get_flags_and_ifindex_by_id(msk, id, flags, ifindex); } =20 +int mptcp_pm_set_flags(struct net *net, struct nlattr *token, + struct mptcp_pm_addr_entry *loc, + struct mptcp_pm_addr_entry *rem, u8 bkup) +{ + if (token) + return mptcp_userspace_pm_set_flags(net, token, loc, rem, bkup); + return mptcp_pm_nl_set_flags(net, loc, bkup); +} + void mptcp_pm_subflow_chk_stale(const struct mptcp_sock *msk, struct sock = *ssk) { struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index a77029648f36..ba1406e601e4 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1879,18 +1879,50 @@ static int mptcp_nl_set_flags(struct net *net, return ret; } =20 +int mptcp_pm_nl_set_flags(struct net *net, struct mptcp_pm_addr_entry *add= r, u8 bkup) +{ + struct pm_nl_pernet *pernet =3D pm_nl_get_pernet(net); + u8 changed, mask =3D MPTCP_PM_ADDR_FLAG_BACKUP | + MPTCP_PM_ADDR_FLAG_FULLMESH; + struct mptcp_pm_addr_entry *entry; + u8 lookup_by_id =3D 0; + + if (addr->addr.family =3D=3D AF_UNSPEC) { + lookup_by_id =3D 1; + if (!addr->addr.id) + return -EOPNOTSUPP; + } + + spin_lock_bh(&pernet->lock); + entry =3D __lookup_addr(pernet, &addr->addr, lookup_by_id); + if (!entry) { + spin_unlock_bh(&pernet->lock); + return -EINVAL; + } + if ((addr->flags & MPTCP_PM_ADDR_FLAG_FULLMESH) && + (entry->flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) { + spin_unlock_bh(&pernet->lock); + return -EINVAL; + } + + changed =3D (addr->flags ^ entry->flags) & mask; + entry->flags =3D (entry->flags & ~mask) | (addr->flags & mask); + *addr =3D *entry; + spin_unlock_bh(&pernet->lock); + + mptcp_nl_set_flags(net, &addr->addr, bkup, changed); + return 0; +} + static int mptcp_nl_cmd_set_flags(struct sk_buff *skb, struct genl_info *i= nfo) { - struct mptcp_pm_addr_entry addr =3D { .addr =3D { .family =3D AF_UNSPEC }= , }, *entry; struct mptcp_pm_addr_entry remote =3D { .addr =3D { .family =3D AF_UNSPEC= }, }; + struct mptcp_pm_addr_entry addr =3D { .addr =3D { .family =3D AF_UNSPEC }= , }; struct nlattr *attr_rem =3D info->attrs[MPTCP_PM_ATTR_ADDR_REMOTE]; struct nlattr *token =3D info->attrs[MPTCP_PM_ATTR_TOKEN]; struct nlattr *attr =3D info->attrs[MPTCP_PM_ATTR_ADDR]; - struct pm_nl_pernet *pernet =3D genl_info_pm_nl(info); - u8 changed, mask =3D MPTCP_PM_ADDR_FLAG_BACKUP | - MPTCP_PM_ADDR_FLAG_FULLMESH; struct net *net =3D sock_net(skb->sk); - u8 bkup =3D 0, lookup_by_id =3D 0; + u8 bkup =3D 0; int ret; =20 ret =3D mptcp_pm_parse_entry(attr, info, false, &addr); @@ -1905,34 +1937,8 @@ static int mptcp_nl_cmd_set_flags(struct sk_buff *sk= b, struct genl_info *info) =20 if (addr.flags & MPTCP_PM_ADDR_FLAG_BACKUP) bkup =3D 1; - if (addr.addr.family =3D=3D AF_UNSPEC) { - lookup_by_id =3D 1; - if (!addr.addr.id) - return -EOPNOTSUPP; - } - - if (token) - return mptcp_userspace_pm_set_flags(net, token, &addr, &remote, bkup); - - spin_lock_bh(&pernet->lock); - entry =3D __lookup_addr(pernet, &addr.addr, lookup_by_id); - if (!entry) { - spin_unlock_bh(&pernet->lock); - return -EINVAL; - } - if ((addr.flags & MPTCP_PM_ADDR_FLAG_FULLMESH) && - (entry->flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) { - spin_unlock_bh(&pernet->lock); - return -EINVAL; - } =20 - changed =3D (addr.flags ^ entry->flags) & mask; - entry->flags =3D (entry->flags & ~mask) | (addr.flags & mask); - addr =3D *entry; - spin_unlock_bh(&pernet->lock); - - mptcp_nl_set_flags(net, &addr.addr, bkup, changed); - return 0; + return mptcp_pm_set_flags(net, token, &addr, &remote, bkup); } =20 static void mptcp_nl_mcast_send(struct net *net, struct sk_buff *nlskb, gf= p_t gfp) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 5bba863c5167..87c996e018b4 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -843,6 +843,10 @@ int mptcp_pm_nl_get_flags_and_ifindex_by_id(struct mpt= cp_sock *msk, unsigned int int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id, u8 *flags, int *ifindex); +int mptcp_pm_set_flags(struct net *net, struct nlattr *token, + struct mptcp_pm_addr_entry *loc, + struct mptcp_pm_addr_entry *rem, u8 bkup); +int mptcp_pm_nl_set_flags(struct net *net, struct mptcp_pm_addr_entry *add= r, u8 bkup); int mptcp_userspace_pm_set_flags(struct net *net, struct nlattr *token, struct mptcp_pm_addr_entry *loc, struct mptcp_pm_addr_entry *rem, u8 bkup); --=20 2.35.3