From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id 36B7B1FF0E5 for ; Wed, 15 Jul 2026 10:16:01 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 06C7B2144D; Wed, 15 Jul 2026 10:16:01 +0200 (CEST) From: Lukas Sichert To: pve-devel@lists.proxmox.com Subject: [PATCH manager v3 1/2] ui: fabrics: make IPv4 interface column optional Date: Wed, 15 Jul 2026 10:15:15 +0200 Message-ID: <20260715081519.29721-2-l.sichert@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260715081519.29721-1-l.sichert@proxmox.com> References: <20260715081519.29721-1-l.sichert@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1784103308187 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.175 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_LOW -0.7 Sender listed at https://www.dnswl.org/, low trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: 3ROS4C3NFKA2KDPVYUJ2AOJLZUCUIFQY X-Message-ID-Hash: 3ROS4C3NFKA2KDPVYUJ2AOJLZUCUIFQY X-MailFrom: l.sichert@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Lukas Sichert X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: The base interface panel keeps the IPv4 column in commonColumns, while IPv6 is added conditionally through hasIpv6Support. BGP unnumbered interfaces therefore have to override initComponent() and filter that base column out manually. Move the IPv4 column into the same conditional column-building path as IPv6 and add a matching hasIpv4Support flag. Keep IPv4 support enabled by default so existing panels inherit the previous behavior unless they explicitly opt out. Then disable BGP IPv4 support declaratively by setting that flag to false. Signed-off-by: Lukas Sichert Tested-by: Hannes Laimer Reviewed-by: Hannes Laimer --- www/manager6/sdn/fabrics/InterfacePanel.js | 30 +++++++++++-------- .../sdn/fabrics/bgp/InterfacePanel.js | 11 +------ 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/www/manager6/sdn/fabrics/InterfacePanel.js b/www/manager6/sdn/fabrics/InterfacePanel.js index f07e7859..95424bc0 100644 --- a/www/manager6/sdn/fabrics/InterfacePanel.js +++ b/www/manager6/sdn/fabrics/InterfacePanel.js @@ -6,6 +6,7 @@ Ext.define('PVE.sdn.Fabric.InterfacePanel', { nodeInterfaces: {}, + hasIpv4Support: true, hasIpv6Support: true, selModel: { @@ -59,19 +60,6 @@ Ext.define('PVE.sdn.Fabric.InterfacePanel', { dataIndex: 'type', flex: 1, }, - { - text: gettext('IPv4'), - xtype: 'widgetcolumn', - dataIndex: 'ip', - flex: 1, - widget: { - xtype: 'proxmoxtextfield', - isFormField: false, - bind: { - disabled: '{record.isDisabled}', - }, - }, - }, ], additionalColumns: [], @@ -112,6 +100,22 @@ Ext.define('PVE.sdn.Fabric.InterfacePanel', { let columns = [...me.commonColumns]; + if (me.hasIpv4Support) { + columns.push({ + text: gettext('IPv4'), + xtype: 'widgetcolumn', + dataIndex: 'ip', + flex: 1, + widget: { + xtype: 'proxmoxtextfield', + isFormField: false, + bind: { + disabled: '{record.isDisabled}', + }, + }, + }); + } + if (me.hasIpv6Support) { columns.push({ text: gettext('IPv6'), diff --git a/www/manager6/sdn/fabrics/bgp/InterfacePanel.js b/www/manager6/sdn/fabrics/bgp/InterfacePanel.js index c7ac7627..fd5e6f4b 100644 --- a/www/manager6/sdn/fabrics/bgp/InterfacePanel.js +++ b/www/manager6/sdn/fabrics/bgp/InterfacePanel.js @@ -1,15 +1,6 @@ Ext.define('PVE.sdn.Fabric.Bgp.InterfacePanel', { extend: 'PVE.sdn.Fabric.InterfacePanel', + hasIpv4Support: false, hasIpv6Support: false, - - // BGP unnumbered interfaces have no IP - override commonColumns to - // exclude the IP column that the base class defines. - initComponent: function () { - let me = this; - - me.commonColumns = me.commonColumns.filter((col) => col.dataIndex !== 'ip'); - - me.callParent(); - }, }); -- 2.47.3