* [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes
@ 2026-05-20 15:12 Gabriel Goller
2026-05-20 15:12 ` [PATCH manager] sdn: fabrics: disable prefix editing when nodes exist Gabriel Goller
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Gabriel Goller @ 2026-05-20 15:12 UTC (permalink / raw)
To: pve-devel
Only show the IPv4 or IPv6 address field for a fabric node when the
fabric has the matching prefix configured.
Suggested-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
www/manager6/sdn/FabricsView.js | 13 +++++++++++--
www/manager6/sdn/fabrics/NodeEdit.js | 9 +++++++--
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/www/manager6/sdn/FabricsView.js b/www/manager6/sdn/FabricsView.js
index 4676266d0413..f2b8456a7720 100644
--- a/www/manager6/sdn/FabricsView.js
+++ b/www/manager6/sdn/FabricsView.js
@@ -305,6 +305,11 @@ Ext.define('PVE.sdn.Fabric.View', {
return NODE_PANELS[protocol];
},
+ getFabricPrefix: function (fabric, prefixKey) {
+ let prefix = fabric?.[prefixKey];
+ return prefix === 'deleted' ? undefined : prefix;
+ },
+
addWireGuard: function () {
let me = this;
me.openFabricAddWindow('wireguard');
@@ -370,6 +375,8 @@ Ext.define('PVE.sdn.Fabric.View', {
autoShow: true,
fabricId: fabric.id,
protocol: fabric.protocol,
+ fabricIpPrefix: me.getFabricPrefix(fabric, 'ip_prefix'),
+ fabricIp6Prefix: me.getFabricPrefix(fabric, 'ip6_prefix'),
disallowedNodes,
addAnotherCallback: () => {
let successCallback = () => {
@@ -404,7 +411,7 @@ Ext.define('PVE.sdn.Fabric.View', {
window.on('destroy', () => me.reload());
},
- openNodeEditWindow: function (node) {
+ openNodeEditWindow: function (node, fabric) {
let me = this;
let component = me.getNodeEditPanel(node.protocol);
@@ -414,6 +421,8 @@ Ext.define('PVE.sdn.Fabric.View', {
fabricId: node.fabric_id,
nodeId: node.node_id,
protocol: node.protocol,
+ fabricIpPrefix: me.getFabricPrefix(fabric, 'ip_prefix'),
+ fabricIp6Prefix: me.getFabricPrefix(fabric, 'ip6_prefix'),
});
window.on('destroy', () => me.reload());
@@ -425,7 +434,7 @@ Ext.define('PVE.sdn.Fabric.View', {
if (rec.data.type === 'fabric') {
me.openFabricEditWindow(rec.data);
} else if (rec.data.type === 'node') {
- me.openNodeEditWindow(rec.data);
+ me.openNodeEditWindow(rec.data, rec.parentNode.data);
} else {
console.warn(`unknown type ${rec.data.type}`);
}
diff --git a/www/manager6/sdn/fabrics/NodeEdit.js b/www/manager6/sdn/fabrics/NodeEdit.js
index 2ed5336b3b49..ef4577cb67ba 100644
--- a/www/manager6/sdn/fabrics/NodeEdit.js
+++ b/www/manager6/sdn/fabrics/NodeEdit.js
@@ -14,6 +14,9 @@ Ext.define('PVE.sdn.Fabric.Node.Edit', {
hasIpv4Support: true,
hasIpv6Support: true,
+ fabricIpPrefix: undefined,
+ fabricIp6Prefix: undefined,
+
disallowedNodes: [],
baseUrl: '/cluster/sdn/fabrics/node',
@@ -45,12 +48,13 @@ Ext.define('PVE.sdn.Fabric.Node.Edit', {
me.url = `${me.baseUrl}/${me.fabricId}`;
}
- if (me.hasIpv4Support) {
+ if (me.hasIpv4Support && me.fabricIpPrefix) {
me.items.push({
xtype: 'proxmoxtextfield',
fieldLabel: gettext('IPv4'),
labelWidth: 120,
name: 'ip',
+ vtype: 'IPAddress',
allowBlank: true,
skipEmptyText: true,
cbind: {
@@ -59,12 +63,13 @@ Ext.define('PVE.sdn.Fabric.Node.Edit', {
});
}
- if (me.hasIpv6Support) {
+ if (me.hasIpv6Support && me.fabricIp6Prefix) {
me.items.push({
xtype: 'proxmoxtextfield',
fieldLabel: gettext('IPv6'),
labelWidth: 120,
name: 'ip6',
+ vtype: 'IP6Address',
allowBlank: true,
skipEmptyText: true,
cbind: {
--
2.47.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH manager] sdn: fabrics: disable prefix editing when nodes exist
2026-05-20 15:12 [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes Gabriel Goller
@ 2026-05-20 15:12 ` Gabriel Goller
2026-05-20 15:45 ` Hannes Laimer
2026-05-20 15:12 ` [PATCH manager] sdn: fabrics: require at least one prefix Gabriel Goller
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Gabriel Goller @ 2026-05-20 15:12 UTC (permalink / raw)
To: pve-devel
Do not allow editing the fabric IPv4 or IPv6 prefix while the fabric
still has configured nodes. The API will throw an error, but this
improves the UX.
Suggested-by: Hannes Laimer <h.laimer@proxmox.com>
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
www/manager6/sdn/FabricsView.js | 5 +++++
www/manager6/sdn/fabrics/FabricEdit.js | 4 ++++
2 files changed, 9 insertions(+)
diff --git a/www/manager6/sdn/FabricsView.js b/www/manager6/sdn/FabricsView.js
index f2b8456a7720..88926462df11 100644
--- a/www/manager6/sdn/FabricsView.js
+++ b/www/manager6/sdn/FabricsView.js
@@ -310,6 +310,10 @@ Ext.define('PVE.sdn.Fabric.View', {
return prefix === 'deleted' ? undefined : prefix;
},
+ fabricHasConfiguredNodes: function (fabric) {
+ return (fabric.children ?? []).some((node) => node.state !== 'deleted');
+ },
+
addWireGuard: function () {
let me = this;
me.openFabricAddWindow('wireguard');
@@ -406,6 +410,7 @@ Ext.define('PVE.sdn.Fabric.View', {
let window = Ext.create(component, {
autoShow: true,
fabricId: fabric.id,
+ disableIpPrefixEdit: me.fabricHasConfiguredNodes(fabric),
});
window.on('destroy', () => me.reload());
diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
index 740719b1cc62..ddecbdc83df3 100644
--- a/www/manager6/sdn/fabrics/FabricEdit.js
+++ b/www/manager6/sdn/fabrics/FabricEdit.js
@@ -9,6 +9,8 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
hasIpv4Support: true,
hasIpv6Support: true,
+ disableIpPrefixEdit: false,
+
baseUrl: '/cluster/sdn/fabrics/fabric',
viewModel: {
@@ -60,6 +62,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
fieldLabel: gettext('IPv4 Prefix'),
labelWidth: 120,
name: 'ip_prefix',
+ disabled: me.disableIpPrefixEdit,
allowBlank: me.hasIpv6Support,
vtype: 'IPCIDRAddress',
skipEmptyText: true,
@@ -82,6 +85,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
fieldLabel: gettext('IPv6 Prefix'),
labelWidth: 120,
name: 'ip6_prefix',
+ disabled: me.disableIpPrefixEdit,
allowBlank: true,
vtype: 'IP6CIDRAddress',
skipEmptyText: true,
--
2.47.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH manager] sdn: fabrics: require at least one prefix
2026-05-20 15:12 [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes Gabriel Goller
2026-05-20 15:12 ` [PATCH manager] sdn: fabrics: disable prefix editing when nodes exist Gabriel Goller
@ 2026-05-20 15:12 ` Gabriel Goller
2026-05-20 15:45 ` Hannes Laimer
2026-05-20 15:45 ` [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes Hannes Laimer
2026-05-21 9:24 ` applied: " Thomas Lamprecht
3 siblings, 1 reply; 7+ messages in thread
From: Gabriel Goller @ 2026-05-20 15:12 UTC (permalink / raw)
To: pve-devel
Prevent removing the last remaining fabric prefix by requiring either an
IPv4 prefix or an IPv6 prefix. Again this is enforced by the API, but
improve the UX by validating in the frontend.
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
www/manager6/sdn/fabrics/FabricEdit.js | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
index ddecbdc83df3..e9e0d1fa6286 100644
--- a/www/manager6/sdn/fabrics/FabricEdit.js
+++ b/www/manager6/sdn/fabrics/FabricEdit.js
@@ -67,6 +67,18 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
vtype: 'IPCIDRAddress',
skipEmptyText: true,
deleteEmpty: !me.isCreate,
+ validator: function (value) {
+ let ip6Prefix = this.up('window').down('[name=ip6_prefix]')?.getValue();
+ if (!me.hasIpv6Support || value || ip6Prefix) {
+ return true;
+ }
+ return gettext('Either IPv4 Prefix or IPv6 Prefix is required');
+ },
+ listeners: {
+ change: function (field) {
+ field.up('window').down('[name=ip6_prefix]')?.validate();
+ },
+ },
});
}
@@ -90,10 +102,19 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
vtype: 'IP6CIDRAddress',
skipEmptyText: true,
deleteEmpty: !me.isCreate,
+ validator: function (value) {
+ let ipPrefix = this.up('window').down('[name=ip_prefix]')?.getValue();
+ if (value || ipPrefix) {
+ return true;
+ }
+ return gettext('Either IPv4 Prefix or IPv6 Prefix is required');
+ },
listeners: {
change: function (textbox, value) {
- let vm = textbox.up('window').getViewModel();
+ let win = textbox.up('window');
+ let vm = win.getViewModel();
vm.set('showIpv6ForwardingHint', !!value);
+ win.down('[name=ip_prefix]')?.validate();
},
},
},
--
2.47.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes
2026-05-20 15:12 [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes Gabriel Goller
2026-05-20 15:12 ` [PATCH manager] sdn: fabrics: disable prefix editing when nodes exist Gabriel Goller
2026-05-20 15:12 ` [PATCH manager] sdn: fabrics: require at least one prefix Gabriel Goller
@ 2026-05-20 15:45 ` Hannes Laimer
2026-05-21 9:24 ` applied: " Thomas Lamprecht
3 siblings, 0 replies; 7+ messages in thread
From: Hannes Laimer @ 2026-05-20 15:45 UTC (permalink / raw)
To: Gabriel Goller, pve-devel
Tested-by: Hannes Laimer <h.laimer@proxmox.com>
On 2026-05-20 17:12, Gabriel Goller wrote:
> Only show the IPv4 or IPv6 address field for a fabric node when the
> fabric has the matching prefix configured.
>
> Suggested-by: Dominik Csapak <d.csapak@proxmox.com>
> Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
> ---
> www/manager6/sdn/FabricsView.js | 13 +++++++++++--
> www/manager6/sdn/fabrics/NodeEdit.js | 9 +++++++--
> 2 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/www/manager6/sdn/FabricsView.js b/www/manager6/sdn/FabricsView.js
> index 4676266d0413..f2b8456a7720 100644
> --- a/www/manager6/sdn/FabricsView.js
> +++ b/www/manager6/sdn/FabricsView.js
> @@ -305,6 +305,11 @@ Ext.define('PVE.sdn.Fabric.View', {
> return NODE_PANELS[protocol];
> },
>
> + getFabricPrefix: function (fabric, prefixKey) {
> + let prefix = fabric?.[prefixKey];
> + return prefix === 'deleted' ? undefined : prefix;
> + },
> +
> addWireGuard: function () {
> let me = this;
> me.openFabricAddWindow('wireguard');
> @@ -370,6 +375,8 @@ Ext.define('PVE.sdn.Fabric.View', {
> autoShow: true,
> fabricId: fabric.id,
> protocol: fabric.protocol,
> + fabricIpPrefix: me.getFabricPrefix(fabric, 'ip_prefix'),
> + fabricIp6Prefix: me.getFabricPrefix(fabric, 'ip6_prefix'),
> disallowedNodes,
> addAnotherCallback: () => {
> let successCallback = () => {
> @@ -404,7 +411,7 @@ Ext.define('PVE.sdn.Fabric.View', {
> window.on('destroy', () => me.reload());
> },
>
> - openNodeEditWindow: function (node) {
> + openNodeEditWindow: function (node, fabric) {
> let me = this;
>
> let component = me.getNodeEditPanel(node.protocol);
> @@ -414,6 +421,8 @@ Ext.define('PVE.sdn.Fabric.View', {
> fabricId: node.fabric_id,
> nodeId: node.node_id,
> protocol: node.protocol,
> + fabricIpPrefix: me.getFabricPrefix(fabric, 'ip_prefix'),
> + fabricIp6Prefix: me.getFabricPrefix(fabric, 'ip6_prefix'),
> });
>
> window.on('destroy', () => me.reload());
> @@ -425,7 +434,7 @@ Ext.define('PVE.sdn.Fabric.View', {
> if (rec.data.type === 'fabric') {
> me.openFabricEditWindow(rec.data);
> } else if (rec.data.type === 'node') {
> - me.openNodeEditWindow(rec.data);
> + me.openNodeEditWindow(rec.data, rec.parentNode.data);
> } else {
> console.warn(`unknown type ${rec.data.type}`);
> }
> diff --git a/www/manager6/sdn/fabrics/NodeEdit.js b/www/manager6/sdn/fabrics/NodeEdit.js
> index 2ed5336b3b49..ef4577cb67ba 100644
> --- a/www/manager6/sdn/fabrics/NodeEdit.js
> +++ b/www/manager6/sdn/fabrics/NodeEdit.js
> @@ -14,6 +14,9 @@ Ext.define('PVE.sdn.Fabric.Node.Edit', {
> hasIpv4Support: true,
> hasIpv6Support: true,
>
> + fabricIpPrefix: undefined,
> + fabricIp6Prefix: undefined,
> +
> disallowedNodes: [],
>
> baseUrl: '/cluster/sdn/fabrics/node',
> @@ -45,12 +48,13 @@ Ext.define('PVE.sdn.Fabric.Node.Edit', {
> me.url = `${me.baseUrl}/${me.fabricId}`;
> }
>
> - if (me.hasIpv4Support) {
> + if (me.hasIpv4Support && me.fabricIpPrefix) {
> me.items.push({
> xtype: 'proxmoxtextfield',
> fieldLabel: gettext('IPv4'),
> labelWidth: 120,
> name: 'ip',
> + vtype: 'IPAddress',
> allowBlank: true,
> skipEmptyText: true,
> cbind: {
> @@ -59,12 +63,13 @@ Ext.define('PVE.sdn.Fabric.Node.Edit', {
> });
> }
>
> - if (me.hasIpv6Support) {
> + if (me.hasIpv6Support && me.fabricIp6Prefix) {
> me.items.push({
> xtype: 'proxmoxtextfield',
> fieldLabel: gettext('IPv6'),
> labelWidth: 120,
> name: 'ip6',
> + vtype: 'IP6Address',
> allowBlank: true,
> skipEmptyText: true,
> cbind: {
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH manager] sdn: fabrics: disable prefix editing when nodes exist
2026-05-20 15:12 ` [PATCH manager] sdn: fabrics: disable prefix editing when nodes exist Gabriel Goller
@ 2026-05-20 15:45 ` Hannes Laimer
0 siblings, 0 replies; 7+ messages in thread
From: Hannes Laimer @ 2026-05-20 15:45 UTC (permalink / raw)
To: Gabriel Goller, pve-devel
Tested-by: Hannes Laimer <h.laimer@proxmox.com>
On 2026-05-20 17:12, Gabriel Goller wrote:
> Do not allow editing the fabric IPv4 or IPv6 prefix while the fabric
> still has configured nodes. The API will throw an error, but this
> improves the UX.
>
> Suggested-by: Hannes Laimer <h.laimer@proxmox.com>
> Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
> ---
> www/manager6/sdn/FabricsView.js | 5 +++++
> www/manager6/sdn/fabrics/FabricEdit.js | 4 ++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/www/manager6/sdn/FabricsView.js b/www/manager6/sdn/FabricsView.js
> index f2b8456a7720..88926462df11 100644
> --- a/www/manager6/sdn/FabricsView.js
> +++ b/www/manager6/sdn/FabricsView.js
> @@ -310,6 +310,10 @@ Ext.define('PVE.sdn.Fabric.View', {
> return prefix === 'deleted' ? undefined : prefix;
> },
>
> + fabricHasConfiguredNodes: function (fabric) {
> + return (fabric.children ?? []).some((node) => node.state !== 'deleted');
> + },
> +
> addWireGuard: function () {
> let me = this;
> me.openFabricAddWindow('wireguard');
> @@ -406,6 +410,7 @@ Ext.define('PVE.sdn.Fabric.View', {
> let window = Ext.create(component, {
> autoShow: true,
> fabricId: fabric.id,
> + disableIpPrefixEdit: me.fabricHasConfiguredNodes(fabric),
> });
>
> window.on('destroy', () => me.reload());
> diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
> index 740719b1cc62..ddecbdc83df3 100644
> --- a/www/manager6/sdn/fabrics/FabricEdit.js
> +++ b/www/manager6/sdn/fabrics/FabricEdit.js
> @@ -9,6 +9,8 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> hasIpv4Support: true,
> hasIpv6Support: true,
>
> + disableIpPrefixEdit: false,
> +
> baseUrl: '/cluster/sdn/fabrics/fabric',
>
> viewModel: {
> @@ -60,6 +62,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> fieldLabel: gettext('IPv4 Prefix'),
> labelWidth: 120,
> name: 'ip_prefix',
> + disabled: me.disableIpPrefixEdit,
> allowBlank: me.hasIpv6Support,
> vtype: 'IPCIDRAddress',
> skipEmptyText: true,
> @@ -82,6 +85,7 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> fieldLabel: gettext('IPv6 Prefix'),
> labelWidth: 120,
> name: 'ip6_prefix',
> + disabled: me.disableIpPrefixEdit,
> allowBlank: true,
> vtype: 'IP6CIDRAddress',
> skipEmptyText: true,
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH manager] sdn: fabrics: require at least one prefix
2026-05-20 15:12 ` [PATCH manager] sdn: fabrics: require at least one prefix Gabriel Goller
@ 2026-05-20 15:45 ` Hannes Laimer
0 siblings, 0 replies; 7+ messages in thread
From: Hannes Laimer @ 2026-05-20 15:45 UTC (permalink / raw)
To: Gabriel Goller, pve-devel
Tested-by: Hannes Laimer <h.laimer@proxmox.com>
On 2026-05-20 17:13, Gabriel Goller wrote:
> Prevent removing the last remaining fabric prefix by requiring either an
> IPv4 prefix or an IPv6 prefix. Again this is enforced by the API, but
> improve the UX by validating in the frontend.
>
> Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
> ---
> www/manager6/sdn/fabrics/FabricEdit.js | 23 ++++++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/www/manager6/sdn/fabrics/FabricEdit.js b/www/manager6/sdn/fabrics/FabricEdit.js
> index ddecbdc83df3..e9e0d1fa6286 100644
> --- a/www/manager6/sdn/fabrics/FabricEdit.js
> +++ b/www/manager6/sdn/fabrics/FabricEdit.js
> @@ -67,6 +67,18 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> vtype: 'IPCIDRAddress',
> skipEmptyText: true,
> deleteEmpty: !me.isCreate,
> + validator: function (value) {
> + let ip6Prefix = this.up('window').down('[name=ip6_prefix]')?.getValue();
> + if (!me.hasIpv6Support || value || ip6Prefix) {
> + return true;
> + }
> + return gettext('Either IPv4 Prefix or IPv6 Prefix is required');
> + },
> + listeners: {
> + change: function (field) {
> + field.up('window').down('[name=ip6_prefix]')?.validate();
> + },
> + },
> });
> }
>
> @@ -90,10 +102,19 @@ Ext.define('PVE.sdn.Fabric.Fabric.Edit', {
> vtype: 'IP6CIDRAddress',
> skipEmptyText: true,
> deleteEmpty: !me.isCreate,
> + validator: function (value) {
> + let ipPrefix = this.up('window').down('[name=ip_prefix]')?.getValue();
> + if (value || ipPrefix) {
> + return true;
> + }
> + return gettext('Either IPv4 Prefix or IPv6 Prefix is required');
> + },
> listeners: {
> change: function (textbox, value) {
> - let vm = textbox.up('window').getViewModel();
> + let win = textbox.up('window');
> + let vm = win.getViewModel();
> vm.set('showIpv6ForwardingHint', !!value);
> + win.down('[name=ip_prefix]')?.validate();
> },
> },
> },
^ permalink raw reply [flat|nested] 7+ messages in thread
* applied: [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes
2026-05-20 15:12 [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes Gabriel Goller
` (2 preceding siblings ...)
2026-05-20 15:45 ` [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes Hannes Laimer
@ 2026-05-21 9:24 ` Thomas Lamprecht
3 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2026-05-21 9:24 UTC (permalink / raw)
To: pve-devel, Gabriel Goller
On Wed, 20 May 2026 17:12:22 +0200, Gabriel Goller wrote:
> Only show the IPv4 or IPv6 address field for a fabric node when the
> fabric has the matching prefix configured.
Applied, thanks!
[manager]
[1/1] sdn: fabrics: show node address fields only for configured prefixes
commit: ea79124a3f2b8e8449a5030b906d04db04baa176
[1/1] sdn: fabrics: disable prefix editing when nodes exist
commit: 1054614b52a26bc90da77a5ae8b586b27909b114
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-21 9:25 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-20 15:12 [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes Gabriel Goller
2026-05-20 15:12 ` [PATCH manager] sdn: fabrics: disable prefix editing when nodes exist Gabriel Goller
2026-05-20 15:45 ` Hannes Laimer
2026-05-20 15:12 ` [PATCH manager] sdn: fabrics: require at least one prefix Gabriel Goller
2026-05-20 15:45 ` Hannes Laimer
2026-05-20 15:45 ` [PATCH manager] sdn: fabrics: show node address fields only for configured prefixes Hannes Laimer
2026-05-21 9:24 ` applied: " Thomas Lamprecht
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox