From nobody Tue Oct 28 17:47:26 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=cyberus-technology.de); dmarc=pass(p=none dis=none) header.from=cyberus-technology.de ARC-Seal: i=2; a=rsa-sha256; t=1759764252; cv=pass; d=zohomail.com; s=zohoarc; b=IIP7xquHYqkdFTl1fzg/JeuKF8H9XxjDo+DnLaMBZ+AdccmM6PowYW8q/rDYSS0SbL3biGngC5yw+Czgf2sStWWqxD1BKnurKqBaDZY7eF7ctCAfvnz4q8bCXNh4lzvpS5beA5hKUGyMvfx0rI4q4rfHHLgs3dwBhfjTFLPbbr0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759764252; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=VgE1j41QYU7QHuH3RX8K4FMUL+l1sj3H716u0jNTZcI=; b=WNKIyePjWqyT0053F/k6RPaQyOPx3RUKGGYqkLTjuhq1upu6slp/fzZohGnsb7wxlgqy/Pgh7wZTMUarAdHSEXQejijqz7oqLeZaLwoWNlGpQI87GYpUvjNGYIk451XaG4l8W3gOxiYF+Jwpg7APLk7285yhokYWIs/adJ/IIS8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=cyberus-technology.de); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759764251712166.89445992018545; Mon, 6 Oct 2025 08:24:11 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id B3B4544339; Mon, 6 Oct 2025 11:24:10 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id E935F44415; Mon, 6 Oct 2025 11:19:49 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 5FBB441BD9; Mon, 6 Oct 2025 11:18:25 -0400 (EDT) Received: from FR5P281CU006.outbound.protection.outlook.com (mail-germanywestcentralazon11022089.outbound.protection.outlook.com [40.107.149.89]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 11DD541E45 for ; Mon, 6 Oct 2025 11:18:21 -0400 (EDT) Received: from BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:46::5) by BEYP281MB5624.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:e3::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9182.20; Mon, 6 Oct 2025 15:18:18 +0000 Received: from BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM ([fe80::7272:f32d:eb8d:e401]) by BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM ([fe80::7272:f32d:eb8d:e401%3]) with mapi id 15.20.9182.017; Mon, 6 Oct 2025 15:18:18 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=ARC_SIGNED,ARC_VALID, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=keULy/HIUohMCCzqWCxF6G4T/UFb3O1Wu/+5ZXfI0EK2eiHHGS+gp67DzaYxlLJa4qgd+r/UfJ/7lLigiJc7Irk2DNZtCoAvSSByzpzJ0aTZKe9PGDKTrXcdSTmIlvLsawxWzvWi5f0/YUlpXqi2eahP4D4o32CyfuXZOohdCJhCHnMemCDZ+0nRpvhXU95sbKyXj760LzUdPhN6gniSu+/nojQ1slzRyaa1gAgtZ7kclivp7dRu3Ij5VvEwwt+UuBQ016fyuhrQImNBxyexQ6oy4BXQ+jyXB2kUIwl/rJMuynezuNH5sc3rX702B90A/lJoD2scwKOEql41q0ZQUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=VgE1j41QYU7QHuH3RX8K4FMUL+l1sj3H716u0jNTZcI=; b=N7bbuPh7yLvec6Vd1IvJGB/1HmO/SZ9vgkG8zn/9ZYc79ns+jc9eU0bhtDASFSvYosWEy0vxOs8onfwenRhPmBy7ekrxCATZXzfk6pm+8ei5qY/aQ+Tb0DTHSHJcbmpG6Wqv14M8xB7/byPcdytyniZXK6KJPEgwVoLV2YMFGGlcQyF/4TontAzNYUEm8znJhGFTivWmY/z9KsAbQZ3KY0zdx15lxCir8sYJNsxAwB07PU1HN5RQrTMA7nZtG8klsKZJDCC6PjV+zqBGy9EZqO2OrlXKSLbMSV5eMmgdGld4XQKC48k0jqNdDtgLdwYIfAbxMysw2MuGGJBowo18gA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cyberus-technology.de; dmarc=pass action=none header.from=cyberus-technology.de; dkim=pass header.d=cyberus-technology.de; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cyberus-technology.de; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VgE1j41QYU7QHuH3RX8K4FMUL+l1sj3H716u0jNTZcI=; b=XhSg8+VT2nQ03BjZ+Z73toFeDWBEcTqNAg1QytHEF4sH1rA9tWt2po9WvKQzDEBBWfmEz1YSy1+Hdc8a0AU8dIXGfPQ/w98SUgbKUPPUISLw7H0y0BhjygCvUmf35aLw2s5pQyboZxDrzLGpWjhCH4pvF4/uHgir64kx2uVKF/Ysu55LZWuTeeyW2OzmS0wV89I1FRwjeIn4zfxE9WGnqxwzcksaDw5BfVxDhQx2FtWurnUJWN7O2aXzcI3Jph7MV5sMvDGynqT/BdauHj2khonw/smzIF+Oi0xUuYVEzKKfcqs0PChP3Wszv21AXbZY4m+Oa6bPfCwTgUkBwd9GPg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cyberus-technology.de; From: Stefan Kober To: devel@lists.libvirt.org Subject: [PATCH 2/5] ch: add net device alias assignment Date: Mon, 6 Oct 2025 17:18:08 +0200 Message-ID: <20251006151811.244611-3-stefan.kober@cyberus-technology.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251006151811.244611-1-stefan.kober@cyberus-technology.de> References: <20251006151811.244611-1-stefan.kober@cyberus-technology.de> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR3P281CA0046.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4a::12) To BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:46::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BEZP281MB1973:EE_|BEYP281MB5624:EE_ X-MS-Office365-Filtering-Correlation-Id: db221281-14ce-46d0-9f6c-08de04eb942b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?O3kltFi/3OK46ynkEKETqCQMM/GBRyWqRZ1KiuFsB2i65PuD/h0FR/E5ZlR2?= =?us-ascii?Q?Y2iHa7xTkmrxccv6bgJee5lING9Db3TwgHt2bcfCcwqjjs4yXE5ObGp/9U/s?= =?us-ascii?Q?79CH7OmCMnClzhF2MBhoh3/KZYwxYop13dpJkmjZxcCrogn2MEvJ0XUkwiKb?= =?us-ascii?Q?1Oiv0GrUmMYCIsAfTGeXrhfqAZ6BmhH4WMmJY9z6XmnLj94k+8Rb1bj5/pim?= =?us-ascii?Q?ldq7aMkJPNI2JWGfFTyzeXxfQHxfzzC3OVnBPvLDQDiDlXqNOhH+wg1K4tXP?= =?us-ascii?Q?a3Vh6Zewn5LVL2Ng9BOGNmMg6MO2QnOQkRI6pMM7pKxwwxg1e/kQXYNt/Jgx?= =?us-ascii?Q?hs7oXKqOr3A00NYLg8iPVOxLcWe3Ha37RDiAIOE7xPW27MGuU70VI4vcJHKR?= =?us-ascii?Q?W8QPwhM47+JGG84OL+Mi5YV+tmT9JrVymcN7Gfp4B/vpz5fWBL8HPKR4o0zF?= =?us-ascii?Q?NKpxQS+23Xr6+ofCnsPtKQZWLxzVVApWqnm1lHZiO2Qj1DmuwddvyBIij1Qh?= =?us-ascii?Q?T49homa7fWhlpIa53RTjqfSTpeux88A9z3iksRRM3mQD16yuzlEFtAb1pb38?= =?us-ascii?Q?XZFyC03sQe2o75cyxsqfQk4lCMFyVN8N28rpSvewWT2zUsSlSzHVSUF7Zw9o?= =?us-ascii?Q?KMDMujR7Ttp30HNWWB+MfHYxNJ0Gez2bKDDPFa5EtbRR0eL0QzJ2Zxk8s4MW?= =?us-ascii?Q?lv6wpuhvkwfoTFB32xAFT2H5H4lDcFahC4teu2ms5gIj2wRtY41MxXU3GVRG?= =?us-ascii?Q?Gk3bqyJztNhdKfprm0RHwdsN4F3Ix6DCmNLd8EAyg43cUFxBsni+OA59TkzM?= =?us-ascii?Q?rSKI3w8BWgmTUaFFCheS8TPEUJtT8A3UMs0MbpTvQ9/AegAYxTdYA2VjmgmA?= =?us-ascii?Q?nDMSR4xuNP6HpP60jooj8B2HxnhNwirDuatVUeu7WSouYXYO8KY9YQ1tN0hz?= =?us-ascii?Q?NAWV0Hd65kq8CbM97bgG9bz006oPZdI0GPOPoaoB6xzitJOwI7inTdzYdfRa?= =?us-ascii?Q?gJWgTFvdb+o+HALLaJcV0kU4R9XQxQqqsZnPadgIfSe4A4wfAaiE7r0q8JUf?= =?us-ascii?Q?WUHlECOW3PTOSBDP9ZSuY05BWIu0QNqEiHEc+tKuNKl8ffOD+g482SfoPURT?= =?us-ascii?Q?swPewlbwqC3aF8ExvBi3GRbSHjv2CeW6LmplMkC9p1bbEWYJqzUuAC09Lfsm?= =?us-ascii?Q?LN+xIDxrQZcGzA2Sk3ACBvRbIGJcpWeRTwhnrNlGQhHqQDhkyQ2VIcrmjwwi?= =?us-ascii?Q?jh474heR3U2F/STFq+HiC7u5ch2MWoyhWqd2KuxBgPDiDN5OhUPFtp9e08Qo?= =?us-ascii?Q?apM1iOT+DxDHZrk36uRFMoc4dWNscxdBBYF7JKPVEkgcj/ToVjYCAd3hoTUl?= =?us-ascii?Q?W7iHU9ZH73Fqnq0L6zakQq1eQl/XspPzLsZp2srA3B1BsLNsbuu7nxJTIp+2?= =?us-ascii?Q?lJ5W/Yc6+6dxfzSh7vJPwYumVlyXDqNC?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(376014)(366016)(1800799024);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BTS8gEVrOamAfibHVKaox3JQoTNPpKd2F6bmIpEUPNUaIU+mhtVspWwgRG10?= =?us-ascii?Q?aNuNHqBUXe3mmgRd1qj4OLnEhUlAo32eCg7AOk/cZscvKiNRsxTy1jYgjZw6?= =?us-ascii?Q?MpAVGuKhk+XdEsgJO8mpnedMTEKWavueYRSFkios/6dhKwx1+Kujnph0jft+?= =?us-ascii?Q?wqlJ4ESLunBwtDOv06qW2jc8D+ebR6aCQj/vvVUblgF2hPK2K4/zpl7pvqOz?= =?us-ascii?Q?695Hyakom9qNJmgHAtf3hOI/8MvsGLSiBrdkbFkIUUldf7QETxO6HqqPpBHB?= =?us-ascii?Q?hpCCOn5PeC7CUOOCL6+tkPif7ruafNCONxPJF//oTgGI845B/eOCF+4QYOd/?= =?us-ascii?Q?uQTQbpCh4PwfqiCMfvx8bWNvqLsX1zBjHifp7+ZG3jLSki4yoHQc/SZa10kL?= =?us-ascii?Q?3fTacjVcC7v7V7+7G1aJGzNuu3rxRg3EZCvspDXfytrbrgI5RR3ZgWPob8aC?= =?us-ascii?Q?OxCv346wFrfwLPdeTYhoCWpF0Mq247JiGPN5fVArEX/FItuu2MbOgO25Tlt0?= =?us-ascii?Q?b1KqolEBWRBCF1lUlD7+zlLNNOC63IESFIkFP2PvK1oefzt34GtYpW2gjnOD?= =?us-ascii?Q?UiRIolV3qzzgNHtGY+UEQJJ4DU6MF9PO79AHu3Ue539+LyRlwYWyqpb5S1y7?= =?us-ascii?Q?AzddChaeCpcQNaHta4YhgS5UZ5bqVCiBaO5MeVm5frl/W/tXbPCxpSsdbXTj?= =?us-ascii?Q?CLHDzGjusYeuO1WxFcH1RkdZEZSRfO+IEaU1dXnpxRrnAMJ4ZD6PZbhKedlk?= =?us-ascii?Q?1A89BC3vgx4je2mh5UcbnP41lKghyJgvmOezZLHeTYJ2RK68xc1CjM+i8+0h?= =?us-ascii?Q?HinMIEkqCQT5lwXA1CPcl92nra5akN/WD+NjUYVgVr0l+KFcXzFthMCDYT7r?= =?us-ascii?Q?TTUmiPLllB1grz9CGUUrpa3R7L2BBUyYDSOoxBy92JJqov2S9wW6zGeIdbq9?= =?us-ascii?Q?R9/IyBxDtm71/QWBtfomgza62pJsrw3nv6fuflN5urv9FSoGx/ej4XAbk/2A?= =?us-ascii?Q?KXAVRm6XobkFexmsKNl9S5Y+caoKIwhVUL2L2fi/nkbpeXWuJsC6OXQbOBWH?= =?us-ascii?Q?Vmz991svqq3iukz4ifA1z8wJtApbpJJe37YBEIxZNnwndHJA99zlx6MqDBrn?= =?us-ascii?Q?6KT5OsSB4kbe/zeqdqjwHtOZNjG7cNGeRXyeWyQyjo4izt89Dzdjyfo3BmU8?= =?us-ascii?Q?mhKTW5LQ9ZM9Rvc9tiC1/A09SEfGAeJ+w7JfRMVsMSaersI52/Mts5eVZni6?= =?us-ascii?Q?TTC2JV1+mAuY5b9tVl+CoJisIHUCGBn+hf3BiK6VCM2L4ysYrK3PN311/wV3?= =?us-ascii?Q?lc+uLPjKOzGHRDYc/tiVqMFUXGAt3uT5ebTsj1QV008jEGtLb+9ItF36e9eM?= =?us-ascii?Q?KcNjVZJeHLkZDggG5uGeC9/B7+OcwgijQC20RZ6MjOEHjEsT95vVIPMgRwWq?= =?us-ascii?Q?iXKOaZ6iwsIZvwfoWFvtH10mT6/YXi40z8rHrk4qd0CgPifuZNeB1qv1Y0HL?= =?us-ascii?Q?Sp/zeNLfvnwL3qPgLC7x3mEkoga9df3lNUNHU23VzC0kUAIYjzAHhN76ZMjx?= =?us-ascii?Q?t899pztCP+EKML2SYQ70T5PKBSaglmoJG9y+rSNoMVkSjwYyzQVvTjQDHB2L?= =?us-ascii?Q?PPkksuJ+gWAYFlM+mUwN0v/uDTfQPT0ekXxZu7xpk7Mm?= X-OriginatorOrg: cyberus-technology.de X-MS-Exchange-CrossTenant-Network-Message-Id: db221281-14ce-46d0-9f6c-08de04eb942b X-MS-Exchange-CrossTenant-AuthSource: BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2025 15:18:18.3718 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f4e0f4e0-9d68-4bd6-a95b-0cba36dbac2e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: poIkBPFEuLY1ciibR1NiHLjBcYHy0cZXBd1e948d62fr11iDqGFMbtoiu1pRgqznRfRtGpvn6+6B7/932CNSbrOPDZaUa70ps8QYCJwI8H+4v5JE3BBfoQaRjuSgqYIt X-MS-Exchange-Transport-CrossTenantHeadersStamped: BEYP281MB5624 Message-ID-Hash: 5GGGXCBKYV73X27OKRUCJ6ZPLSEB4RBF X-Message-ID-Hash: 5GGGXCBKYV73X27OKRUCJ6ZPLSEB4RBF X-MailFrom: stefan.kober@cyberus-technology.de X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Stefan Kober X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @cyberus-technology.de) X-ZM-MESSAGEID: 1759764253610116600 Content-Type: text/plain; charset="utf-8" On-behalf-of: SAP stefan.kober@sap.com Signed-off-by: Stefan Kober --- src/ch/ch_alias.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/ch/ch_alias.h | 3 +++ 2 files changed, 50 insertions(+) diff --git a/src/ch/ch_alias.c b/src/ch/ch_alias.c index bdf8452a3c..dad297b20c 100644 --- a/src/ch/ch_alias.c +++ b/src/ch/ch_alias.c @@ -18,11 +18,13 @@ =20 #include =20 +#include "virstring.h" #include "virutil.h" =20 #include "ch_alias.h" =20 #define VIR_FROM_THIS VIR_FROM_CH +#define CH_NET_ID_PREFIX "net" =20 int chAssignDeviceDiskAlias(virDomainDiskDef *disk) { @@ -47,6 +49,47 @@ int chAssignDeviceDiskAlias(virDomainDiskDef *disk) return 0; } =20 +/** + * Extract the index number of some device alias + */ +static +int chDomainDeviceAliasIndex(const virDomainDeviceInfo *info, + const char *prefix) +{ + int idx; + + if (!info->alias) + return -1; + if (!STRPREFIX(info->alias, prefix)) + return -1; + + if (virStrToLong_i(info->alias + strlen(prefix), NULL, 10, &idx) < 0) + return -1; + + return idx; +} + +void chAssignDeviceNetAlias(virDomainDef *def, virDomainNetDef *net) +{ + size_t idx =3D 0; + size_t i; + + if (net->info.alias) { + return; + } + + for (i =3D 0; i < def->nnets; i++) { + int thisidx; + + if ((thisidx =3D chDomainDeviceAliasIndex(&def->nets[i]->info, CH_= NET_ID_PREFIX)) < 0) + continue; + if (thisidx >=3D idx) + idx =3D thisidx + 1; + } + + net->info.alias =3D g_strdup_printf("%s%lu", CH_NET_ID_PREFIX, idx); +} + int chAssignDeviceAliases(virDomainDef *def) { size_t i; @@ -56,6 +99,10 @@ int chAssignDeviceAliases(virDomainDef *def) return -1; } =20 + for (i =3D 0; i < def->nnets; i++) { + chAssignDeviceNetAlias(def, def->nets[i]); + } + /* TODO: handle other devices */ =20 return 0; diff --git a/src/ch/ch_alias.h b/src/ch/ch_alias.h index 81e20c27c7..b9a12fac11 100644 --- a/src/ch/ch_alias.h +++ b/src/ch/ch_alias.h @@ -23,5 +23,8 @@ int chAssignDeviceDiskAlias(virDomainDiskDef *disk); =20 +void +chAssignDeviceNetAlias(virDomainDef *def, virDomainNetDef *net); + int chAssignDeviceAliases(virDomainDef *def); --=20 2.51.0